Nginx “Too many open files”错误解决办法

近发现生产服nginx产生一些errorr日志:Too many open files…

出现这个错误一般是,打开文件数量限制不够导致,可以调整worker_rlimit_nofile解决。这里理解一下worker_connections,worker_rlimit_nofile等概念。

基本概念:

  • worker_process worker进程数量,一般设置为CPU核心数
  • worker_connections 单个worker最大连接数
  • worker_rlimit_nofile 单个worker 最大可以打开文件数量

举个栗子🌰

1
2
3
4
5
6
7
worker_processes 4;

worker_rlimit_nofile 400000;
  
events {  
    worker_connections 65535;
} 

解释:

每个worker进程最大连接数为65535,每个worker进程最大打开文件数量为400000。4个worker最大连接数为655354,打开文件数量为4000004。

注意:

worker_connections不能超过系统打开socket限制:

1
2
ulimit -n
65535

worker_rlimit_nofile * worker_processes < 系统可打开文件总数

1
2
cat /proc/sys/fs/file-max
3143478

参考文档:

http://nginx.org/en/docs/ngx_core_module.html https://www.oschina.net/translate/nginx-setup?print

updatedupdated2020-07-202020-07-20
Load Comments?