背景:我们为许多客户管理基础设施,几乎所有客户都有Nginx,他们在那里终止SSL并进行一些缓存。我们从未在Nginx上遇到过任何问题,在此故障排除过程中我们遇到了麻烦。
问题:最近为新客户进行了迁移,他们的应用程序使用socket.io。我们注意到,内存使用量只是随着时间的推移而增加,并且只有一个工作进程导致了这一点。重新启动没有帮助,当一个工作人员被“锁定”时,RAM的使用只会增加。一切运行良好,没有什么是缓慢的,但它可能会导致OOM,这将是一个问题。当一个工人被杀死时,RAM会被释放,但是新的会做同样的事情。
设置:运行在ESXi管理程序-Ubuntu18.04.4LTS上的4vCPU/8GBRAM Nginx (版本1.18.0)。Nginx只作为代理配置,提供150-200雷克/秒的服务。没有缓存,没有服务的静态文件。我们检查了pmap,我们发现这被认为是脏内存,但我们不知道是什么原因造成的。在syslog或nginx error.log中没有错误。访问日志将被关闭,如果您想做配置,重新加载有问题的工作人员将挂起"worker process关机“状态。我们假设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;
....
}发布于 2020-09-28 07:46:18
解决方案是删除所有proxy_buffering配置参数,只保留: proxy_buffering off;proxy_buffer_size 4k;在这里可以看到在下面的图片上。的不同之处。
https://stackoverflow.com/questions/64074764
复制相似问题