我的服务器是否太弱了,无法运行具有150个并行用户的简单JMeter测试计划?

时间:2018-11-27 12:38:11

标签: jmeter performance-testing load-testing taurus

我正在尝试使用JMeter创建负载测试。我有一个非常简单的测试计划:

  • 包含所有标准的HTTP Cookie管理器,缓存管理器等。
  • 包含具有一百万个有效用户名的CSV数据集配置。
  • 它访问登录页面并提交用户名以得到授权。
  • 然后访问一个执行一些数据库请求的页面,并
    显示结果。

我可以成功地与80个并发用户一起运行它,加速时间为30秒。如果我超过了那一切,事情就会开始恶化。大多数情况下,测试只是卡住了,我最终不得不用Ctrl + C取消它。如果之后再查看日志,那么我没有任何错误,就好像我中止了测试一样。我也尝试过在Taurus中运行我的测试计划,但这也会冻结,如果以后查看日志,则不会出错。

我已经完成了本指南9 Easy Solutions for a JMeter Load Test “Out of Memory” Failure中列出的大部分操作,但无论如何还是要澄清一些事情:

  • 我不在GUI中运行测试。
  • 测试计划中没有听众。
  • 我将Java堆大小增加到28 GB。
  • 我仅从域内部获取嵌入式资源。
  • 承载网页的环境应该可以轻松处理150多名用户。

我使用的服务器是一个非常弱的虚拟机。当我运行测试并查看“顶部”时,平均负载为20-30,考虑到服务器具有4个核心,这显然太高了。但是当我上网时,人们似乎可以轻松地在常规笔记本电脑上对3-500个并发用户进行测试,因此我仍然怀疑还有其他错误。

服务器规格:

  • 运行Oracle Linux Server 7.5的虚拟机
  • Intel Xeon E5-2650 v3 @ 2.3 GHz的4个内核
  • 32 GB RAM

是否有明显的丢失或服务器功能太弱?”

提前谢谢! 最好的问候

1 个答案:

答案 0 :(得分:1)

  1. 您的堆设置对于您的设置而言可能太高,您应该能够使用几GB的堆来模拟150个并发用户,而不会出现任何问题。因此,您的操作系统可能会出现巨大的swapping情况,从而导致磁盘IO高。

  2. 另一个原因是JMeter在发送下一个请求之前等待响应,并且如果您没有合理的超时时间并且服务器无法响应-您的测试将永远不会结束。因此,考虑引入连接和响应超时,最好的方法是使用HTTP Request Defaults,这种方法可以将超时设置在一个位置,并且超时将传播到所有HTTP Request采样器

    enter image description here

  3. 考虑设置对服务器的监视,因为它可能只是缺少CPU或RAM,因此不会响应。您可以为此使用JMeter PerfMon PluginSSHMon Samples Collector

  4. 在测试基础结构和中间件组件(应用程序/ Web服务器,数据库,负载均衡器,反向代理等)下检查您的应用程序。这些人需要针对高负载进行调整,因为它们的默认配置适合于开发/调试,而不适合于负载测试/生产。

  5. 考虑在应用程序上附加profiler toolAPM Tool的情况下重新运行测试-这样,您就可以分辨出什么瓶颈,即哪个组件减慢了整体速度系统停机。