【问题标题】:fork: retry: Resource temporarily unavailable [closed]fork:重试:资源暂时不可用[关闭]
【发布时间】:2012-08-18 05:29:12
【问题描述】:

我尝试在我的计算机上安装 Intel MPI Benchmark,但出现此错误:

fork: retry: Resource temporarily unavailable

然后我在运行ls 和top 命令时再次收到此错误。

是什么导致了这个错误?

我的机器配置:

Dell precision T7500
Scientific Linux release 6.2 (Carbon)

【问题讨论】:

标签: linux fork mpi intel


【解决方案1】:

这通常是由文件描述符用完引起的。

有系统总文件描述符限制,你从命令中得到什么:

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

【讨论】:

  • 仅供参考,您可以使用“sysctl -p”应用 /etc/sysctl.conf 中的当前设置以保存重启。
  • 另外,如果你只读/etc,你可以在运行时使用'sysctl -w fs.file-max=204708'。
  • 您也可以直接将其添加到内核而无需重新启动,但不能永久添加 'echo 999999 > /proc/sys/fs/file-max'
【解决方案2】:

另一种可能是线程过多。我们刚刚在针对使用线程池的应用程序运行测试工具时遇到了此错误消息。我们用了

watch -n 5 -d "ps -eL <java_pid> | wc -l"

查看在给定 Java 进程 ID 中运行的 Linux 本机线程的持续计数。在达到大约 1,000 个(对我们而言——YMMV)之后,我们开始收到您提到的错误消息。

【讨论】:

  • 当我测试时,ps -eL 用于显示所有进程,ps -L &lt;pid&gt; 用于显示有关&lt;pid&gt; 的进程。 ps -eL &lt;pid&gt; 只显示所有进程,而不管&lt;pid&gt;。
  • @Willie Wheeler 你做了什么来克服线程限制?我一直在搜索和测试在网上找到的许多解决方案,但无济于事。除了重新启动 systemd-logind 之外,没有什么会允许超过 1k 的线程,它会持续大约一个小时,然后错误再次开始!
  • 机器的资源是有限的。如果您达到限制,请使用更少的线程(例如,使用线程池控制)或更多的机器。
  • 我重启了我的 Rails 服务器
  • 1000 个线程虽然不多
猜你喜欢
  • 2018-05-11
  • 1970-01-01
  • 1970-01-01
  • 2018-03-03
  • 2012-03-07
  • 1970-01-01
  • 2021-02-21
  • 2018-08-04
  • 2021-05-07
相关资源
最近更新 更多