在一台配备 Intel i5 2500 处理器的 8GB RAM 机器上,我正在运行 tomcat,能够使用 JMeter 发送最多 400 个请求,错误率为 0%,以获取大约 2MB 的数据大小。当我观察到响应时间时,它已经从 10 秒增加到 30 秒,当触发的用户请求数从 100 逐渐增加到 400 时,尽管吞吐量保持在 8.1/秒不变。我的问题是,我应该将并发用户数设置为低于 100 的值还是 400,因为 10 秒的响应时间本身对于访问网站的任何最终用户来说都是不可接受的。可用带宽为 100Mbps(测试环境是一个独立的网络,有单独的数据库服务器、应用程序服务器和通过 cat5 电缆连接到网络交换机的 jmeter 客户端)。
除此之外,这种使用 jmeter 的压力测试并不能揭示出响应时间过长的确切瓶颈,无论是由于数据库还是应用程序服务器。如何找出问题所在?
答案1
JMeter 可以生成负载,但它不会自动揭示瓶颈,您必须分析结果才能查明性能问题的根源。以下是一些建议:
确保 JMeter 本身不是瓶颈:
- 确保 JMeter 和被测应用程序安装在不同的机器上
- 运行测试命令行非 GUI 模式
- 禁用所有听众试运行期间
- 为 JMeter 提供足够的 Java 堆空间
- 如果吞吐量问题仍然存在,请监控应用程序服务器和数据库服务器端的资源。服务器性能监控插件可以帮助检查测试应用程序的资源健康状况。
如果机器没有超载,例如 CPU、RAM、网络和磁盘 IO 都相当低但响应时间很长,您可以考虑以下步骤:
- 检查应用程序和数据库服务器配置,确保它们针对 400 多个用户进行了最佳配置,默认值适合开发,但对于生产来说绝对需要更改
- 如果配置正确-使用分析工具确定应用程序的哪个部分导致速度变慢,一旦确定,请报告或修复它。