Tomcat性能优化
性能优化的三个指标
1.降低响应时间
2.提高系统吞吐量(QPS)
3.提高服务的可用性
Tomcat性能优化中使用的工具
JConsole:一个内置 Java性能分析器
jdk安装目录/bin/jconsole.exe
JMeter:一个Apache组织开发的基于Java的压力测试工具
下载地址:http://jmeter.apache.org/download_jmeter.cgi
性能优化测试原则
指标:正确率、CPU占有率、QPS、JVM
程序分类:I/0密集型(网络,文件读写),CPU密集型(加密/解密算法)
Tomcat中server.xml优化
1.Connector连接器的I/O模型
连接器模式改为NIO模式
NIO模式最大化压榨了CPU,把时间片更好利用起来
NIO适合大量长连接
<Connector port="9090" protocol="org.apache.coyote.http11.Http11NioProtocol"
connectionTimeout="20000"
redirectPort="8443" />
<Connector port="8009" protocol="org.apache.coyote.ajp.AjpNioProtocol" redirectPort="8443" />
2.关闭自动重载
<Context docBase="" reloadable="false"/>
关闭自动重载,默认是true(不同版本中有差异)
自动加载增加运行开销并且很容易内存溢出
3.配置线程池
Executor标签中属性
【namePrefix】线程命名前缀
【maxThreads】最大允许线程数
【minSpareThreads】最少空闲线程,相当于初始化的线程,线程池中的线程
Connector标签中的属性
【executor】对上面Executor标签标签的引用
<Executor name="tomcatThreadPool"
namePrefix="tomcatThreadPool-"
maxThreads="200"
minSpareThreads="10"/>
<Connector executor="tomcatThreadPool"
port="9090" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
SpringBoot中Tomcat优化
Maven中Springboot引入Tomcat
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<scope>provided</scope>
</dependency>
1.设置线程池
server.tomcat.max-threads=1000
2.关闭Accesslog日志
server.tomcat.accesslog=false