如何观察 nginx 正在做什么?(解决:“1024个worker_connections还不够”)

Joh*_*hir 10 nginx lsof

我有一个在 nginx 上运行的流量非常低的站点,有 4 个工人,每个有 1024 个连接。

每隔几个小时,我就会在错误日志中看到“1024 个 worker_connections 不够”,我的网站速度变慢/变得不稳定。在接下来的几个小时内,nginx 重启完全解决了这个问题。

显然发生了一些奇怪的事情,我无法为我的应用程序的 4k 并发用户提供服务。

除了查看访问日志(看起来很正常)之外,有没有办法更详细地观察 nginx 正在做什么?

是否有一些臭名昭著的配置组合可能导致旧连接保持打开而不关闭?

谢谢。

编辑 这看起来不对

# lsof |grep nginx |grep CLOSE_WAIT |wc -l
1271
Run Code Online (Sandbox Code Playgroud)

Dan*_*n R 7

无代理通行证/反向代理

max_clients = worker_processes * worker_connections
Run Code Online (Sandbox Code Playgroud)

使用反向代理

max_clients = (worker_processes * worker_connections ) / (X * 2)
Run Code Online (Sandbox Code Playgroud)

2 是因为您打开了与代理的连接

X 是这些客户端与您建立的许多并发连接

要查看哪些连接挂起,您可以运行lsof -i :PORT. 它将显示所有对 nginx 开放的连接及其状态。