少量用户的 Tomcat 吞吐量限制

标签 tomcat throughput

我们有一个 webapp 服务于我们的一项服务的请求。我们让它在 Tomcat 7 服务器上运行。如下所述,不需要更多详细信息,因为我们使用我们可以创建的最基本的 Servlet 得到了类似的结果。

我们使用 jmeter 运行负载测试,使用不同数量的并发线程向我们的服务请求一分钟。根据结果​​,我们生成了一些图表,其中包含平均响应时间与并发线程的关系,以及每秒请求数与并发线程的关系。

在我们的测试中,大约有 10 个并发线程时,我们发现应用程序管理的吞吐量存在限制。从该线程数开始,平均响应时间增加,每秒请求数稳定。

我们已经对我们的应用程序进行了多项更改测试,甚至删除了所有应用程序逻辑并返回静态响应。并且还针对什么都不做的基本 Servlet 运行相同的测试,我们得到了类似的结果:更好的平均响应时间和吞吐量值,但在测试中达到了大约 10 个并发线程的限制。

我们还使用 Apache Benchmark 运行了类似的测试,以排除测试工具的问题。

测试在 2 个服务器池中运行。当在本地计算机上运行时,它们给出了类似的结果,但在大约 5 个并发线程时达到了吞吐量限制。

这是吞吐量图表。请注意,每行的值并不重要(例如:某些行已删除数据库访问权限,或者甚至是大多数应用程序逻辑,因此它们花费的时间更少)。

Throughput chart

我们想了解的是吞吐量限制从何而来,以及我们可以做些什么来改进它。

谢谢, 豪尔赫

PS:我会添加图片而不只是链接,但看起来我没有足够的声誉 :(

最佳答案

将 jvm 调整到最佳设置后,限制将下降到您正在运行的硬件上。线程需要 cpu 才能运行,添加更多线程只有在其他线程被 IO 之类的东西阻止执行时才有帮助,即使这样容器线程也会增加开销。当您达到该限制时,您将需要添加更多硬件。

关于少量用户的 Tomcat 吞吐量限制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10784560/

相关文章:

java - 通过角色检查在 Tomcat 上集成 Spring Security 和 Waffle

java - 查询的步骤是什么?什么是先看web.xml还是context.xml?

java - 如何将我的 apache 项目设置为默认程序启动

wcf - 为什么当我添加更多计算机时,我的 Azure 托管 WCF 服务无法扩展?

performance - 为什么容器网络吞吐量低

tomcat - Tomcat 是否接受 IP?

windows - 如何在本地的 Tomcat 中运行 Solr 4?

google-app-engine - 符合 Stack Exchange API 要求的 Google App Engine Cloud 基础设施上的限制实现

java - Apache Flink 的吞吐量和延迟

throughput - 即使在高吞吐量的情况下,DynamoDB batch_write 也会受到限制