我正在尝试使用JMeter创建负载测试。我有一个非常简单的测试计划:
我可以成功地与80个并发用户一起运行它,加速时间为30秒。如果我超过了那一切,事情就会开始恶化。大多数情况下,测试只是卡住了,我最终不得不用Ctrl + C取消它。如果之后再查看日志,那么我没有任何错误,就好像我中止了测试一样。我也尝试过在Taurus中运行我的测试计划,但这也会冻结,如果以后查看日志,则不会出错。
我已经完成了本指南9 Easy Solutions for a JMeter Load Test “Out of Memory” Failure中列出的大部分操作,但无论如何还是要澄清一些事情:
我使用的服务器是一个非常弱的虚拟机。当我运行测试并查看“顶部”时,平均负载为20-30,考虑到服务器具有4个核心,这显然太高了。但是当我上网时,人们似乎可以轻松地在常规笔记本电脑上对3-500个并发用户进行测试,因此我仍然怀疑还有其他错误。
服务器规格:
是否有明显的丢失或服务器功能太弱?”
提前谢谢! 最好的问候
答案 0 :(得分:1)
您的堆设置对于您的设置而言可能太高,您应该能够使用几GB的堆来模拟150个并发用户,而不会出现任何问题。因此,您的操作系统可能会出现巨大的swapping情况,从而导致磁盘IO高。
另一个原因是JMeter在发送下一个请求之前等待响应,并且如果您没有合理的超时时间并且服务器无法响应-您的测试将永远不会结束。因此,考虑引入连接和响应超时,最好的方法是使用HTTP Request Defaults,这种方法可以将超时设置在一个位置,并且超时将传播到所有HTTP Request采样器
考虑设置对服务器的监视,因为它可能只是缺少CPU或RAM,因此不会响应。您可以为此使用JMeter PerfMon Plugin或SSHMon Samples Collector
在测试基础结构和中间件组件(应用程序/ Web服务器,数据库,负载均衡器,反向代理等)下检查您的应用程序。这些人需要针对高负载进行调整,因为它们的默认配置适合于开发/调试,而不适合于负载测试/生产。
考虑在应用程序上附加profiler tool或APM Tool的情况下重新运行测试-这样,您就可以分辨出什么瓶颈,即哪个组件减慢了整体速度系统停机。