프로덕션에서 문제가 발생하고 있으며 파일 없음 제한에 도달하여 발생한 것으로 의심되지만 추적이나 직접적인 증거를 찾을 수 없습니다. 우리는 RHEL 7에서 실행 중입니다. 다음 명령을 사용하여 lsof
사용자가 연 파일 설명자 수를 찾습니다.
/sbin/lsof -u <issue_user> | awk '$4 ~ /[0-9]+[rwu -].*/'
명령의 일부는 awk
정수로 시작하는 파일 설명자만 가져오고 mem/rtd/cwd 등은 무시하는 것입니다. 위 명령은 400,000개가 넘는 결과를 반환했지만 /etc/security/limits.conf
사용자의 파일 없음 제한은 131072입니다.
cat /etc/security/limits.conf
...
<issue_user> hard nofile 131072
<issue_user> soft nofile 131072
...
ulimit -aH
문제 사용자로 실행하십시오.
$ ulimit -aH
address space limit (Kibytes) (-M) unlimited
core file size (blocks) (-c) unlimited
cpu time (seconds) (-t) unlimited
data size (Kibytes) (-d) unlimited
file size (blocks) (-f) unlimited
locks (-x) unlimited
locked address space (Kibytes) (-l) unlimited
message queue size (Kibytes) (-q) 800
nice (-e) 0
nofile (-n) 131072
nproc (-u) 131072
pipe buffer size (bytes) (-p) 4096
max memory size (Kibytes) (-m) unlimited
rtprio (-r) 0
socket buffer size (bytes) (-b) 4096
sigpend (-i) 724561
stack size (Kibytes) (-s) 32768
swap size (Kibytes) (-w) not supported
threads (-T) not supported
process size (Kibytes) (-v) unlimited
에 따르면 /etc/security/limits.conf
nofile은 "열린 파일 설명자의 최대 수"입니다. 이 사용자가 에 정의된 것보다 더 많은 열린 파일 설명자를 가질 수 있는 이유는 무엇입니까 limits.conf
?