我尝试在我的电脑上安装Intel MPI Benchmark,但出现了以下错误:
fork: retry: Resource temporarily unavailable
当我运行ls
和top
命令时,我再次收到了这个错误。
是什么导致了这个错误?
我的机器配置:
Dell precision T7500
Scientific Linux release 6.2 (Carbon)
我尝试在我的电脑上安装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本地线程计数。 在此达到约1,000(对我们而言-您的情况可能有所不同),我们开始收到您提到的错误消息。
ps -eL
可以显示所有进程,而 ps -L <pid>
则可以显示与 <pid>
相关的进程。ps -eL <pid>
只会显示所有进程,而不管 <pid>
是什么。 - Sanghyun Lee