调谐Tomcat连接器

调谐Tomcat连接器,tomcat,Tomcat,我有一个JavaWeb服务,它执行一些资源密集型数据处理。我正在尝试调整Tomcat连接器属性,如maxThreads、maxConnections和acceptCount,以防止服务过载。 我还创建了一个模拟服务生产负载的测试客户端。 在启动客户端后的几分钟内,我看到Tomcat以预期的方式运行。下面是这一时期典型的CPU负载直方图。 然后我看到响应时间增加,在短时间内,拒绝连接的数量达到100%。 令我惊讶的是,CPU负载远未达到100%,而且具有“细线脉冲”的特征 当前连接器设置如下所

我有一个JavaWeb服务,它执行一些资源密集型数据处理。我正在尝试调整Tomcat连接器属性,如
maxThreads
maxConnections
acceptCount
,以防止服务过载。 我还创建了一个模拟服务生产负载的测试客户端。 在启动客户端后的几分钟内,我看到Tomcat以预期的方式运行。下面是这一时期典型的CPU负载直方图。

然后我看到响应时间增加,在短时间内,拒绝连接的数量达到100%。 令我惊讶的是,CPU负载远未达到100%,而且具有“细线脉冲”的特征

当前连接器设置如下所示

<Connector port="80" protocol="HTTP/1.1"
           connectionTimeout="4000" redirectPort="8443"
           minSpareThreads="8" maxThreads="12" maxConnections="24" acceptCount="8" />

有人能为我的案例提出合适的值吗

有人能为我的案例提出合适的值吗

找到“合适”的值并不简单。要理解为什么拒绝的连接达到100%,您需要了解那些
maxConnections=“24”
在做什么


上面的查找非常简单,只需发送
kill-3
并观察
catalina.out
的线程转储输出。可能缺少的资源不是CPU,而是其他资源,例如数据库、执行不好的锁定或其他您甚至没有考虑过的问题。

事实证明,某些特定请求的处理时间非常长(几分钟)。 我发现(多亏了伟大的工具VisualVM),随着线程数量的减少,所有线程在某个时候都会被那些长时间运行的请求占用。因此,尽管有可用的CPU容量,Tomcat拒绝所有新请求。
在对这些长时间运行的请求采取一些预防措施后,服务将以所需的方式工作。

您显示的连接器配置高度依赖于其他因素。什么版本的Tomcat?您是否正在使用
tcnative
?当Tomcat启动时,您可以通过检查
日志/catalina.out
文件来查看。