我是一名軟體開發人員,主要在 Arch Linux 上使用 Java。我最近在我的開發環境和系統本身中遇到了很多資源故障。
當我啟動我通常使用的所有應用程式時,系統開始拋出錯誤,例如:
在 zsh 中:
mlenz@loki ~/[redacted] (git)-[master] % cd ..
VCS_INFO_detect_git:9: fork failed: resource temporarily unavailable
在 Eclipse(我的 IDE)中:
Unhandled event loop exception
unable to create new native thread
在Wildfly(我們目前專案使用的應用程式伺服器)啟動期間:
13:19:54,962 ERROR [org.xnio.listener] (XNIO-1 I/O-2) XNIO001007: A channel event listener threw an exception: java.lang.OutOfMemoryError: unable to create new native thread
at java.lang.Thread.start0(Native Method)
at java.lang.Thread.start(Thread.java:714)
...
我懷疑有一些ulimit
問題,要么是nproc
要么是nofile
限制,但我設法將它們設置為一些異常大的值,但問題沒有解決:
mlenz@loki ~ % ulimit -a
-t: cpu time (seconds) unlimited
-f: file size (blocks) unlimited
-d: data seg size (kbytes) unlimited
-s: stack size (kbytes) 8192
-c: core file size (blocks) 0
-m: resident set size (kbytes) unlimited
-u: processes 256106
-n: file descriptors 65535
-l: locked-in-memory size (kbytes) 1024
-v: address space (kbytes) unlimited
-x: file locks unlimited
-i: pending signals 63787
-q: bytes in POSIX msg queues 819200
-e: max nice 0
-r: max rt priority 0
-N 15: unlimited
我還發現問題可能是系統範圍的核心資源限制,例如檔案句柄的數量,儘管/proc/sys/fs/file-nr
另有說明:
mlenz@loki ~ % cat /proc/sys/fs/file-nr
13312 0 1629104
我們的系統管理員檢查lsof
後認為那裡的行數似乎非常高,但我也檢查了另一位同事的計算機,他那裡的行數也同樣高:
mlenz@loki ~ % lsof | wc -l
228787
我的開發環境相當不尋常,因為我通常會啟動 2 個 Wildfly 應用程式伺服器(一個是外部系統的虛擬伺服器,另一個用於我們的應用程式)。該問題似乎僅在我啟動兩個應用程式伺服器以及我在電腦上使用的一些其他應用程式時才會出現。我的系統上運行著很多服務,因此我可能必須增加系統達到的一些限制,但我完全不知道它可能是哪一個。
我可能缺少什麼想法,或者我可以檢查什麼來看看出了什麼問題?