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

Is my server too weak to run a simple JMeter test plan with 150 concurrent users?

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

我可以 运行 在 80 个并发用户和 30 秒的启动时间内成功完成。如果我超越了,事情就开始变得糟糕起来。大多数时候,测试只是卡住了,我最终不得不使用 Ctrl+C 取消它。如果我之后查看日志,我没有得到任何错误,看起来我在 运行 中途中止了测试。我还尝试 运行 在 Taurus 中设置我的测试计划,但它也冻结了,如果我之后查看日志,则没有错误。

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

我使用的服务器是一个相当弱的虚拟机。当我 运行 测试并查看 "top" 时,平均负载为 20-30,考虑到服务器有 4 个内核,这显然太高了。但是当我在网上查看时,似乎人们很容易 运行 在普通笔记本电脑上对 3-500 个并发用户进行测试,所以这就是为什么我仍然怀疑还有其他错误。

服务器规格:

有什么明显的我遗漏的东西或者我的服务器太弱了吗?`

提前致谢! 最好的问候

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

  2. 另一个原因是 JMeter 在发送下一个请求之前等待响应,如果您没有合理的超时并且服务器无法响应 - 您的测试将永远不会结束。所以考虑引入连接和响应超时,最好的方法是使用 HTTP Request Defaults, this way you can set the timeouts at one place and they will be propagated to all HTTP Request 采样器

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

  4. 检查您的应用程序测试基础架构和中间件组件(application/web 服务器、数据库、负载平衡器、反向代理等)。这些家伙需要针对高负载进行调整,因为它们的默认配置适用于 development/debugging 但不适用于负载 testing/production。

  5. 考虑重新运行您的测试,将 profiler tool or an APM Tool 附加到您的应用程序 - 这样您将能够判断瓶颈是什么,即哪个组件减慢了整个系统宕机。