msa*_*ric 2 proxy memory-leaks nginx socket.io
背景故事:我们为许多客户管理基础设施,几乎所有客户都有 Nginx 代理,他们可以在其中终止 SSL 并进行一些缓存。我们在 Nginx 上从未遇到过任何问题,并且在故障排除过程中遇到了困难。
问题:最近我们为新客户进行了迁移,他们的应用程序使用了socket.io。我们注意到,内存使用量只会随着时间的推移而增加,并且只有一个工作进程导致这一情况。重新启动没有帮助,当 1 个工作线程被“锁定”时,RAM 使用量只会增加。一切都运行良好,没有什么很慢,但它可能会导致 OOM,这将是一个问题。当一名工作人员被杀死时,RAM 会被释放,但新的工作人员会做同样的事情。
设置: 4vCPU/8GB RAM Nginx VM(版本 1.18.0)在 ESXi 虚拟机管理程序 - Ubuntu 18.04.4 LTS 上运行。Nginx 仅配置为代理,服务速度约为 150-200 个请求/秒。没有缓存,没有提供静态文件。我们检查了 pmap,发现这被视为脏内存,但我们不知道是什么原因造成的。syslog 或 nginx error.log 中没有错误。访问日志已关闭,如果您想重新加载配置,则有问题的工作程序会挂起在“工作程序进程正在关闭”状态。我们假设 Nginx 端的 socket.io 没有正确配置某些内容,但很难弄清楚是什么。
非常感谢您的帮助,并对语法表示歉意。如果需要,我可以提供更多信息/指标/配置。
一些配置参数:
events {
worker_connections 4096;
use epoll;
multi_accept on;
}
http {
aio threads;
keepalive_timeout 65;
proxy_buffering on;
proxy_read_timeout 120s;
proxy_send_timeout 120s;
proxy_buffers 8 2m;
proxy_buffer_size 12m;
proxy_busy_buffers_size 12m;
proxy_headers_hash_max_size 1024;
proxy_headers_hash_bucket_size 128;
....
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2374 次 |
| 最近记录: |