生产环境中Error:EMFILE,too many open files的解决方案

时间:2023-01-05 07:15:32

前戏

生产环境报错EMFILE,too many open files 导致客户端无法访问

对文件系统进行大量并发调用,操作系统的文件描述符数量会被瞬间用光,抛出EMFILE,too many open files。异步I/O和同步I/O的显著差距:同步I/O因为每个I/O都是彼此阻塞的,在循环体中,总是一个接着一个调用,不会出现耗用文件描述符太多的情况,同时性能也是低下的;对于异步I/O,虽然并发容易实现,但是还是需要给予一定的过载保护,防止过分压榨底层系统的性能

解决方案

临时修改打开文件数

ulimit -n 65535

永久修改(重启服务器生效)

vim /etc/security/limits.conf
加入以下两行
* soft nofile 65535
* hard nofile 65535