运行负载测试 jmeter 时 504 网关超时
504 gateway timeout while runnning the Load Test jmeter
我一直致力于在 jmeter 上执行每秒 500 个用户的负载测试。我正在使用 JMeter。在 运行 负载测试期间,我不断收到登录错误 API。
下面是我发送和接收超时的请求和响应。
样品申请
POST https://example.com//9000/v1/api/user/login
POST data:
{
"email":"xyz@yopmail.com",
"password":"abcdef"
}
[no cookies]
Request Headers:
Connection: keep-alive
Content-Type: application/json
:
Content-Length: 79
Host: botstest.smartbothub.com
User-Agent: Apache-HttpClient/4.5.3 (Java/1.8.0_151)
示例响应
Thread Name: Thread Group 1-310
Sample Start: 2017-12-27 11:30:06 IST
Load time: 61422
Connect Time: 1148
Latency: 61422
Size in bytes: 363
Sent bytes:286
Headers size in bytes: 171
Body size in bytes: 192
Sample Count: 1
Error Count: 1
Data type ("text"|"bin"|""): text
Response code: 504
Response message: Gateway Time-out
Response headers:
HTTP/1.1 504 Gateway Time-out
Server: nginx/1.10.3 (Ubuntu)
Date: Wed, 27 Dec 2017 06:01:07 GMT
Content-Type: text/html
Content-Length: 192
Connection: keep-alive
HTTPSampleResult fields:
ContentType: text/html
DataEncoding: null
服务器的nginx配置文件如下所示。
https://drive.google.com/file/d/1_XWYeqSAWZz6dtnTTCeLOEMzDwvEWwY1/view
很可能是您的 Nginx 服务器过载,因此无法及时处理请求,从而导致错误。
这可能是由几个问题引起的:
- Nginx 服务器只是缺少硬件资源(CPU、RAM、网络或磁盘)。通过使用 JMeter PerfMon Plugin
在 Nginx 端监控上述资源,确保它有足够的运行空间
- Nginx 服务器配置不适合高负载。默认配置可能不适合处理 500 个并发用户,因此请查看 How to Configure nginx for Optimized Performance 文章以查看您的设置是否符合建议。基本上你需要结合第 1 点和第 2 点来获得你的大部分 Nginx 设置,如果机器相对空闲并且你获得高响应时间 and/or 低吞吐量 - 你的网络应用程序或基础设施有问题设置。
- 这可能是您的应用程序有问题,无法以比 Nginx 超时更快的速度生成响应。查看它的日志并使用 profiling tools 检查正在发生的事情 - 它可以让您检测应用程序花费最多时间的地方
- 这可能是网络基础设施问题,即您使用的是 WiFi 而不是 LAN,或者路由器出现故障,或者您达到了公司代理的限制。使用 Wireshark
等嗅探器工具捕获网络流量可能也是个好主意
但首先阅读日志:JMeter 日志、Nginx 日志、OS 日志,任何存在的和相关的。很可能你会从他们身上找出原因。
我一直致力于在 jmeter 上执行每秒 500 个用户的负载测试。我正在使用 JMeter。在 运行 负载测试期间,我不断收到登录错误 API。 下面是我发送和接收超时的请求和响应。
样品申请
POST https://example.com//9000/v1/api/user/login
POST data:
{
"email":"xyz@yopmail.com",
"password":"abcdef"
}
[no cookies]
Request Headers:
Connection: keep-alive
Content-Type: application/json
:
Content-Length: 79
Host: botstest.smartbothub.com
User-Agent: Apache-HttpClient/4.5.3 (Java/1.8.0_151)
示例响应
Thread Name: Thread Group 1-310
Sample Start: 2017-12-27 11:30:06 IST
Load time: 61422
Connect Time: 1148
Latency: 61422
Size in bytes: 363
Sent bytes:286
Headers size in bytes: 171
Body size in bytes: 192
Sample Count: 1
Error Count: 1
Data type ("text"|"bin"|""): text
Response code: 504
Response message: Gateway Time-out
Response headers:
HTTP/1.1 504 Gateway Time-out
Server: nginx/1.10.3 (Ubuntu)
Date: Wed, 27 Dec 2017 06:01:07 GMT
Content-Type: text/html
Content-Length: 192
Connection: keep-alive
HTTPSampleResult fields:
ContentType: text/html
DataEncoding: null
服务器的nginx配置文件如下所示。 https://drive.google.com/file/d/1_XWYeqSAWZz6dtnTTCeLOEMzDwvEWwY1/view
很可能是您的 Nginx 服务器过载,因此无法及时处理请求,从而导致错误。
这可能是由几个问题引起的:
- Nginx 服务器只是缺少硬件资源(CPU、RAM、网络或磁盘)。通过使用 JMeter PerfMon Plugin 在 Nginx 端监控上述资源,确保它有足够的运行空间
- Nginx 服务器配置不适合高负载。默认配置可能不适合处理 500 个并发用户,因此请查看 How to Configure nginx for Optimized Performance 文章以查看您的设置是否符合建议。基本上你需要结合第 1 点和第 2 点来获得你的大部分 Nginx 设置,如果机器相对空闲并且你获得高响应时间 and/or 低吞吐量 - 你的网络应用程序或基础设施有问题设置。
- 这可能是您的应用程序有问题,无法以比 Nginx 超时更快的速度生成响应。查看它的日志并使用 profiling tools 检查正在发生的事情 - 它可以让您检测应用程序花费最多时间的地方
- 这可能是网络基础设施问题,即您使用的是 WiFi 而不是 LAN,或者路由器出现故障,或者您达到了公司代理的限制。使用 Wireshark 等嗅探器工具捕获网络流量可能也是个好主意
但首先阅读日志:JMeter 日志、Nginx 日志、OS 日志,任何存在的和相关的。很可能你会从他们身上找出原因。