诊断过程
- 查看当前进程已打开的fd
- 查看系统fs.file-max
- 查看系统单个进程限制fd fs.nr_open
- 查看用户的ulimit的nofile的值
- 调整ulimit nofile值至适当
- 验证调整的值
- 参数建议
查看出错时系统fd使用详情
- 查看系统所有open的 fd, 如下
lsof | awk '{print $2}' | sort | uniq -c | sort -nr
- 按进程维度查看各个进程的fd使用率
ps -eo pid,comm | while read pid comm; do if [ -e /proc/$pid/fd ]; then count=$(ls /proc/$pid/fd | wc -l) echo "PID $pid ($comm): $count open files" fi done
lsof -p [PID] | wc -l