0

我们目前正在对我们的应用程序进行负载测试,这是一个 java rest services webapp。乍一看性能很差,但我们没有可比性。

环境: - Amazon micro EC2 实例上的 ubuntu 12.04 服务器 - tomcat 7,maxThreads=500,Xmx=450m - java 6,默认安装。

webapp / service: 一个简单的 webapp,带有名为“getVersion”的服务。它返回一个字符串“1”——没有处理(数据库、文件等)——只返回“1”。

测试: 我们使用 multimechanize 对其进行负载测试:100 个并发用户 60 秒。我们每秒有 76 个请求。

结果: 在 0,X 和 5 秒之间做出响应。大约每 10 个请求出现 5 秒。

我们认为 Tomcat 可以轻松处理这么多并发请求。这是正常的吗?除了内存 maxThreads 还有什么可以调整的吗?

4

3 回答 3

2

结果:在 0,X 和 5 秒之间做出响应。大约每 10 个请求出现 5 秒。

基于以上,我将附加一个分析器(例如 jvisualvm)并观察 GC 周期,尝试设置并行 GC,或者只是增加堆大小并查看它是否有影响,450m 应该足够了,但是每个请求的膨胀并且有许多用户可能会导致频繁的 GC 循环,只是一个猜测,但值得一试

于 2012-09-17T15:47:04.553 回答
0

我会先在您的本地笔记本电脑上尝试相同的负载测试,以排除微型实例的问题(如果它是一个死的简单应用程序,如您所说,那应该不难)。

然后运行 ​​jvisualvm 并进行一些概要分析也很容易。偶尔非常缓慢的异常值闻起来像 GC 问题。

(如果有帮助的话,这些数字听起来很可怕。我希望像这样的虚拟应用程序能够处理的远不止这些)。

于 2013-02-24T21:02:49.723 回答
0

您的问题可能是由于微实例方法:

它们最多有 2 个 ECU,但它们不保持这种处理能力。如果您滥用您的 cpu 份额,您的实例会在一段时间内得到较少的处理。

于 2013-06-10T03:59:27.820 回答