学习笔记 1.高性能编程 3.2.3 Tomcat参数调优

对于的参数调优主要有下面4个主要的方向
配置项
默认
建议
注意
20s
减少
处理连接的最大线程数
200
增加
不是越大越好
()等待接收的请求数量限制
100
增加
参数min(,/proc/sys/net/core/)
最大连接处理数
nio 1w
apr 8192
不变
【学习笔记 1.高性能编程 3.2.3 Tomcat参数调优】1、测试环境准备 地址:
下载地址:-.0.zip
教程:
测试脚本:测试用例.jmx
2、连接数调整 总共连接数=+
:能接收的请求限制;
:超过能接收的请求数以后 , 堆积在操作系统的数量(和linux 略有不同);
用户请求首先进入队列中 , 开始接受连接,当接受的连接达到最大值以后 , 也就是这些请求正在处理 , 当接受的请求数量化已经达到最大值,就会向操作系统层面堆积进入,在下当和都已经达到最大值,就会不让再进行连接,linux环境下则不同因为linux环境中有一个握手的队列,所以会在SYN queue中堆积一些数据,但是基本上不会进行对操作系统层面上进行调整,主要是对调整 。
2.1什么时候需要调整?如何调整?
小于的时候;需要调大;最好是比预期的最高并发数要大20%;反 正是堆积到的work处理线程池中(堆积占内存);
2.2什么时候需要调整?
想受理更多用户请求 , 却又不想堆积在中,利用操作系统来高效的堆积,可以调整为最高并发数-; 实际上不需要调整,默认100,linux默认128;最好是把连接控制交给应用程序,这 样方便管理 。
启动方式:java--demo-1.1.0.jar--..max-=1-..max-=1--..=1
3、并发处理线程数调整 线程太少,CPU利用率过低,程序的吞吐量变?。?资源浪费,容易堆积 。线程太多,上下文频繁切换 , 性能反而变低 。
3.1线程数调为多少合适?
场景代入:服务器配置2核,不考虑内存问题 。收到请求,java代码执行耗时50ms,等待数 据返回50ms
理想的线程数量=(1+代码阻塞时间/代码执行时间)*cpu数量
实际情况是跑起代码 , 压测环境进行调试 。不断调整线程数,将CPU打到80~90%的利用 率 。java--demo-1.1.0.jar--..max-=500
上面的公式的意思很简单,就是为了将CPU的使用效率达到最高,一个CPU的情况下,一个线程执行50ms后需要睡眠100ms , 在这个线程睡眠的时候 , 可以让别的线程来执行 , 可以让两个线程执行完,两个线程执行完成后,睡眠的线程苏醒 , 继续执行,所以需要3个线程就可以让这个CPU一直处于工作状态 。
4、总结 请求多,CPU占用率高了,如果能接受很慢的响应,就加大 。否则就集群分流 认清现实,优化代码才是王道,配置只能是锦上添花!
下面是的架构层