理解RESTful Web服务的压力测试结果

3
我正在尝试对我的Spring RESTful Web服务进行压力测试。 我在Intel Core 2 Duo笔记本电脑上运行Tomcat服务器,有4 GB RAM。我知道这不是一个真正的服务器机器,但是我只有这个,而且仅用于学习目的。 为了进行测试,我在远程机器上运行JMeter,并通过私人WLAN与中央无线路由器通信。我更喜欢从无线连接进行测试,因为它将从移动客户端访问。使用JMeter,我运行了一组50个线程,每秒启动一个线程,然后在50秒后所有线程都在运行。每个线程重复发送一个HTTP请求到服务器,包含要处理的小JSON对象,并在每次迭代时休眠一段时间,该时间等于100毫秒恒定延迟和带有标准偏差为100毫秒的高斯分布的随机值之和。我使用了一些JMeter插件来绘制图形。 以下是结果: 我搞不明白为什么我的每秒点击次数不能超过100阈值(在图表中,它们乘以10),因为使用此配置应该比此值更高(50个线程至少发送三次将生成150次点击/秒)。我没有从服务器收到任何错误消息,并且所有工作似乎都正常。我甚至尝试了更多的配置,但我无法获得100次点击/秒以上。为什么? [编辑]许多时候我会注意到实际上存在性能下降,没有任何可见原因:客户端没有错误响应消息,只有OK http响应消息,并且在服务器上所有工作都正常,但是当查看报告时: 如您所见,在01:54和02:14之间发生了某些事情:每秒点击次数减少,响应时间增加,好吧,这可能是服务器过载,但是CPU的下降又怎么样呢?这与拥塞假设不兼容。
1个回答

1
我希望提醒您,在组合图中选择了要显示的行非常好。这足以得出一些结论:
请注意,每秒点击数与CPU使用率完全相关。这意味着您拥有“CPU限制”系统,并且最大性能主要受到CPU的限制。这非常重要要记住:服务器资源用于点击次数,而不是活跃用户。您可以完全禁用睡眠计时器,仍然会收到相同的80-90点击/秒。
CPU的最大级别在80%左右,因此我假设您在机器上运行Windows操作系统(Win7?)。我曾经看到在Windows机器上无法实现100%的CPU利用率,它只允许使用最后20%。如果您达到了最大值,则会看到安装的容量限制。它没有足够的CPU资源来服务更多的请求。为了解决这个瓶颈,您应该提供更多的CPU(使用具有更高级别CPU硬件的另一个服务器),或者配置操作系统以让您使用高达100%(我不知道是否适用),或者优化您的系统(代码,操作系统设置)以少花费CPU来服务单个请求。
对于第二个图表,我想可能是通过路由器下载了一些东西,或者JMeter机器上发生了一些事情。“发生了一些事情”意味着正在运行某个任务。这可能是您的朋友只是想做一些“grep error.log”,或者正在运行一些计划任务。要确定原因,您应该查看降级情况下的路由器资源和jmeter机器资源。必须有一个进程吞噬CPU / DISK /网络。

谢谢,你的回答非常有帮助。我没想到响应时间问题可能与路由器上的额外流量有关,可能是由我的室友产生的。PS:我正在使用Mac OS X。 - user1781028

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接