线上的connector配置
<Connector port="8081" protocol="org.apache.coyote.http11.Http11NioProtocol"
connectionTimeout="20000"
redirectPort="8443"
maxThreads="8000"
minSpareThreads="70"
acceptCount="6000"
disableUploadTimeout="true"
enableLookups="false"
URIEncoding="UTF-8" />
minSpareThreads Tomcat初始化时创建的线程数。
maxThreads 最大线程数
...
其它都是基于默认
URIEncoding:
查看$TOMCAT_HOME/webapps/tomcat-docs/config/http.html这个说明文档,有如下说明:
URIEncoding:This specifies the character encoding used to decode the URI bytes, after %xx decoding the URL.
If not specified, ISO-8859-1 will be used.
--------------------------------------------------------------------------------------
maxThreads到底调整为多少是合适的?
现在线上配置的是8000,我觉的不够合理,4000可以了(2048太小了,步子迈的太大,容易扯到东西)
一个原则:合理的maxThreads依赖于实际压测的效果和科学理论
将压测效果放在科学理论前面-------证明了一切要以事实为依据
科学理论:
1 系统容量 (正常场景,极端场景) 正常场景下,线程数<200, 放大10倍。2048 < 4000
2 资源数,线程数和资源数(数据库连接,http连接,关联系统的),关联系统的容量相匹配,
数据连接池 400
http连接池 1024
当线程达到了4K后,不大可能都处于运行态,可能都是在等数据库连接,可能在等HTTP连接,要么在等应答此时增加线程数意义不大,而且考虑到我们有12台机器,12*4K=48K,线程数已经是相当的多了
压测效果:
压测的业务有自己的业务特征
需要一个完善的集成环境做压测,只是压测单台机器是不够的
空转压测,测算出容量的上限,空转的是最简单的业务
-----------------------------------------