tomcat可 优化的参数 与 重点性能指标
tomcat作为web服务的 中间件,其性能参数决定了 负载均衡的 系统并发处理能力!
废话少说,直接上干货~
tomcat可优化的地方
tomcat/conf/server.xml中
1、最大线程数:maxThreads 需要根据服务器的硬件情况,进行一个合理的设置;
将maxThreads设置为CPU核心数的2倍或3倍是一个不错的起点。例如,如果服务器有8个CPU核心,可以将maxThreads设置为16或24。
每个线程大约需要512KB到1MB的内存,因此对于16GB的内存,理论上可以支持约16,000个线程(计算方法:16*1024M / 1M)=16384个线程数。
这里跟栈的设置大小有关。
含义:线程数的大小决定了请求/秒 的多少,也决定了连接数的多少。
这里单核 CPU的处理能力决定了 最大线程数的多少?但是每个线程数 需要的栈内存数 可以模拟并发请求时
因此最大线程数的设置 可以利用 总内存数÷栈的M数 计算出理论最大线程数限制。
2、最大堆内存 jvm设置
堆用途:
- 存储对象实例和数组
- 被所有线程共享
非堆内存 (Non-Heap Memory)
- 方法区 (存储类信息、常量池等)
- JVM 内部处理或优化所需的内存
栈用途:
-
存储局部变量和方法调用帧
-
线程私有
catalina.sh linux下设置 catalina.bat windows下设置
-Xmx 最大堆内存 可设置为 系统可用内存的60%。
-Xms 和 -Xmx 设置成相同的值可以减少 JVM 在运行时调整堆大小带来的性能开销。
Xss栈内存 可配置成512K 不超过1M,否则线程数增多时,就内存溢出了! 对内存的占用= 栈内存大小*线程数 > 物理内存 就溢出了!
栈大小 (-Xss): 例如,-Xss256k 表示每个线程的栈大小为 256KB。在系统默认配置上适当增大一点,以防栈溢出。
在不同的配置下,可以利用接口并发请求来 测试下 不同的配置,maxConnections 和 acceptCount 数值。
这时,可以利用阶梯式的 调整来检查 在哪个参数下,让 maxConnections 和 acceptCount 数值 达到最大,
拿这个 -Xmx -XSS的参数配置则可。 因为已经达到了最大值,再调大 -Xmx和 -Xss没有意义了。
3、IO处理模式
Tomcat8以后的版本默认使用NIO模式(非阻塞式IO)。
4、AJP 连接器的核心定位:解决“动静分离”与“高效通信”,当存在其他静态web服务存在时可禁用。
5、动静分离 部署方式,Nginx+Tomcat相结合的部署方案,Nginx负责静态资源访问,Tomcat负责Jsp等动态资源访问处理。
静态资源(如HTML、CSS、JS、图片等)和动态请求(如接口请求、数据库查询等)分别由不同的服务器来处理。
因此在 性能并发时 监控的参数:
1、maxConnections 最大连接数
2、acceptCount 最大排队等待数
单台 tomcat每次能够处理总请求数 = maxConnections +acceptCount 。
当达到最大连接数时,就会进入 队列等待。
这里tomcat的最大请求数/秒 maxConnections 会 影响到 我们 事务中的 TPS的瓶颈。
总结:
- 启用Nginx的Gzip压缩功能,减小网络传输数据量。
- 对Nginx服务器进行负载均衡,以提高并发处理能力。
- 使用CDN加速,将静态资源分发到全球各地的节点,加快访问速度。
- 对Nginx服务器进行安全配置,限制对敏感目录和文件的访问。
- 定期监控和优化服务器,查看性能瓶颈并进行相应调整。

浙公网安备 33010602011771号