关于 Tomcat 的性能调优,前面我主要谈了工作经常会遇到的有关 JVM GC、监控、I/O 和线程池以及 CPU 的问题定位和调优,今天我们来看看 Jetty 有哪些调优的思路。
关于 Jetty 的性能调优,官网上给出了一些很好的建议,分为操作系统层面和 Jetty 本身的调优,我们将分别来看一看它们具体是怎么做的,最后再通过一个实战案例来学习一下如何确定 Jetty 的最佳线程数。
操作系统层面调优
对于 Linux 操作系统调优来说,我们需要加大一些默认的限制值,这些参数主要可以在/etc/security/limits.conf中或通过sysctl命令进行配置,其实这些配置对于 Tomcat 来说也是适用的,下面我来详细介绍一下这些参数。
TCP 缓冲区大小
TCP 的发送和接收缓冲区最好加大到 16MB,可以通过下面的命令配置:
sysctl -w net.core.rmem_max = 16777216
sysctl -w net.core.wmem_max = 16777216
sysctl -w net.ipv4.tcp_rmem =“4096 87380 16777216”
sysctl -w net.ipv4.tcp_wmem =“4096 16384 16777216”
TCP 队列大小
net.core.somaxconn控制 TCP 连接队列的大小,默认值为 128,在高并发情况下明显不够用,会出现拒绝连接的错误。但是这个值也不能调得过高,因为过多积压的 TCP 连接会消耗服务端的资源,并且会造成请求处理的延迟,给用户带来不好的体验。因此我建议适当调大,推荐设置为 4096。