리눅스 프로세스 질문드립니다.

익명 사용자의 이미지

안녕하세요

현재 리눅스에서 SW를 설치하여 운영하고있습니다.

계정에 제한된 프로세스 개수는 1024개인 상태이며 SW사용량이 몰릴 때

bash fork retry no child process라고 에러가 뜨면서 서비스를 올린 계정으로 접근이 안되는 현상이 있습니다.

해당 현상이 발생한 경우에는 root 계정으로 해당 프로세스를 다 종료시키고 다시 올리는 상황입니다.

1. 운영 시 떠있는 프로세스는 4개 인데 cd /proc/PID/fd -> ls -l | wc -l 할 경우 각 PID별로 250개정도 파일이 열려있는데 열려있는 파일도 프로세스 개수로 치는걸까요 ? 열려있는 파일도 프로세스 개수로 친다면 프로세스 제한을 늘려볼 생각입니다.

감사합니다.

김정균의 이미지

ulimit 를 이용하여 open file 수와 max user processes 값을 늘려 주세요.

해당 현상이 발생한 경우에는 root 계정으로 해당 프로세스를 다 종료시키고 다시 올리는 상황입니다.

리눅스에서는 process 가 /proc 하위에 파일로 생성이 되기 때문에 process 개수와 open file 수와 관련이 있습니다. 그러므로 open file 수와 user max processes 항목을 같이 관리해 주셔야 합니다.

[root@host ~]# ulimit -a
core file size          (blocks, -c) 0
data seg size           (kbytes, -d) unlimited
scheduling priority             (-e) 0
file size               (blocks, -f) unlimited
pending signals                 (-i) 515696
max locked memory       (kbytes, -l) 64
max memory size         (kbytes, -m) unlimited
open files                      (-n) 1024
pipe size            (512 bytes, -p) 8
POSIX message queues     (bytes, -q) 819200
real-time priority              (-r) 0
stack size              (kbytes, -s) 10240
cpu time               (seconds, -t) unlimited
max user processes              (-u) 515696
virtual memory          (kbytes, -v) unlimited
file locks                      (-x) unlimited

영구적인 설정은 /etc/security/limits.conf 에서 하실 수 있습니다.

익명 사용자의 이미지

답변 감사합니다.
리눅스에 대해 지식이 별로 없는데 혹시 오픈파일 수 = 프로세스 개수라고 생각해도 무방할까요

김정균의 이미지

동일하지는 않습니다. 한 프로세스가 여러개의 파일을 open 할 수 있기 때문에 절대 같지는 않습니다. open file 을 설정 할 때, open process 수도 고려를 해야 한다는 의미 입니다.