40 | 谈谈Jetty性能调优的思路
李号双
该思维导图由 AI 生成,仅供参考
关于 Tomcat 的性能调优,前面我主要谈了工作经常会遇到的有关 JVM GC、监控、I/O 和线程池以及 CPU 的问题定位和调优,今天我们来看看 Jetty 有哪些调优的思路。
关于 Jetty 的性能调优,官网上给出了一些很好的建议,分为操作系统层面和 Jetty 本身的调优,我们将分别来看一看它们具体是怎么做的,最后再通过一个实战案例来学习一下如何确定 Jetty 的最佳线程数。
操作系统层面调优
对于 Linux 操作系统调优来说,我们需要加大一些默认的限制值,这些参数主要可以在/etc/security/limits.conf中或通过sysctl命令进行配置,其实这些配置对于 Tomcat 来说也是适用的,下面我来详细介绍一下这些参数。
TCP 缓冲区大小
TCP 的发送和接收缓冲区最好加大到 16MB,可以通过下面的命令配置:
TCP 队列大小
net.core.somaxconn控制 TCP 连接队列的大小,默认值为 128,在高并发情况下明显不够用,会出现拒绝连接的错误。但是这个值也不能调得过高,因为过多积压的 TCP 连接会消耗服务端的资源,并且会造成请求处理的延迟,给用户带来不好的体验。因此我建议适当调大,推荐设置为 4096。
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
- 深入了解
- 翻译
- 解释
- 总结
Jetty性能调优的思路主要包括操作系统层面调优和Jetty本身的调优。在操作系统层面,需要调整TCP缓冲区大小、TCP队列大小、端口范围、文件句柄数以及拥塞控制等参数。而对于Jetty本身的调优,则需要设置Acceptor和Thread Pool的数量,并通过有界队列来限制任务队列,以避免在高负载下积压大量待处理的请求。此外,文章还通过一个实验展示了如何确定Jetty的最佳线程数,指出对于CPU密集型应用,将最大线程数设置为CPU核数的1.5倍是最佳的。总的来说,本文通过实例和技术原理详细介绍了Jetty性能调优的思路和方法,为读者提供了实用的调优建议。
仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《深入拆解 Tomcat & Jetty 》,新⼈⾸单¥68
《深入拆解 Tomcat & Jetty 》,新⼈⾸单¥68
立即购买
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
登录 后留言
全部留言(13)
- 最新
- 精选
- 许童童但是我们的实验中测试发现,最大线程数为 6 时最佳,这是不是矛盾了? 不矛盾,老师已经说了,这个案例里面没有IO操作。 有IO操作的时候,用这个公式:(线程IO阻塞时间+线程CPU时间) / 线程CPU时间
作者回复: 正解
2019-08-1317 - -W.LI-1.课后习题不矛盾。老师课上说了实力是纯CPU密集型没有IO阻塞,这种情况下线程数比核数多一点就好。正式环境,要连接各种缓存,数据库,第三方调用都会IO阻塞。IO阻塞越多可开的线程数越多。 老师好!服务器分配的端口号只是服务监听的端口号,然后服务器作为客户端调用别的服务时,会随机占用一个端口号建立TCP连接是么(同样需要fd)?rmi技术无法穿透防火墙,理由是端口号不固定随机生成。rmi技术服务提供方的端口号会变的意思么?不太理解谢谢李老师,课程快结束了不舍
作者回复: 对的,网络通信的客户端会随机选用一个可用的端口
2019-08-1326 - 逆流的鱼系统相关调节和servlet容器强相关?
作者回复: 无关,这个是操作系统层面
2019-08-13 - 门窗小二测试中的最大线程数指的是接入线程类似netty的boss eventloop,50到500处理线程类似work eventloop!猜测是这样?
作者回复: 最大线程数就是jetty的全局线程池所能创建的最大线程数
2019-08-13 - 花花大脸猫不矛盾呀,针对于CPU密集型的计算,一般建议都是略大于当前的cpu核数,如果是IO密集型的计算,就需要根据实际的计算公司来套用了。2022-07-201
- 小白哥哥别用tcp_tw_recycle,用tcp_tw_reuse2022-03-03
- 桂桂hi,老师你好,碰到一个问题解决不了,inetaccess白名单无法获取实际client ip进行拦截,这个咋整,各种配置调了一个星期没解决,烦请提供一些idea, thanks2020-11-09
- maybe课后思考:这里的例子只是cpu消耗,所以稍微大于或等于核心数比较合适。正常情况下会有各种io阻塞等,线程数大概公式可以是:(io时间+cpu时间)/ cpu时间2020-08-18
- lorancechen无io操作时,工作线程设置成和cpu核数相等不是最少的线程上下文切换吗,为何是1.5倍吞吐最高呢?2020-06-18
- 蚂蚁内推+v限制 Jetty 的任务队列非常重要。默认情况下,队列是无限的 Jetty 9.4 好像不是无限队列吧2020-03-28
收起评论