在线上都运行一年的nginx报出这个问题 愁死了,因为授权的原因不能重启,幸好可以设置
日志报错如下
2020/03/22 14:31:33 [crit] 19793#0: *2301 open() "/home/data/logs/access.log" failed (24: Too many open files), client: 101.227.140.37 2020/03/22 14:31:33 [crit] 19793#0: *2304 open() "/home/data/logs/access.log" failed (24: Too many open files), client: 101.227.140.44 2020/03/22 14:31:33 [crit] 19793#0: *2307 open() "/home/data/logs/access.log" failed (24: Too many open files), client: 101.227.140.43 2020/03/22 14:31:33 [crit] 19793#0: accept4() failed (24: Too many open files) 2020/03/22 14:31:33 [crit] 19793#0: accept4() failed (24: Too many open files) 2020/03/22 14:31:34 [crit] 19793#0: accept4() failed (24: Too many open files)
先查一下限制cat /proc/3383/limits注意这个进程ID是nginx的其中一个哈
Limit Soft Limit Hard Limit Units Max cpu time unlimited unlimited seconds Max file size unlimited unlimited bytes Max data size unlimited unlimited bytes Max stack size 10485760 unlimited bytes Max core file size 0 unlimited bytes Max resident set unlimited unlimited bytes Max processes 95709 95709 processes Max open files 1024 4096 files Max locked memory 65536 65536 bytes Max address space unlimited unlimited bytes Max file locks unlimited unlimited locks Max pending signals 95709 95709 signals Max msgqueue size 819200 819200 bytes Max nice priority 0 0 Max realtime priority 0 0 Max realtime timeout unlimited unlimited us
很明显Max open files的Soft limit太小了 需要设置成4096
echo -n 'Max open files=4096:4096' > /proc/3383/limits
如法炮制nginx的所有进程 就能正常播放了