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的瓶颈。

 

总结:

  1. 启用Nginx的Gzip压缩功能,减小网络传输数据量。
  2. 对Nginx服务器进行负载均衡,以提高并发处理能力。
  3. 使用CDN加速,将静态资源分发到全球各地的节点,加快访问速度。
  4. 对Nginx服务器进行安全配置,限制对敏感目录和文件的访问。
  5. 定期监控和优化服务器,查看性能瓶颈并进行相应调整。

 

posted @ 2025-12-03 10:12  BKY007-xzf  阅读(22)  评论(0)    收藏  举报