Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Spring 了解RESTfulWeb服务压力测试结果_Spring_Rest_Jmeter_Stress Testing_Jmeter Plugins - Fatal编程技术网

Spring 了解RESTfulWeb服务压力测试结果

Spring 了解RESTfulWeb服务压力测试结果,spring,rest,jmeter,stress-testing,jmeter-plugins,Spring,Rest,Jmeter,Stress Testing,Jmeter Plugins,我试图对我的SpringRESTfulWeb服务进行压力测试 我在Intel Core 2 Duo笔记本电脑上运行Tomcat服务器,内存为4GB。我知道这不是一台真正的服务器,但我只有这个,而且只是为了学习 为了测试,我在远程机器上运行JMeter,通过一个带有中央无线路由器的专用WLAN进行通信。我更喜欢从无线连接测试,因为它可以从移动客户端访问。使用JMeter,我运行一组50个线程,每秒启动一个线程,50秒后所有线程都在运行。每个线程反复向服务器发送一个HTTP请求,其中包含一个要处理的

我试图对我的SpringRESTfulWeb服务进行压力测试

我在Intel Core 2 Duo笔记本电脑上运行Tomcat服务器,内存为4GB。我知道这不是一台真正的服务器,但我只有这个,而且只是为了学习

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

结果如下:

我不明白为什么mi每秒命中率没有超过100个阈值(在图中,它们是每10次乘以一次),因为在这种配置下,它应该高于这个值(50个线程发送至少三次将生成150次命中率/秒)。我并没有从服务器上收到任何错误消息,而且似乎一切正常。我尝试了越来越多的配置,但我的命中率不能超过100次/秒。 为什么?

[编辑]很多时候,我注意到从某一点开始性能大幅下降,但没有任何可见的原因:客户端没有错误响应消息,只有ok http响应消息,而且所有这些消息似乎在服务器上也能正常工作,但查看报告:


正如您所注意到的,在01:54和02:14之间发生了一些事情:每秒点击数减少,响应时间增加,好吧,这可能是服务器过载,但是cpu减少了呢?这与拥塞假设不符。

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

  • 请注意,每秒点击数与CPU使用率密切相关。这意味着您拥有“CPU受限”系统,而最大性能主要受CPU限制。记住这一点非常重要:服务器资源是由点击而不是活动用户使用的。您可以完全禁用睡眠计时器,但仍将收到相同的80-90次点击/秒
  • CPU的最高级别在80%左右,因此我假设您在计算机上运行Windows操作系统(Win7?)。我曾经看到,在Windows机器上实现100%的CPU利用率是不可能的,它只是不允许花费最后20%的时间。如果达到最大值,则可以看到安装的容量限制。它只是没有足够的CPU资源来处理更多的请求。为了克服这个瓶颈,您应该提供更多的CPU(使用另一台具有更高级别CPU硬件的服务器),或者配置操作系统,使您的CPU使用率达到100%(我不知道是否适用),或者优化您的系统(代码、操作系统设置),以减少用于处理单个请求的CPU
  • 对于第二个图,我假设有东西是通过路由器下载的,或者在JMeter机器上发生了什么。“发生了什么”表示某个任务正在运行。这可能是您的朋友,他只是想执行一些“grep error.log”,或者某个计划任务正在运行。要确定这一点,您应该查看降级情况下的路由器资源和jmeter机器资源。一定有一个进程吞噬了CPU/磁盘/网络

  • 谢谢,你的回答很有帮助。我不认为响应时间问题与路由器上的额外流量有关,可能是由我的室友产生的;)。附言:我正在使用MacOSX