我正在尝试对我的 Spring RESTful Web 服务进行压力测试。
我在 Intel Core 2 Duo 笔记本电脑上运行我的 Tomcat 服务器,内存为 4 GB。我知道它不是真正的服务器机器,但我只有这个,它只是为了学习目的。
对于测试,我在远程机器上运行 JMeter,并通过带有中央无线路由器的私有 WLAN 进行通信。我更喜欢通过无线连接来测试它,因为它可以从移动客户端访问。使用 JMeter,我运行一组 50 个线程,每秒启动一个线程,然后在 50 秒后所有线程都运行。每个线程向服务器重复发送一个 HTTP 请求,其中包含一个要处理的小 JSON 对象,并且在每次迭代中休眠的时间等于 100 毫秒的恒定延迟和具有标准偏差的高斯分布的随机值之和100 毫秒。我为图表使用了一些 JMeter 插件。
结果如下:
我不知道为什么 mi hits per second 没有超过 100 的阈值(在图中它们每 10 倍),因为使用这种配置它应该高于这个值(50 线程发送至少 3 次会产生 150 次命中/秒)。我没有从服务器收到任何错误消息,一切似乎都运行良好。我尝试了越来越多的配置,但我无法获得超过 100 次命中/秒。为什么?
[编辑] 很多时候,我注意到从某个时间点开始性能大幅下降而没有任何明显的原因:客户端上没有错误响应消息,只有好的 http 响应消息,而且一切似乎在服务器上也运行良好,但查看报告:
正如您所注意到的,在 01:54 和 02:14 之间发生了一些事情:每秒点击次数减少,响应时间增加,这可能是服务器过载,但是 cpu 减少了怎么办?这与拥塞假设不相容。