1、禁用AJP服务
禁用AJP服务后,吞吐量会有一定的提升。
<!-- Define an AJP 1.3 Connector on port 8009 -->
<!-- <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" /> -->
2、设置线程池
通过设置线程池,调整线程池相关的参数进行测试tomcat的性能。
2.1、设置最大线程数和初始值
不一定设置多大性能最高,得根据自己服务器测试得出。
<Executor name="tomcatThreadPool" namePrefix="catalina‐exec‐" maxThreads="1000" minSpareThreads="200"
prestartminSpareThreads="true"/>
2.2、设置最大等待队列数
默认情况下,请求发送到tomcat,如果tomcat正忙,那么该请求会一直等待。这样虽然
可以保证每个请求都能请求到,但是请求时间就会边长。我们也不一定要求请求一定等待,可以设置最大等待队列大小,如果超过就不等待了。这样虽然有些请求是失败的,但是请求时间会虽短。
得根据自己服务器测试得出结论。
<!‐‐最大等待数为100‐‐>
<Executor name="tomcatThreadPool" namePrefix="catalina‐exec‐"
maxThreads="500" minSpareThreads="100"
prestartminSpareThreads="true" maxQueueSize="100"/>
<Connector executor="tomcatThreadPool" port="8080"
protocol="org.apache.coyote.http11.Http11Nio2Protocol"
connectionTimeout="20000"
redirectPort="8443" />
此项设置吞吐量和响应时间可以提升,但是错误率会有所攀升。
3、设置运行模式
推荐修改:
// JDK7
<Connector port="8080" protocol="org.apache.coyote.http11.Http11NioProtocol" connectionTimeout="20000" redirectPort="8443" URIEncoding="GBK"/>
// JDK8
<Connector port="8080" protocol="org.apache.coyote.http11.Http11Nio2Protocol" connectionTimeout="20000" redirectPort="8443" URIEncoding="GBK"/>
平均响应时间有缩短,吞吐量有提升。
JDK8可用的NIO2性能明显强于JDK之前的NIO。