nginx - 在负载测试下,connect() 上游失败

Ale*_*lin 9 resources nginx load-testing port reverse-proxy

我一直在wrk对我的 nginx 反向代理进行一些负载测试-> 我的 Web 应用程序设置,我注意到当我达到 1000 多个并发连接时,nginx 开始返回 502s 和以下错误消息:

2015/04/17 20:45:26 [crit] 6068#0: *1116212677 connect() to \
127.0.0.1:3004 failed (99: Cannot assign requested address) \
while connecting to upstream, client: xxx.xxx.xx.165, server: \
foo.bar.com, request: "GET /my/route HTTP/1.1", upstream: \
"http://127.0.0.1:3004/my/route", host: "foo.bar.com"
Run Code Online (Sandbox Code Playgroud)

wrk命令是:

wrk -t10 -c500 -d5m "https://foo.bar.com/my/route" -H "Accept: application/json"
Run Code Online (Sandbox Code Playgroud)

我想弄清楚这里可能出了什么问题。我的 Web 应用程序正在侦听 nginx 在端口 3004 代理的请求。nginx 端口是否用完了?Web 应用程序是否无法处理这么多请求?请求是否超时?我不清楚这一点,希望对它有更深入的了解。

use*_*554 2

已经在这里回答:/sf/ask/990107751/

该消息表明您已用完本地套接字/端口。

尝试增加网络限制:

echo "10240 65535" > /proc/sys/net/ipv4/ip_local_port_range
sysctl net.ipv4.tcp_timestamps=1
sysctl net.ipv4.tcp_tw_recycle=0
sysctl net.ipv4.tcp_tw_reuse=1
sysctl net.ipv4.tcp_max_tw_buckets=10000
Run Code Online (Sandbox Code Playgroud)

或者,您可以尝试 unix sockets 看看是否有帮助。