zoukankan      html  css  js  c++  java
  • Tomcat优化贼jb全

    监控Tomcat状态

    • 开发Java监控页面

      mkdir /usr/local/tomcat8/webapps/meminfo
      vim /usr/local/tomcat8/webapps/meminfo/meminfo.jsp
      ...
      
    • 使用jps命令

    • Tomcat远程监控功能

      vim /usr/local/tomcat8/bin/catalina.sh
      CATALINA_OPTS="$CATALINA_OPTS
      -Dcom.sun.management.jmxremote
      -Dcom.sun.management.jmxremote.port=12345    #开启端口
      -Dcom.sun.management.jmxremote.authenticate=false  #关闭
      -Dcom.sun.management.jmxremote.ssl=false  #关闭ssl
      -Djava.rmi.server.hostname=192.168.200.10"  #调节自己端口
      
      启动Tomcat,查看12345端口
      

      在Windows上下载jbk环境。启动jconsole.exe软件会出现一个图像化的监控页面

    Tomcat故障排查步骤

    Tomcat安全优化

    • 当Tomcat完成安装后你首先要做的事情如下:
      首次安装完成后立即删除webapps下面的所有代码
      rm -rf /srv/apache-tomcat/webapps/*
      注释或删除 tomcat-users.xml 所有用户权限,看上去如下:

      cat conf/tomcat-users.xml
      <?xml version='1.0' encoding='utf-8'?>
      
      <tomcat-users>
      </tomcat-users>
      
    • 隐藏tomcat版本
      01.首先找到这个jar包,$TOMCAT_HOME/lib/catalina.jar
      02.解压catalina.jar之后按照路径orgapachecatalinautilServerInfo.properties找到文件
      03.打开ServerInfo.properties文件修改如下:把server.number、server.built置空

       server.info=Apache Tomcat
       server.number=
       server.built=
      

      04.重新打成jar包,重启tomcat。

    • 管理端口号

      修改./conf/server.xml

      #修改8080端口=自带的web站点端口
      <Connector port="8080"
                   maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
                   enableLookups="false" redirectPort="8443" acceptCount="100"
                   connectionTimeout="20000" disableUploadTimeout="true">/
      
      #修改8009端口=外带Apache/nginx端口
      <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
      
      #修改8005端口=监听停止端口
      <Server port="8005" shutdown="SHUTDOWN">
      
      
    • 禁用管理端:删除默认安装目录,以及webapps目录下的所有默认项目

    • 降权启动:自己用户和组启动,

    • 修改404等错误页面:./conf/web.xml,也可以重定向

    • 访问日志格式:添加访问日志格式,方便更好的查看

    Tomcat运行模式

    • bio:同步并阻塞:服务器模式实现一个连接一个线程。==最好的,适用于连接数目小且固定的架构,对服务器的资源要求较高,且多并发性一般。

    • nio:同步非阻塞:服务器模式请求一个请求一个线程,即,会将请求注册到多路复用器上,进行轮询启动线程处理。==速度一般,适用于连接数目多且连接比较少(轻操作)的架构,有更好的并发性。默认,也常用

    • aio(nio2):异步非阻塞:一个有效的请求一个线程,客户端的io请求都是由os请求完成后在通知服务器启动线程处理。==速度最快,最快的,性能最好

    • 优化nio

      vim /usr/local/tomcat8/conf/server.xml
      <Connector port="8080" protocol="HTTP/1.1" #将protocol修改为org.apache...进行优化
                   connectionTimeout="20000"
                   redirectPort="8443" />
      
    • 修改模式aip

      rpm -e apr --nodeps  #确认是否有
      yum -y install apr apr-devel  #下载
      cd /usr/local/tomcat8/bin/  
      cp tomcat-native.tar.gz /root/  
      tar xf tomcat-native.tar.gz 
      cd tomcat-native-1.2.12-src/
      cd native/
      ./configure --with-apr=/usr/bin/apr-1-config --with-java-home=/usr/local/java && make && make install
      vim /usr/local/tomcat8/bin/catalina.sh  #修改配置文件,设置变量
      CATALINA_OPTS="-Djava.library.path=/usr/local/apr/lib"
      vim /etc/profile  #设置环境变量
      export CATALINA_OPTS="-Djava.library.path=/usr/local/apr/lib
      source /etc/profile  #重新识别
      cat /usr/local/tomcat8/logs/catalina.out  #查看日志
      26-Sep-2021 19:17:31.460 INFO [main] org.apache.coyote.AbstractProtocol.start Starting ProtocolHandler ["ajp-nio-8009"]
      
      vim /usr/local/java/jre/lib/security/java.security  #关闭8005端口
      securerandom.source=file:/dev/urandom
      

    Tomcat线程池

    在Tomcat中每一个请求都是一个线程,所以可以使用线程池(连接器),来提高性能

    • 线程池:多线程处理形式,将任务添加成队列,创建线程自动于后台启动。

    • 开启并使用

  • 相关阅读:
    KMP的next
    关于codeblocks左边文件栏不见的问题
    数据结构第二章内容
    设置notepad++ 的 tab 设为4个空格和设置为中文语言
    字面量
    ..没什么
    今天做的HTML练习
    DAY 145 django的聚合函数和aggregate、annotate方法使用
    DAY 144 Math.round()/Math.ceil()/Math.floor()差异
    DAY 143 DRF-Django rest framework
  • 原文地址:https://www.cnblogs.com/wml3030/p/15342068.html
Copyright © 2011-2022 走看看