首页 >> 大全

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

2024-01-02 大全 18 作者:考证青年

对于的参数调优主要有下面4个主要的方向

配置项

默认

建议

注意

20s

减少

处理连接的最大线程

200

增加

不是越大越好

()等待接收的请求数量限制

100

增加

参数min(,/proc/sys/net/core/)

最大连接处理数

nio 1w

apr 8192

不变

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占用率高了,如果能接受很慢的响应,就加大。否则就集群分流 认清现实,优化代码才是王道,配置只能是锦上添花!

下面是的架构层

关于我们

最火推荐

小编推荐

联系我们


版权声明:本站内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 88@qq.com 举报,一经查实,本站将立刻删除。备案号:桂ICP备2021009421号
Powered By Z-BlogPHP.
复制成功
微信号:
我知道了