右耳菌-邓小白的Java架构师的修炼之路

Tomcat 参数调优

2022-06-08  本文已影响0人  右耳菌

参数调优

配置项 默认 建议 注意
ConnectionTimeout 20s 减少
maxThreads
处理连接的最大线程数
200 增加 不是越大越好
accept@ount(backlog)
等待接受accept的请求数量限制
100 增加 socket参数,min(accept, /prox/sys/net/core/somaxconn
maxConnections
最大连接处理数
nio 1w
apr 8192
不变

调优

1. 连接数 调整
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负责限流+日志记录


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

上一篇 下一篇

猜你喜欢

热点阅读