bash: fork: retry: Resource temporarily unavailable

远程登录服务器之后发现不能执行任何命令,任何命令都报『bash: fork: retry: Resource temporarily unavailable』错。

很快能确认是因为nproc的设置太低,导致帐号下打开的进程数达到了上限,bash执行命令是需要fork新进程的,所以无法执行任何命令。

问题在于服务器不能重启,有一些重要的程序还在稳定执行,肯定是有某个程序fork了过多的进程,所以当前最重要的就是能执行命令,无论是查询出肇事进程,还是kill掉一些无用进程,为执行命令挤出空间。

这个时候用上了一个最不起眼的命令就是exec,它在执行命令时不会像bash那样fork,所以命令结束该ssh会话也就结束了。

exec ps H -u xxx

查询肇事进程,这里的H就是显示出进程列表。

exec kill xxx

干掉肇事进程,一切就正常了,发现原来是mongod创建了500多个进程。

接着可以设置ulimit,把nproc设置得大一些。

发表于 2023年09月07日 17:06   评论:0   阅读:700  



回到顶部

首页 | 关于我 | 关于本站 | 站内留言 | rss
python logo   django logo   tornado logo