gpt4 book ai didi

Nginx 与 socket.io 内存泄漏

转载 作者:行者123 更新时间:2023-12-02 19:12:21 29 4
gpt4 key购买 nike

背景故事:我们为许多客户管理基础设施,几乎所有客户都有 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;
....
}

最佳答案

解决方案是删除所有 proxy_buffering 配置参数并仅保留:proxy_buffering 关闭;proxy_buffer_size 4k;差异可以在这里看到on the following picture.

关于Nginx 与 socket.io 内存泄漏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64074764/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com