我有一个在 nginx 上运行的流量非常低的站点,有 4 个工人,每个有 1024 个连接。
每隔几个小时,我就会在错误日志中看到“1024 个 worker_connections 不够”,我的网站速度变慢/变得不稳定。在接下来的几个小时内,nginx 重启完全解决了这个问题。
显然发生了一些奇怪的事情,我无法为我的应用程序的 4k 并发用户提供服务。
除了查看访问日志(看起来很正常)之外,有没有办法更详细地观察 nginx 正在做什么?
是否有一些臭名昭著的配置组合可能导致旧连接保持打开而不关闭?
谢谢。
编辑 这看起来不对
# lsof |grep nginx |grep CLOSE_WAIT |wc -l
1271
Run Code Online (Sandbox Code Playgroud)
无代理通行证/反向代理
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 开放的连接及其状态。
| 归档时间: |
|
| 查看次数: |
13829 次 |
| 最近记录: |