这是一个 Linux 系统常见的故障,网络上也能轻易的找到解决办法,我也只是在工作中遇到了这个问题,所以在博客记录下,以备不时之需。

一、报错截图:

图为 resin 的报错日志,很明显提示了 Too many open files:

二、临时解决

临时的解决办法很简单,先执行 ulimit -n 65535,然后重启 resin 即可。

Ps:请注意启动环境是否生效:切换到 resin 的启动身份,执行 ulimit -n  查看当前的最大文件打开数是否已优化。

三、永久生效

第①种做法:可讲 ulimit -n 65535 添加到 /etc/profile 的最后即可;

Shell

1
2
3
echo “ulimit -n 65535” >>/etc/profile
#刷新配置
source /etc/profile

第②种做法:修改/etc/security/limits.conf 文件,在最后添加以下内容即可:

Shell

1
2
3
4
*        soft    noproc 65535
*        hard    noproc 65535
*        soft    nofile 65535
*        hard    nofile 65535

或者直接执行如下代码亦可:

Shell

1
2
3
4
echo ‘*        soft    noproc 65535
*        hard    noproc 65535
*        soft    nofile 65535
*        hard    nofile 65535′>>/etc/security/limits.conf

使用第①种,登陆普通账号的时候,会报无权限错误,所以推荐使用第②种方法。

最后啰嗦下,不管使用哪一种方法,修改生效后,需要重启应用才行,否则程序将延续使用旧的环境设置。