zoukankan      html  css  js  c++  java
  • tomcat性能优化

    tomcat默认参数是为开发环境制定,内存和线程的配置默认都很低,容易成为性能瓶颈。

    1、内存优化

     修改堆内存,linux修改TOMCAT_HOME/bin/catalina.sh,在前面加入

    JAVA_OPTS="-XX:PermSize=64M -XX:MaxPermSize=128m -Xms512m -Xmx1024m -Duser.timezone=Asia/Shanghai"

    windows修改TOMCAT_HOME/bin/catalina.bat,在前面加入
    set JAVA_OPTS=-XX:PermSize=64M -XX:MaxPermSize=128m -Xms512m -Xmx1024m

    2、线程优化

     A、直接修改/conf/server.xml中的Connector配置

    <Connector port="80" protocol="HTTP/1.1" maxThreads="600" minSpareThreads="100" maxSpareThreads="500" acceptCount="700"
    connectionTimeout="20000" redirectPort="8443" />

    maxThreads="600"             // 最大线程数

    minSpareThreads="100"     // 初始化时创建的线程数

    maxSpareThreads="500"    // 一旦创建的线程超过这个值,Tomcat就会关闭不再需要的socket线程。

    acceptCount="700"            // 指定当所有可以使用的处理请求的线程数都被使用时,可以放到处理队列中的请求数,超过这个数的请求将不予处理

    B、还可以使用线程池

    <Executor name="tomcatThreadPool" 
            namePrefix="tomcatThreadPool-" 
            maxThreads="1000" 
            maxIdleTime="300000"
            minSpareThreads="200"/>

    name:共享线程池的名字。这是Connector为了共享线程池要引用的名字,该名字必须唯一。默认值:None;

    namePrefix:在JVM上,每个运行线程都可以有一个name 字符串。这一属性为线程池中每个线程的name字符串设置了一个前缀,Tomcat将把线程号追加到这一前缀的后面。默认值:tomcat-exec-;

    maxThreads:该线程池可以容纳的最大线程数。默认值:200;

    maxIdleTime:在Tomcat关闭一个空闲线程之前,允许空闲线程持续的时间(以毫秒为单位)。只有当前活跃的线程数大于minSpareThread的值,才会关闭空闲线程。默认值:60000(一分钟)。

    minSpareThreads:Tomcat应该始终打开的最小不活跃线程数。默认值:25。

    <Connector executor="tomcatThreadPool"
               port="8080" protocol="HTTP/1.1"
                   connectionTimeout="20000"
                   redirectPort="8443" 
               minProcessors="5"
               maxProcessors="75"
               acceptCount="1000"/>

    executor:表示使用该参数值对应的线程池; 

    minProcessors:服务器启动时创建的处理请求的线程数;

    maxProcessors:最大可以创建的处理请求的线程数;

    acceptCount:指定当所有可以使用的处理请求的线程数都被使用时,可以放到处理队列中的请求数,超过这个数的请求将不予处理。

    3、IO优化

    直接修改/conf/server.xml中的Connector配置,使用 protocol="org.apache.coyote.http11.Http11NioProtocol"

    默认是protocol="HTTP/1.1",HTTP/1.1的性能是很稳定,但是也是最差的,而这种方式就是Tomcat的默认配置。

    4、借助APR插件提高性能

    Tomcat可以使用APR来提供超强的可伸缩性和性能,更好地集成本地服务器技术.

    (1)安装APR tomcat-native
        apr-1.3.8.tar.gz   安装在/usr/local/apr
        #tar zxvf apr-1.3.8.tar.gz
        #cd apr-1.3.8
        #./configure;make;make install
        
        apr-util-1.3.9.tar.gz  安装在/usr/local/apr/lib
        #tar zxvf apr-util-1.3.9.tar.gz
        #cd apr-util-1.3.9  
        #./configure --with-apr=/usr/local/apr ----with-java-home=JDK;make;make install
        
        #cd apache-tomcat-6.0.20/bin  
        #tar zxvf tomcat-native.tar.gz  
        #cd tomcat-native/jni/native  
        #./configure --with-apr=/usr/local/apr;make;make install
        
      (2)设置 Tomcat 整合 APR
        修改 tomcat 的启动 shell (startup.sh),在该文件中加入启动参数:
          CATALINA_OPTS="$CATALINA_OPTS -Djava.library.path=/usr/local/apr/lib" 。
     
      (3)判断安装成功:
        如果看到下面的启动日志,表示成功。
          2007-4-26 15:34:32 org.apache.coyote.http11.Http11AprProtocol init
  • 相关阅读:
    k8s系列---service
    算法
    golang-练习ATM --面向对象实现
    golang-练习ATM
    k8s系列---pod介绍
    12.20 一组v-if/v-else-if/v-else 的元素类型相同,应该使用 key
    12.20 await 操作符的学习(await后跟非promsie、promsie(成功/失败)的几种情况测试)
    12.20 async关键字的学习
    12.20 falsy变量
    12.19 js中递归优化(递归爆栈)
  • 原文地址:https://www.cnblogs.com/ypf1989/p/tomcat.html
Copyright © 2011-2022 走看看