了解 ulimits/进程限制,或者其他内容。新进程停止打开(fork 错误)

了解 ulimits/进程限制,或者其他内容。新进程停止打开(fork 错误)

我有点迷茫,需要一些帮助来了解我的服务器到底发生了什么。

因此,这是一台 Proxmox (Debian) 服务器,其中运行着多个 LXC 容器,有时一切都会开始失败,因为似乎无法打开新进程/子进程。系统日志开始充满如下消息:

May 24 18:19:44 pvirtual08 ksmtuned[1645]: /usr/sbin/ksmtuned: fork: retry: Resource temporarily unavailable
May 24 18:19:46 pvirtual08 pve-firewall[4013]: status update error: command 'iptables-save' failed: open3: fork failed: Resource temporarily unavailable at /usr/share/perl5/PVE/Tools.pm line 449.
May 24 18:19:47 pvirtual08 pvestatd[4012]: command 'lxc-info -n 124 -p' failed: open3: fork failed: Resource temporarily unavailable at /usr/share/perl5/PVE/Tools.pm line 449.
May 24 18:19:47 pvirtual08 pvestatd[4012]: command 'lxc-info -n 404 -p' failed: open3: fork failed: Resource temporarily unavailable at /usr/share/perl5/PVE/Tools.pm line 449.

直到最后整个服务器都崩溃了。很明显,服务器在一段时间后无法打开新进程,但我不太明白为什么。我读到的所有内容都表明要么达到了 ulimit,要么服务器内存不足。上次我检查时,服务器的内存远没有满。至于 ulimit,这是我有点担心的地方,据我所知,也没有达到这个限制。

这是 ulimit -a 的当前值

root@pvirtual08:/var/log# ulimit -a
core file size          (blocks, -c) 0
data seg size           (kbytes, -d) unlimited
scheduling priority             (-e) 0
file size               (blocks, -f) unlimited
pending signals                 (-i) 514673
max locked memory       (kbytes, -l) 65536
max memory size         (kbytes, -m) unlimited
open files                      (-n) 1024
pipe size            (512 bytes, -p) 8
POSIX message queues     (bytes, -q) 819200
real-time priority              (-r) 0
stack size              (kbytes, -s) 8192
cpu time               (seconds, -t) unlimited
max user processes              (-u) 514656
virtual memory          (kbytes, -v) unlimited
file locks                      (-x) unlimited

上次发生这种情况时,我检查了正在运行的进程数

ps -eLf | grep -v root | wc -l

而且它也远没有达到极限,但也许我只是算错了,或者检查了错误的极限。

有没有办法让我知道服务器到底达到了哪个限制才能停止打开新的分支?例如,我可以监控当前使用情况与限制,以便编写监控脚本?

对于任何愚蠢的问题,我深表歉意,但 ulimits 的工作方式对我来说有点新且令人困惑。

相关内容