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

我有一个运行在nginx上的stream量很低的站点,有4个工作站,每个站点有1024个连接。

每隔几个小时,我开始在错误日志“1024 worker_connections是不够的”,我的网站变慢/成为flakey。 一个nginx重新启动解决了这个问题完全在接下来的几个小时。

显然有些奇怪的事情发生,我没有办法服务我的应用程序的4k并发用户。

除了查看访问日志(这看起来很正常),有没有一种方法可以更详细地观察nginx正在做什么?

是否有一些臭名昭着的configuration组合,可能会导致旧的连接保持开放,而不是closures?

谢谢。

编辑这看起来不正确

# lsof |grep nginx |grep CLOSE_WAIT |wc -l 1271 

没有代理通过/反向代理

 max_clients = worker_processes * worker_connections 

用反向代理

 max_clients = (worker_processes * worker_connections ) / (X * 2) 

2是因为你打开了一个你正在代理的连接

X是这些客户端给你做的许多并发连接

要查看哪些连接挂在你身上,可以运行lsof -i :PORT 。 它将显示所有连接对nginx的打开状态。