大多数软件的 pthread_create 失败(EAGAIN)

大多数软件的 pthread_create 失败(EAGAIN)

我有一个 vServer(16GB RAM,6 vCores),运行 Ubuntu Server(Linux 4.15.0)和一些 docker 容器。

几天前,我部署了一个新容器,但它根本无法启动,并出现来自 docker-compose 的奇怪的本机崩溃转储,其中包括以下错误消息:

fork/exec /usr/bin/containerd-shim-runc-v2: resource temporarily unavailable: unknown
runtime/cgo: pthread_create failed: Resource temporarily unavailable SIGABRT:
failed to create new OS thread (have 5 already; errno=11) runtime: may need to increase max user processes (ulimit -u)

此后,许多之前正常运行的容器也出现了同样的问题。不过,我重启了 dockerd 和所有容器,问题似乎就消失了。

今天,我想启动我的 Minecraft 服务器(Java 11 上的 Forge modded 1.16,没有 docker),但问题又出现了:

[136,281s][warning][os,thread] Failed to start thread - pthread_create failed (EAGAIN) for attributes: stacksize: 1024k, guardsize: 0k, detached.

到目前为止最奇怪的是,它无法打开 TTY 设备?:

java.io.IOException: Cannot run program "stty": error=11, Resource temporarily unavailable

收到这些消息后,SSH 会话就锁定了,第二个终端显示我还没有达到单个限制ulimit -a,而且在运行 Minecraft 的情况下,我还有 9GB 的 RAM自由的.htop显示有 90 个任务正在运行。我已经使用 Linux 服务器多年了,从未见过这样的错误 - 这可能是什么原因造成的?

我知道以前在 SF 上也曾问过类似的错误,但没有一个答案能给我带来什么改变。

答案1

最后发现了问题:我的主机提供商在其 OpenVZ 配置中将线程数限制为 700。

我可以看到/proc/user_beancounters。似乎如果numproc接近 700,就会发生这些错误。除了减少线程/docker 容器的数量外,我无能为力。

相关内容