Tomcat的配置优化

版权声明:本文为博主原创文章,版权归博主所有。如转载,请注明出处! https://blog.csdn.net/javandroid/article/details/81032245

Tomcat的配置优化

Tomcat 6/7/8 的优化参数有点不一样,最好按下面的方式看一下官网这个文档是否还保留着这个参数。
启动tomcat,访问该地址,查看文档:
文档:http://127.0.0.1:8080/docs/config
Tomcat 6 文档:https://tomcat.apache.org/tomcat-6.0-doc/config
Tomcat 7 文档:https://tomcat.apache.org/tomcat-7.0-doc/config/
Tomcat 8 文档:https://tomcat.apache.org/tomcat-8.0-doc/config/
下面是一些通用的优化手段。

1.开启连接池

  • 修改前
    #被注释了
    <!--
    <Executor name="tomcatThreadPool" namePrefix="catalina-exec-"
        maxThreads="150" minSpareThreads="4"/>
    -->
  • 修改后
#打开注释。
<Executor executor="tomcatThreadPool" 
        namePrefix="catalina-exec-"
        #将并将线程数调大。
        maxThreads="150" 
        minSpareThreads="25"/>

参数解释:

maxThreads:最大并发数,默认设置 200,一般建议在 500 ~ 800,根据硬件设施和业务来判断
minSpareThreads:Tomcat 初始化时创建的线程数,默认设置 25
prestartminSpareThreads:在 Tomcat 初始化的时候就初始化 minSpareThreads 的参数值,如果不等于 true,minSpareThreads 的值就没啥效果了
maxQueueSize:最大的等待队列数,超过则拒绝请求

2.修改默认的连接参数

  • 修改前
<Connector port="8080" protocol="HTTP/1.1"
           connectionTimeout="20000"
           redirectPort="8443" />
#默认没有开启线程池          
<!-- A "Connector" using the shared thread pool-->
<!--
<Connector executor="tomcatThreadPool"
           port="8080" protocol="HTTP/1.1"
           connectionTimeout="20000"
           redirectPort="8443" />
-->
  • 修改后
<Connector 
    #使用线程池
    executor="tomcatThreadPool"
    port="8080" 
    protocol="org.apache.coyote.http11.Http11Nio2Protocol" 
    connectionTimeout="20000" 
    maxConnections="10000" 
    redirectPort="8443" 
    enableLookups="false" 
    acceptCount="100" 
    maxPostSize="10485760" 
    #开启压缩
    compression="on" 
    disableUploadTimeout="true" 
    compressionMinSize="2048" 
    acceptorThreadCount="2" 
    compressableMimeType="text/html,text/xml,text/plain,text/css,text/javascript,application/javascript" 
    #设置编码
    URIEncoding="utf-8"
/>

3.开启NIO或APR

Tomcat有三种运营模式:bio、nio、apr,不同模式下Tomcat的运行效率差别比较大。

  • BIO:阻塞式IO,Tomcat6及以前版本默认运行模式,性能非常低下,没有经过任何优化处理。
  • NIO:非阻塞式IO,Tomcat7以后的版本默认运行模式,利用Java异步IO技术使Tomcat运行性能有所提升。

  • APR:从操作系统级别来解决异步的IO问题,大幅度的提高性能。

Tomcat6设置NIO模式
直接修改server.xml里的Connector节点,修改protocol为 org.apache.coyote.http11.Http11NioProtocol,启动生效。

<Connector port="8080"  
    #开启NIO模式
    protocol="org.apache.coyote.http11.Http11NioProtocol"  
    connectionTimeout="20000"  
    redirectPort="8443" />

Tomcat7/8设置APR模式

#1.必须要安装apr和native,直接启动就支持apr。
yum install apr-devel openssl-devel

#2.安装native。进入Tomcat的bin目录,解压native源码包
tar -zxvf tomcat-native.tar.gz  
cd tomcat-native-1.1.32-src/jni/native  
./configure--with-apr=/usr/bin/apr-1-config--with-java-home="/opt/soft/jdk1.8.0_60" --with-ssl=yes  

make  
make install 

native 会被安装到/usr/local/apr/lib。我们需要把/usr/local/apr/lib/ libtcnative-1.so.0.1.32指向Tomcat可识别路径。

15-Apr-2016 22:18:54.209 INFO [main] org.apache.catalina.core.AprLifecycleListener.lifecycleEvent   
The APR based Apache Tomcat Native library which allows optimal performance in production environments   
was not found on the java.library.path: /usr/java/packages/lib/amd64:/usr/lib64:/lib64:/lib:/usr/lib 

Tomcat8默认apr是开启的,配置在server.xml

<Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="on" />

是由于操作系统未安装apr或者apr路径未指到Tomcat默认可识别的路径,则apr模式无法启动,自动切换启动nio模式。

cd /usr  
mkdir java  
cd java/  
mkdir packages  
cd packages/  
mkdir lib  
cd lib/  
mkdir amd64  
cd amd64/ 

把/usr/local/apr/lib/ libtcnative-1.so.0.1.32软链接到上面创建的目录。

ln -s  /usr/local/apr/lib/libtcnative-1.so.0.1.32 libtcnative-1.so  
ln -s  /usr/local/apr/lib/libtcnative-1.so.0.1.32 libtcnative-1.so.0

重新启动Tomcat看到启动日志最后三行

4.禁用AJP

如果服务器没有使用 Apache则可以关闭该项。通常我们用的都是nginx,所以可以禁用AJP。

#把下面这一行注释掉,默认 Tomcat 是开启的。
<!-- <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" /> -->

猜你喜欢

转载自blog.csdn.net/javandroid/article/details/81032245