NGINX 502 使用 docker 和 jmeter 的错误网关

问题描述 投票:0回答:1

我在 docker 上使用 nginx 以及 2 个微服务,也在 docker 上,全部都在本地。我正在使用 JMeter 对大量用户进行负载测试。

问题是我在许多请求中收到 502 Bad Gateway 错误(60%-70%)。

从我的角度来看,我认为这是由于 CPU 和内存限制,因为所有本地共享相同的资源,在任务管理器中这些资源为 100%。

nginx.config文件如下:

worker_processes 4;

events {
    worker_connections 2048;
}

http {
    proxy_connect_timeout 60s;
    proxy_read_timeout 30s;

    upstream loadbalancer{
        server 172.18.0.3:8083;
        server 172.18.0.4:8084;
    }

    server {
        listen 8080;
        location / {
            proxy_pass http://loadbalancer/;
        }
    }
}

有谁知道这是什么原因吗?我是否认为这是由于 CPU 和内存限制造成的?

谢谢!

docker nginx jmeter nginx-config
1个回答
0
投票

根据 HTTP 状态 502 描述:

超文本传输协议 (HTTP) 502 Bad Gateway 服务器错误响应代码表示服务器在充当网关或代理时收到 来自上游服务器的无效响应

因此,这意味着您的微服务中至少有一个未能向 Nginx 提供正确的响应。

因此,您需要通过分析微服务日志、分析其代码等来确定失败的根本原因。

一般来说,在与被测系统相同的机器上运行负载生成器并不是最好的主意,因为被测系统和 JMeter 都可能是资源密集型的,并且会“争夺”内存、CPU 和网络。所以你不会得到好的结果。此外,结果无法推断,因为它们不是线性扩展的,因此您不能说如果您的系统在 4GB RAM 上支持 100 000 个用户,那么它在 8GB RAM 上将支持 200 000 个用户。您需要在生产环境中测试系统的性能,或者在硬件、软件、数据量等方面尽可能接近生产环境。

一旦获得一些结果,您可以在缩小规模的环境中重复较小的测试,并将其用作回归测试的基线,但初始压力测试应在类似产品的环境中完成。

有关此主题和其他重要主题的更多信息:负载测试最佳实践

© www.soinside.com 2019 - 2024. All rights reserved.