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


8

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

我每隔几个小时开始在错误日志中看到“ 1024 worker_connections不够”,并且我的网站变慢/变黄了。Nginx重新启动可以在接下来的几个小时内完全解决该问题。

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

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

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

谢谢。

编辑 这看起来不对

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

您正在使用proxypass吗?
丹·R

不,我没有使用任何代理设置。这是旅客的铁轨站点。
约翰·巴希尔

1
也许尝试nginx.org/en/docs/debugging_log.html启用它,以查看发生这种情况的请求。我对旅客/铁路不熟悉。如果在连接到Web客户端的端口上,则客户端已关闭连接,但nginx尚未关闭。
丹·R

Answers:


7

没有代理通过/反向代理

max_clients = worker_processes * worker_connections

带有反向代理

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

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

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

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


尝试...在Ubuntu上运行lsof 4.81 ...“非法选项字符:I”
John Bachir 2010年

参见上述编辑中的lsof输出
John Bachir

1
并不是要大写-i
Dan R
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.