Я разработчик программного обеспечения, в основном использующий Java на Arch Linux. В последнее время я испытываю много сбоев ресурсов, как в моей среде разработки, так и в самой системе.
При запуске всех приложений, которые я обычно использую, система начинает выдавать ошибки, например:
В зш:
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 (один — своего рода фиктивный для внешней системы, а другой используется для нашего приложения). Проблема, похоже, возникает только тогда, когда я запускаю оба сервера приложений вместе с некоторыми другими приложениями, которые я использую на своем компьютере. В моей системе запущено много служб, поэтому мне, возможно, придется увеличить какой-то предел, которого достигает система, но я понятия не имею, какой именно.
Есть идеи, что я упускаю или что я могу проверить, чтобы понять, в чем проблема?