如何减少 Tomcat 响应时间(或增加吞吐量)?

如何减少 Tomcat 响应时间(或增加吞吐量)?

我在 2 台 Azure 虚拟机(8 核和 28 GB RAM)中运行 Tomcat 8 和 MySQL 5.6。我的 Web 应用程序提供了一个 REST API,用于将多个数据字段插入 DB。该应用程序使用通用 dbcp 连接池与 DB 通信。

我使用 httpclient 向应用程序生成请求。每个 httpclient 每秒创建 1 个请求。

对于1个客户端,响应时间约为170ms。

对于 500 个客户端,平均响应时间增加到近 800 毫秒。吞吐量约为 370 TPS。

对于 1000 个客户端,平均响应时间增加到近 1200 毫秒。吞吐量仍然为 370 TPS。

在测试期间,两台服务器的 CPU 和 RAM 利用率均低于 40%,我认为这是低效的。HTTP 错误率非常低。

我的 Tomcat 配置(使用 NIO 协议)

<connector connectiontimeout="20000"
           maxThreads="600"
           port="8080"
           protocol="org.apache.coyote.http11.Http11NioProtocol"
           redirectport="8443" />

当我增加或减少时maxThreads,响应时间会变长。

如何让 Tomcat 更快地处理请求?根据服务器规格,我预计 Tomcat 对 500/1000 个并发客户端的平均响应时间低于 500ms/1000ms。

相关内容