1、禁用AJP连接
在服务状态页面中可以看到,默认状态下会启用AJP服务,并且占用8009端口。
我们一般是使用Nginx + Tomcat的架构,用不着AJP协议,所以把AJP连接器禁用。
修改conf下的server.xml文件,将AJP服务禁用掉即可。
<!-- <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" /> -->
2、配置并发线程数(线程池)
在tomcat中每一个用户请求都是一个线程,所以可以使用线程池提高性能。
修改server.xml
<!‐‐将注释打开‐‐>
<Executor name="tomcatThreadPool" namePrefix="catalina‐exec‐" maxThreads="500" minSpareThreads="50" prestartminSpareThreads="true" maxQueueSize="100"/>
<!‐‐参数说明:
maxThreads:最大并发数,默认设置 200,一般建议在 500 ~ 1000,根据硬件设施和业务来判断
minSpareThreads:Tomcat 初始化时创建的线程数,默认设置 25
prestartminSpareThreads: 在 Tomcat 初始化的时候就初始化 minSpareThreads 的参数值,如果不等于 true,minSpareThreads 的值就没啥效果了
maxQueueSize,最大的等待队列数,超过则拒绝请求
‐‐>
<!‐‐在Connector中设置executor属性指向上面的执行器‐‐>
<Connector executor="tomcatThreadPool" port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" />
保存退出,重新启动,查看效果。
3、修改默认运行模式
tomcat的运行模式有3种:
bio
默认的模式,性能非常低下,没有经过任何优化处理和支持。
nio
nio(new I/O),是Java SE1.4及后续版本提供的一种新的I/O操作方式(即java.nio包及其子包)。Java.nio是一个基于缓冲区、并能提供非阻塞I/O操作的Java API,因此,nio也被看成是non-blocking I/O的缩写。它拥有比传统I/O操作(bio)更好的并发运行性能。
apr
安装起来最困难,但是从操作系统级别来解决异步的IO问题,大幅度的提高性能。
推荐使用nio,不过,在tomcat 8中有最新的nio2,速度更快,建议使用nio2.
设置nio2:,修改server.xml,将原来8080端口的Connector修改为:
<Connector executor="tomcatThreadPool" port="8080" protocol="org.apache.coyote.http11.Http11Nio2Protocol" connectionTimeout="20000"redirectPort="8443" />
4、内存优化
JVM在启动的时候会自动设置Heap size的值,
其初始空间(即-Xms)是物理内存的1/64,最大空间(-Xmx)是物理内存的1/4。
windows环境下修改
“%TOMCAT_HOME%\bin\catalina.bat”文件,在文件开头增加如下设置:
set JAVA_OPTS=-Dfile.encoding=UTF-8 -server -Xms1024m -Xmx2048m -XX:NewSize=512m -XX:MaxNewSize=1024m -XX:PermSize=256m -XX:MaxPermSize=256m -XX:MaxTenuringThreshold=10 -XX:NewRatio=2 -XX:+DisableExplicitGC
Linux环境下修改
“%TOMCAT_HOME%\bin\catalina.sh”文件,在文件开头增加如下设置:
JAVA_OPTS=-Xms2048m -Xmx2048m
5、启用压缩功能
Tomcat启用GZIP压缩,提升web性能
修改%TOMCAT_HOME%/conf/server.xml,修订节点如下:
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443"
compression="on"
compressionMinSize="2048"
noCompressionUserAgents="gozilla,traviata"
compressableMimeType="text/css" />