200개의 프로세스를 실행하고 있는데 ulimit -u
400개가 몇 가지 문제를 일으키는 것 같습니다.
$ ps -A | wc -l
199
$ ulimit -u 400
zsh: fork failed: resource temporarily unavailable
혼란스러워요. 한도에 도달한 이유는 무엇입니까?
편집하다: 처음에 ulimit -u
주어진
$ ulimit -u
47334
답변1
리눅스에서실개수에는 포함되지만 ulimit -u
일반적으로 그렇게 표시되지는 않습니다 ps -A
. L
플래그를 추가해야 합니다 .
예를 들어 내 컴퓨터에서는 다음과 같습니다.
% ps -A | wc -l
124
% ps -AL | wc -l
155
31개의 추가 프로세스가 실행 중인 것을 볼 수 있습니다. 이는 일반적으로 보기에서 숨겨져 있는 스레드입니다.
Java 및 기타 고도로 스레드된 애플리케이션을 사용하면 생각보다 더 많은 스레드/프로세스를 쉽게 실행할 수 있습니다. 귀하의 ulimit -u
가치는 이를 고려해야 합니다.
ulimit
이는 기본적으로 다음 설정 과 함께 제공되는 RedHat 시스템에서 많은 Java 애플리케이션을 실행하는 사람들에게 예기치 않게 영향을 미칠 수 있습니다 .
% cat /etc/security/limits.d/20-nproc.conf
# Default limit for number of user's processes to prevent
# accidental fork bombs.
# See rhbz #432903 for reasoning.
* soft nproc 4096
root soft nproc unlimited