我尝试在我的计算机上安装Intel MPI Benchmark,结果出现以下错误:
fork: retry: Resource temporarily unavailable
然后,当我运行ls
和top
命令时,我再次收到此错误。
导致此错误的原因是什么?
我的机器配置:
Dell precision T7500
Scientific Linux release 6.2 (Carbon)
这通常是由文件描述符用完引起的。
有系统总文件描述符的限制,你能从命令中得到什么:
sysctl fs.file-nr
这将返回文件描述符的计数:
<in_use> <unused_but_allocated> <maximum>
要了解用户文件描述符限制是什么,请运行以下命令:
sudo su - <username>
ulimit -Hn
要了解用户使用了多少文件描述符,请运行以下命令:
sudo lsof -u <username> 2>/dev/null | wc -l
因此,现在如果您遇到系统文件描述符限制问题,您需要编辑/etc/sysctl.conf文件,并添加或修改一行fs.file-max,并将其设置为足够大的值,以处理所需的文件描述符数量,然后重新启动。
fs.file-max = 204708
另一种可能是线程太多。我们刚刚在针对使用线程池的应用程序运行测试工具时遇到了此错误消息。我们使用
watch -n 5 -d "ps -eL <java_pid> | wc -l"
查看在给定Java进程ID内运行的Linux本机线程的持续计数。在达到大约1000(对我们来说——YMMV)之后,我们开始收到您提到的错误消息。