![为何我的线程无法分叉?](https://linux22.com/image/1620005/%E4%B8%BA%E4%BD%95%E6%88%91%E7%9A%84%E7%BA%BF%E7%A8%8B%E6%97%A0%E6%B3%95%E5%88%86%E5%8F%89%EF%BC%9F.png)
我最近开始租用 VPS,它在 8GB RAM 上运行 Ubuntu Server 18.04.4 LTS。我只用它运行一个小型(SpigotMC)Minecraft 服务器。当服务器的 JRE 未运行时,所有命令都可以完美运行。我通常在 tmux 会话中启动服务器,如下所示:
java -Xms1G -Xmx4G -XX:+UseConcMarkSweepGC -jar spigot-1.15.2.jar
在我断开与会话的连接后,基本 bash 命令和 APT 之类的东西仍然可以工作。但是当我尝试查看任何手册页时:
man: fork failed: Resource temporarily unavailable
偶尔我也能查看手册页,但这种情况很少见。此外,服务器进程本身偶尔也会遇到相关问题。有时在日志中我会收到类似这样的错误
com.mojang.authlib.GameProfile@deadbeef[id=<null>,name=example,properties={},leg
acy=false] (/123.456.789.0:55100) lost connection: Internal Exception: java.lang
.OutOfMemoryError: unable to create native thread: possibly out of memory or pro
cess/resource limits reached
或者
[21:45:15] [Server-Worker-614/WARN]: Server-Worker-614 died
java.lang.OutOfMemoryError: unable to create new native thread
我在日志中找不到它,但有一次我也收到一个错误,直接提到了pthread_create
错误代码EAGAIN
。最近整个服务器在一次之后崩溃了java.lang.OutOfMemoryError
。
根据我的研究,这表明服务器内存不足或线程数量已达到上限。但是,崩溃时 RAM 使用量仅为 1 到 2 GB。此外,整个系统始终运行少于 80 个线程(我使用 进行了检查ps -eLF | wc -l
)。我还读到过堆栈耗尽的可能性,但我不知道如何确认。我认为这种情况的后果会更加严重。
我特别困惑,因为有些功能似乎apt
仍然有效,但man
实际上却无效。这可能是 VPS 托管提供商的问题吗?即使服务器处于空闲状态(即没有运行 JRE),SSH 有时也会延迟几秒钟。我束手无策,您知道这个问题的根本原因是什么吗?
编辑:事实证明,我的实例正在 OpenVZ 容器中运行。以下是/proc/user_beancounters
:
Version: 2.5
uid resource held maxheld barrier limit failcnt
*******: kmemsize 36102144 40902656 9223372036854775807 9223372036854775807 0
lockedpages 0 0 9223372036854775807 9223372036854775807 0
privvmpages 414235 521970 9223372036854775807 9223372036854775807 0
shmpages 278 2064 9223372036854775807 9223372036854775807 0
dummy 0 0 9223372036854775807 9223372036854775807 0
numproc 69 69 400 400 0
physpages 373418 1191913 2097152 2097152 0
vmguarpages 0 0 9223372036854775807 9223372036854775807 0
oomguarpages 374566 1193699 0 0 0
numtcpsock 0 0 9223372036854775807 9223372036854775807 0
numflock 5 12 9223372036854775807 9223372036854775807 0
numpty 2 4 9223372036854775807 9223372036854775807 0
numsiginfo 0 138 9223372036854775807 9223372036854775807 0
tcpsndbuf 0 0 9223372036854775807 9223372036854775807 0
tcprcvbuf 0 0 9223372036854775807 9223372036854775807 0
othersockbuf 0 0 9223372036854775807 9223372036854775807 0
dgramrcvbuf 0 0 9223372036854775807 9223372036854775807 0
numothersock 0 0 9223372036854775807 9223372036854775807 0
dcachesize 18575360 18673664 9223372036854775807 9223372036854775807 0
numfile 840 1320 9223372036854775807 9223372036854775807 0
dummy 0 0 9223372036854775807 9223372036854775807 0
dummy 0 0 9223372036854775807 9223372036854775807 0
dummy 0 0 9223372036854775807 9223372036854775807 0
numiptent 44 44 2000 2000 0