2013-03-05 90 views
3

我正在尝试对我的Spring RESTful Web服务进行压力测试。了解REST风格的Web服务压力测试结果

我在Intel Core 2 Duo笔记本电脑上运行我的Tomcat服务器,4 GB的RAM。我知道这不是一台真正的服务器机器,但我只有这一点,它仅用于研究目的。

为了测试,我在远程计算机上运行JMeter,并通过带中央无线路由器的专用WLAN进行通信。我更愿意从无线连接进行测试,因为它可以从移动客户端访问。使用JMeter,我运行一组50个线程,每秒启动一个线程,然后在50秒后所有线程都在运行。每个线程反复向服务器发送一个HTTP请求,包含一个要处理的小JSON对象,并且在每次迭代中休眠一段时间,等于100毫秒的常量延迟和具有标准偏差的高斯分布的随机值的总和100毫秒。我使用一些JMeter插件来绘制图形。

下面是结果: enter image description here

我不能找出为什么每秒MI命中不与该结构中它应通过100的阈值(在图中它们被每10相乘),怎么一回事,因为已经高于这个值(50次线程发送至少三次会产生150次命中/秒)。我没有收到来自服务器的任何错误消息,并且都似乎运作良好。我试过的配置越来越多,但我无法获得超过100次/秒的命中。 为什么?

很多时候我注意到从某种程度上来说性能显着下降,没有任何可见的原因:客户端上没有错误响应消息,只有ok响应消息,以及所有服务器似乎都能正常工作,但是看在报告:

enter image description here

正如你可以看到,一些1点54分和2点14分之间发生的情况:每秒点击率下降和响应时间的增加,还好它可能是服务器过载,但对于CPU在减少?这与拥塞假设不兼容。

回答

1

我想注意到你已经很好地选择了在复合图上显示哪些行。这足以得出一些结论:

  1. 请注意,每秒命中数与CPU使用率完全相关。这意味着你有“CPU绑定”系统,最大性能主要受CPU限制。这点非常重要:服务器资源由命中,非活动用户使用。你可能会禁用你的睡眠计时器,仍然会收到相同的80-90 Hits/s。
  2. CPU的最高级别是80%,所以我假设你在你的机器上运行Windows操作系统(Win7?)。我曾经看到,在Windows机器上实现100%的CPU利用率是不可能的,但它不允许花费最后的20%。如果达到最大值,那么你会看到你的安装的容量限制。它只是没有足够的CPU资源来提供更多的请求。为了解决这个瓶颈问题,您应该提供更多的CPU(使用具有更高级CPU硬件的另一台服务器),或者配置操作系统让您使用最多100%(我不知道它是否适用),或优化系统(代码,OS设置)花费更少的CPU来处理单个请求。
  3. 对于第二张图,我猜想通过路由器下载了一些东西,或者在JMeter机器上发生了一些事情。 “发生某事”意味着某些任务正在运行。这可能是你想要做一些“grep error.log”的朋友,或者某个计划任务正在运行。为了将其降低,应该在降级情况下查看路由器资源和jmeter机器资源。必须有一个吞噬CPU /磁盘/网络的进程。
+0

谢谢,你的回答是非常有帮助的。我不认为响应时间问题可能与路由器上的其他流量有关,可能是由我的房间伙伴产生的;)。 PS:我正在使用Mac OS X – user1781028 2013-03-06 19:12:13