美文网首页
Tomcat使用

Tomcat使用

作者: 天边010 | 来源:发表于2017-02-28 17:05 被阅读0次

    常用命令

    显示控制台日志
    进入tomcat/logs/文件夹下 
    tail -f catalina.out
    

    安装

    基本配置

    优化

    Tomcat内存优化

    在启动脚本 catalina.sh/catalina.bat 中设置 java_OPTS 参数完成内存优化的;

    JAVA_OPTS="-Xms1024m -Xmx2048m -XX:PermSize=256M -XX:MaxNewSize=256m -XX:MaxPermSize=256m"
    
    服务器内存在2G以上,这里没有考虑多个节点的问题;
    参数说明:
    -Xms [Java]虚拟机初始化时的最小内存;
    -Xmx java虚拟机可使用的最大内存;
    -XX: PermSize 内存永久保留区域;
    -XX:MaxPermSize 内存最大永久保留区域 
    
    并发数优化

    修改conf目录下的server.xml文件;

    默认:
       <Connector 
          port="8080" 
          protocol="HTTP/1.1" 
          connectionTimeout="20000" 
          redirectPort="8443" 
      />
    
    修改为:
    
      <Connector port="9027"
      protocol="HTTP/1.1"
      maxHttpHeaderSize="8192"
      maxThreads="1000"
      minSpareThreads="100"
      maxSpareThreads="1000"
      minProcessors="100"
      maxProcessors="1000"
      enableLookups="false"
      compression="on"
      compressionMinSize="2048"
      compressableMimeType="text/html,text/xml,text/javascript,text/css,text/plain"
      connectionTimeout="20000"
      URIEncoding="utf-8"
      acceptCount="1000"
      redirectPort="8443"
      disableUploadTimeout="true"/>
    
    参数说明:
      maxThreads 客户请求最大线程数 
      minSpareThreads Tomcat初始化时创建的 socket 线程数 
      maxSpareThreads Tomcat连接器的最大空闲 socket 线程数 
      enableLookups 若设为true, 则支持域名解析,可把 ip 地址解析为主机名 
      redirectPort 在需要基于安全通道的场合,把客户请求转发到基于SSL 的 redirectPort 端口 
      acceptAccount 监听端口队列最大数,满了之后客户请求会被拒绝(不能小于maxSpareThreads ) 
      connectionTimeout 连接超时 
      minProcessors 服务器创建时的最小处理线程数 
      maxProcessors 服务器同时最大处理线程数 
      URIEncoding URL统一编码
           minProcessors:最小空闲连接线程数,用于提高系统处理性能,默认值为 10
           maxProcessors:最大连接线程数,即:并发处理的最大请求数,默认值为 75
           acceptCount:允许的最大连接数,应大于等于 maxProcessors ,默认值为 100
           enableLookups:是否反查域名,取值为: true 或 false 。为了提高处理能力,应设置为 false
           connectionTimeout:网络连接超时,单位:毫秒。设置为 0 表示永不超时,这样设置有隐患的。通常可设置为 30000 毫秒。
    其中和最大连接数相关的参数为maxProcessors 和 acceptCount 。如果要加大并发连接数,应同时加大这两个参数。
           web server允许的最大连接数还受制于操作系统的内核参数设置,通常 Windows 是 2000 个左右, Linux 是 1000 个左右。 
           connectionTimeout   连接超时
    

    性能监控

    查看tomcat已经使用的线程数
    ps aux |grep tomcat    //先 查看tomcat的PID
    ps -T -p  <PID>           //根据pid查看tomcat下的线程数
    

    日常维护

    强制停止tomcat运行,在./shutdown.sh不好用的情况下
    ps -ef |grep tomcat   //看是否已经有tomcat在运行了
    kill -9 pid           //如果有,用kill;pid为相应的进程号
    
    例如 pe -ef |grep tomcat 输出如下
    sun 5144 1 0 10:21 pts/1 00:00:06 /java/jdk/bin/java -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djava.endorsed.dirs=/java/tomcat/common/endorsed -classpath :/java/tomcat/bin/bootstrap.jar:/java/tomcat/bin/commons-logging-api.jar -Dcatalina.base=/java/tomcat -Dcatalina.home=/java/tomcat -Djava.io.tmpdir=/java/tomcat/temp org.apache.catalina.startup.Bootstrap start
    
    则 5144 就为进程号 pid = 5144
    kill -9 5144 就可以彻底杀死tomcat
    
    解决tomcat占用cpu高的问题
    1.jps 获取Java进程的PID。
    2.top -H -p PID 查看对应进程的哪个线程占用CPU过高。
    2.1 使用 ps -mp pid -o THREAD,tid,time 命令查看该进程的线程情况,发现该进程的多个线程占用率很高。
    3.jstack pid >> java.txt 导出CPU占用高进程的线程栈。
    使用jstack命令查看进程的堆栈情况
    4.echo “obase=16; PID” | bc 将线程的PID转换为16进制。
    5.在第二步导出的Java.txt中查找转换成为16进制的线程PID。找到对应的线程栈。
    6.分析负载高的线程栈都是什么业务操作。优化程序并处理问题。
    

    相关文章

      网友评论

          本文标题:Tomcat使用

          本文链接:https://www.haomeiwen.com/subject/htwpwttx.html