OS/CentOS

VFS: file-max limit ... reached

Lawmin 2024. 11. 22. 13:07

1. 문제 진단

# dmesg

# grep file-max /var/log/messages
Nov 20 15:09:40 호스트명 kernel: VFS: file-max limit 65536 reached

 

2. 현재 메모리에 맞게 fs.file-max 조정

new_value=$(free -m | grep Mem | awk '{print $2*100}')

awk -v new_value="$new_value" '
BEGIN {found=0}
  /^fs\.file-max/ {print "fs.file-max = " new_value; found=1; next}
  {print}
END {if (!found) print "fs.file-max = " new_value}
' /etc/sysctl.conf > /etc/sysctl.conf.tmp && mv -f /etc/sysctl.conf.tmp /etc/sysctl.conf

sysctl -p

 

3. 프로세스 별 열린 파일 개수 상위 10 확인

lsof | awk '{print $2}' | sort | uniq -c | sort -nr | head -n 10 | while read count pid; do 
    ps -p $pid -o pid,comm,cmd --no-headers | awk -v c=$count '{print c, $0}'; 
done

 

4. 상위 프로세스ID 에 대하여 조사 후, 필요 시, 프로세스 재기동 등 조치

lsof -p 프로세스ID