![ulimit -u가 실행 중인 프로세스 수보다 훨씬 크면 왜 문제가 발생합니까?](https://linux55.com/image/93763/ulimit%20-u%EA%B0%80%20%EC%8B%A4%ED%96%89%20%EC%A4%91%EC%9D%B8%20%ED%94%84%EB%A1%9C%EC%84%B8%EC%8A%A4%20%EC%88%98%EB%B3%B4%EB%8B%A4%20%ED%9B%A8%EC%94%AC%20%ED%81%AC%EB%A9%B4%20%EC%99%9C%20%EB%AC%B8%EC%A0%9C%EA%B0%80%20%EB%B0%9C%EC%83%9D%ED%95%A9%EB%8B%88%EA%B9%8C%3F.png)
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