最近发现生产服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 最大可以打开文件数量
举个栗子🌰
|
|
解释:
每个worker进程最大连接数为65535,每个worker进程最大打开文件数量为400000。4个worker最大连接数为655354,打开文件数量为4000004。
注意:
worker_connections不能超过系统打开socket限制:
|
|
worker_rlimit_nofile * worker_processes < 系统可打开文件总数
|
|
参考文档:
http://nginx.org/en/docs/ngx_core_module.html https://www.oschina.net/translate/nginx-setup?print