Too many open files报错处理
Too many open files 报错处理#
文件句柄申请太多导致异常 Too many open files
产生原因:#
too many open files (打开的文件过多) 是 Linux 系统中常见的错误,从字面意思上看就是说程序打开的文件数过多,不过这里的 files 不单是文件的意思,也包括打开的通讯链接 (比如 socket),正在监听的端口等等,所以有时候也可以叫做句柄 (handle),这个错误通常也可以叫做句柄数超出系统限制。
引起的原因就是进程在某个时刻打开了超过系统限制的文件数量以及通讯链接数,通过命令 ulimit -a 可以查看当前系统设置的最大句柄数是多少:
open files 那一行就代表系统目前允许单个进程打开的最大句柄数,这里是 1024。
使用命令 lsof -p 进程 id 可以查看单个进程所有打开的文件详情,使用命令 lsof -p 进程 id | wc -l 可以统计进程打开了多少文件:
解决办法:#
1、命令方式增大允许打开的文件数#
ulimit -n 2048
可以将此命令写入环境变量配置文件中,每次登陆会话都会执行一遍
这样就可以把当前用户的最大允许打开文件数量设置为 2048 了,但这种设置方法在重启后会还原为默认值。
ulimit -n 命令非 root 用户只能设置到 4096。
想要设置到 8192 需要 sudo 权限或者 root 用户。
2、修改系统配置文件增大允许打开的文件数#
vim /etc/security/limits.conf
#在最后加入
* soft nofile 4096
* hard nofile 4096
或者只加入
* - nofile 8192
最前的 * 表示所有用户,可根据需要设置某一用户,例如
hadoop soft nofile 8192
hadoop hard nofile 8192
注意”nofile” 项有两个可能的限制措施。就是项下的 hard 和 soft。 要使修改过得最大打开文件数生效,必须对这两种限制进行设定。 如果使用”-“字符设定,则 hard 和 soft 设定会同时被设定。
本作品采用《CC 协议》,转载必须注明作者和本文链接
推荐文章: