Ich bin Softwareentwickler und verwende hauptsächlich Java unter Arch Linux. In letzter Zeit treten in meiner Entwicklungsumgebung und im System selbst häufig Ressourcenausfälle auf.
Beim Starten aller von mir normalerweise verwendeten Anwendungen treten auf dem System beispielsweise folgende Fehler auf:
In zsh:
mlenz@loki ~/[redacted] (git)-[master] % cd ..
VCS_INFO_detect_git:9: fork failed: resource temporarily unavailable
In Eclipse (meine IDE):
Unhandled event loop exception
unable to create new native thread
In Wildfly (dem Anwendungsserver, den wir für das aktuelle Projekt verwenden) während des Starts:
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)
...
Ich vermutete einige ulimit
Probleme, entweder das nproc
- oder nofile
-Limit, aber es gelang mir, sie auf einige ungewöhnlich große Werte einzustellen, ohne dass das Problem behoben wurde:
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
Ich habe auch festgestellt, dass das Problem möglicherweise an einer systemweiten Beschränkung der Kernelressourcen liegt, beispielsweise an der Anzahl der Dateihandles, obwohl /proc/sys/fs/file-nr
etwas anderes behauptet wird:
mlenz@loki ~ % cat /proc/sys/fs/file-nr
13312 0 1629104
Unser Systemadministrator hat nachgesehen lsof
und fand, dass die Zeilenanzahl dort extrem hoch war. Ich habe aber auch den Computer eines anderen Kollegen überprüft und auch dieser hatte eine ähnlich hohe Zeilenanzahl:
mlenz@loki ~ % lsof | wc -l
228787
Meine Entwicklungsumgebung ist ziemlich ungewöhnlich, da ich normalerweise zwei Wildfly-Anwendungsserver starte (einer ist eine Art Dummy für ein externes System, während der andere für unsere Anwendung verwendet wird). Das Problem scheint nur aufzutreten, wenn ich beide Anwendungsserver zusammen mit einigen anderen Anwendungen starte, die ich auf meinem Computer verwende. Auf meinem System laufen viele Dienste, daher muss ich möglicherweise einige Grenzen erhöhen, die das System erreicht, aber ich habe absolut keine Ahnung, welche es sein könnten.
Irgendwelche Ideen, was ich möglicherweise übersehe oder was ich überprüfen kann, um festzustellen, was nicht stimmt?