jmeter - JMETER 4. 0 | JMeter 分布式负载测试 | jp@gc - 步进线程组 | 504 网关超时 | 非 HTTP 响应代码 | 断言失败
问题描述
考虑登录用户的场景->导航到页面01->保持用户5分钟->注销用户
脚本如下:
- 导航到主页
- 用户已登录(通过仪表板上的某些文本进行登录验证的断言)
- 仪表板出现
- 导航到第 01 页(断言第 01 页内容)
- 注销(添加了 5 分钟的恒定计时器和用于注销以验证主页被重定向的断言)
Step Up 线程配置一直保持这种方式:
为了实现这个场景,分布式系统实现如下:
- Master(我自己的机器 8 GB Ram 和 Core 2 Duo 处理器)
2 台从机(每台 8 GB Ram 和 I7 和 Core 2 Duo 处理器)
线程:jp@gc - 步进线程组
服务器配置如下:
- 2 个 EC2 实例(每个 16 GB RAM)
- 1 个负载均衡器
- 1 个 RDS 实例
注意:实例在 60% CPU 使用率时自动缩放。
在非 GUI 模式下使用步进线程为 500 个并发用户执行脚本时,仪表板报告上出现以下错误列表
- 504网关超时
- 非 HTTP 响应代码:java.net.SocketException/非 HTTP 响应消息:连接重置
- 注销失败的断言
有人可以帮我知道为什么会出现这些吗?当我检查负载平衡器 504/网关超时没有出现在那里?我试图跟踪这些错误,但无法弄清楚为什么会出现这些错误以及其他两个错误。当为 10 个用户执行相同的脚本时,GUI 模式下不会出现错误。
当为100-250 个并发用户执行相同的脚本时,它在没有上述错误时运行良好。
解决方案
如果 250 个虚拟用户没有出现问题,而 500 个虚拟用户出现了问题——这肯定是负载增加造成的瓶颈,你只需要找出原因。
- 确保将DNS 缓存管理器添加到您的测试计划中,否则您可能会遇到负载仅转到一台服务器的情况
- 设置对您的 EC2 实例的监控,以确保它们有足够的空间来运行 CPU、RAM、网络等。您可以为此使用Amazon CloudWatch或JMeter PerfMon 插件。
- 您可能希望在启用分析工具遥测的情况下重新运行测试- 这样您将能够查看应用程序花费大部分时间的位置
- 检查您的应用程序服务器、数据库等的配置,因为这可能是中间件的配置问题
- 请注意,根据 JMeter 最佳实践,您应该始终使用最新的 JMeter 版本,因此请考虑尽快迁移到 JMeter 5.0(或JMeter 下载页面上 提供的任何最新版本)。
推荐阅读
- uwp - UWP 上的 IdentityModel 刷新令牌实现
- javascript - 从 Python 发送到 JS 数据并获得响应
- javascript - 为什么 Node Pdfkit 偶尔会在我的代码中创建损坏的文件?
- python - Asyncio 等待状态改变而没有事件
- r - 为什么我用 powerSim (simr) 获得的统计功效太低了?
- go - Go:如何创建带有单元测试值的 schema.ResourceData 类型的实例?
- python - Python tkinter GUI 简单菜鸟问题:是否有必要使用类进行 tkinter GUI 事件处理?
- r - group_by() 和 unnest_tokens() 之后的 row_number() 错误
- flutter - 如何在颤动中为 FadeInImage.assetNetwork 图像赋予圆角矩形?
- json - 如何使用 jq 将获取数组的对象插入到数组中?