0

我们有一个 webapp 服务于我们的一项服务的请求。我们让它在 Tomcat 7 服务器上运行。如下所述,不需要更多细节,因为我们可以创建的最基本的 Servlet 具有相似的结果。

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

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

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

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

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

这是吞吐量图表。请注意,每一行的值并不重要(例如:一些删除了数据库访问,甚至大多数应用程序逻辑都需要更少的时间)。

吞吐量图表

我们想要了解的是吞吐量限制来自哪里以及我们可以做些什么来改进它。

谢谢,豪尔赫

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

4

2 回答 2

1

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

于 2012-05-28T12:32:18.570 回答
0

tomcat 性能问题的主要原因之一是默认 jvm 设置,使用 -Xmx 参数增加分配给运行 tomcat 的 JVM 的内存量。

-Xmx512m 将允许最大 512MB 分配给堆。

此外,在进行更改之前,请从 tomcat 默认页面 > 状态检查分配给 tomcat 的内存

并在增加 jvm 堆大小后检查状态。

还可以使用 -XX:PermSize 和 -XX:MaxPermSize 增加 perm gen 空间。

有关更多信息,请查看此页面

于 2012-05-28T12:25:27.677 回答