저는 주로 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 응용 프로그램 서버를 시작한다는 점에서 매우 특이합니다(하나는 외부 시스템용 가상 서버이고 다른 하나는 우리 응용 프로그램용). 문제는 두 개의 응용 프로그램 서버와 컴퓨터에서 사용하는 일부 다른 응용 프로그램을 시작할 때만 발생하는 것 같습니다. 내 시스템에서 많은 서비스가 실행되고 있으므로 시스템이 도달하는 한도 중 일부를 늘려야 할 수도 있지만 어느 것이 될지는 전혀 모릅니다.
내가 놓쳤을 수도 있는 아이디어나 무엇이 잘못되었는지 확인하기 위해 확인할 수 있는 것이 있습니까?