tomcat的配置相关参数:
1)ConnectionTimeout: 默认20s,其实就是tomcat的一种保护机制,超过这个时间就认为超时,可以根据实际业务容忍能力调整。
2)maxThreads:默认200,tomcat处理连接的最大线程数,这个值可以调高,但是并不是越大越好,具体得看实测,在高并发场景下,通过调这个值让cpu维持在80%-90%即可。
3)maxConnections:默认1w,指tomcat能同时接收的连接数,超过这个数tomcat会把连接交给操作系统处理,操作系统处理不了就拒绝。通常设置为比预期最大并发数高20%;
除此之外还有一个操作系统级别的backlog参数:
acceptCount:默认100,指是三次握手通过后在操作系统中等待被应用accept的数量,tomcat收不下的就会堆到这里。
nio编程的时候可以在chennal绑定socket的时候通过传参的形式设置此值,
对于linux,可通过cat /proc/sys/net/core/somaxconn查看和修改,实际执行的时候会取2者最小值。
linux和window的小差别:linux在http请求3此握手过程有一个保留队列SYN quene,如果acceptCount放不下的就会堆在这里。但是windows没有这个机制,因此同样配置下linux要比windows能多接受一些链接。
总的来说,服务器同一时间能承受请求连接最大数:connections + acceptCount
不建议调整系统级的参数,作为跨平台应用最好把问题都控制在应用层面,少去动操作系统。
tomcat调优基本可操作性比较小,对程序影响最大的还是应用编码。