项目进行压测,使用5000线程并发调用10分钟,发现返回大量连接超时错误。测试的应用部署在3个tomcat上,初步判断为tomcat配置的连接数不够,进行连接数配置,在server.xml中connector标签中修改:
<Connector port="8800" protocol="HTTP/1.1"
connectionTimeout="30000"
redirectPort="8443" acceptCount="500" maxThreads="1500" maxProcessors="1500" minProcessors="100" enableLookups="false" />
acceptCount:当同时连接的人数达到maxThreads时,还可以接收排队的连接,超过这个连接的则直接返回拒绝连接。
maxThreads:最大并发访问线程数量
maxProcessors:最大连接线程数,即:并发处理的最大请求数,默认值为75
minProcessors:最小空闲连接线程数,用于提高系统处理性能,默认值为10
enableLookups:是否反查域名,取值为:true或false。为了提高处理能力,应设置为false
minSpareThreads="25" 表示即使没有人使用也开这么多空线程等待
maxSpareThreads="75"表示如果最多可以空75个线程,例如某时刻有80人访问,之后没有人访问了,则tomcat不会保留80个空线程,而是关闭5个空的。
服务器为4核16G内存,同时加大tomcat使用内存,在catalina.sh中添加:JAVA_OPTS="-Xms2G -Xmx2G -Xss256K -XX:PermSize=128M"。
接着进行压测,jmeter显示的超时错误明显减少。