Tomcat 参数调优

作者: 右耳菌 | 来源:发表于2022-06-08 17:59 被阅读0次

参数调优

配置项 默认 建议 注意
ConnectionTimeout 20s 减少
maxThreads
处理连接的最大线程数
200 增加 不是越大越好
accept@ount(backlog)
等待接受accept的请求数量限制
100 增加 socket参数,min(accept, /prox/sys/net/core/somaxconn
maxConnections
最大连接处理数
nio 1w
apr 8192
不变
  • 不能靠经验猜测,需要通过不断调试,找出适合应用程序的合理配置

调优

1. 连接数 调整
  • 总共连接数 = acceptCount+ connections
    connections: Tomcat能接收的请求限制;
    acceptCount: 超过Tomcat能接收的请求数以后,堆积在操作系统的数量(windows 和 linux 略有不同);
1.1 什么时候需要调整connections?如何调整?

connections 小于 maxThread的时候;需要调大;最好是比预期的最高并发数要大20%;反 正是堆积到tomcat的work处理线程池中(堆积占内存);

1.2 什么时候需要调整acceptCount?

想受理更多用户请求,却又不想堆积在tomcat中,利用操作系统来高效的堆积,可以调整为 最高并发数 ­ connections; (如果不改操作系统的配置 /prox/sys/net/core/somaxcnn,则可能不会生效)

实际上不需要调整,tomcat默认100,linux默认128;最好是把连接控制交给应用程序,这 样方便管理。

启动方式: java -jar web-demo-1.1.0.jar --server.tomcat.max-connections=1 --server.tomcat.max-thread=1 --server.tomcat.acceptCount=1

2、 并发处理线程数 调整

线程太少,CPU利用率过低,程序的吞吐量变小,资源浪费,容易堆积。 线程太多,上下文频繁切换,性能反而变低。

2.1 线程数调为多少合适?

场景代入:服务器配置2核,不考虑内存问题。收到请求,java代码执行耗时50ms,等待数 据返回50ms

理想的线程数量= (1 + 代码阻塞时间/代码执行时间) * cpu数量

实际情况是跑起代码,压测环境进行调试。不断调整线程数,将CPU打到80~90%的利用 率。

java -jar web-demo-1.1.0.jar --server.tomcat.max-threads=500

3、 总结

请求多,CPU占用率高了,如果能接受很慢的响应,就加大。 否则就集群分流
本质来说,优化代码才是王道,配置只能锦上添花而已!


附:整体架构图

整体架构

如有需要:每台机器可以是nginx+tomcat,Nginx负责限流+日志记录


如果觉得有收获就点个赞吧,更多知识,请点击关注查看我的主页信息哦~

相关文章

网友评论

    本文标题:Tomcat 参数调优

    本文链接:https://www.haomeiwen.com/subject/aasumrtx.html