不同版本的tomcat的参数可能不太一样,所以优化时最好对应官网文档查看下是否还保留着这个参数。
这里是Tomcat官方配置链接:
如果本地已经启动了tomcat,则可以直接访问 http://127.0.0.1:8080/docs/config 来查看本地tomcat配置文档(前提是未删除webapps下的docs目录)。
下面是一些通用的优化手段。
默认是关闭线程池的。
<!--打开注释,并将线程数调大--> <Executor executor="tomcatThreadPool" namePrefix="catalina-exec-" maxThreads="150" minSpareThreads="25"/>
参数解释:
修改前
<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" />
Tomcat有三种运行模式:bio、nio、apr,不同模式下Tomcat的运行效率差别比较大。
①设置NIO模式(Tomcat6)
直接修改server.xml里的Connector节点,修改protocol为 org.apache.coyote.http11.Http11NioProtocol,启动生效。
<!--开启NIO模式--> <Connector port="8080" protocol="org.apache.coyote.http11.Http11NioProtocol" connectionTimeout="20000" redirectPort="8443" />
②设置APR模式(Tomcat7/8)
使用时将protocol指定为protocol=“org.apache.coyote.http11.Http11AprProtocol”。
此外,需要安装apr和native,下面是安装步骤:
#必须要安装apr和native,直接启动就支持apr。 #1.安装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是开启的,在配置中可以看到。
<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看到启动日志最后三行
如果服务器没有使用 Apache则可以关闭该项。通常我们用的都是nginx,所以可以禁用AJP。
<!--注释掉下面这一行,默认是未注释的--> <!-- <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" /> -->
修改文件:bin/catalina.sh
JAVA_OPTS="-Dfile.encoding=UTF-8 -server -Xms1024m -Xmx1024m -XX:NewSize=512m -XX:MaxNewSize=512m -XX:PermSize=256m -XX:MaxPermSize=256m -XX:NewRatio=2 -XX:MaxTenuringThreshold=50 -XX:+DisableExplicitGC"
参数说明:
原文:https://www.cnblogs.com/rouqinglangzi/p/11152020.html