今天凌晨四点,生产机房发来短信,显示系统资源使用不足,紧接着电话打来,本人立刻赶往公司。
立刻检查机器的内存,存储空间,cpu都正常,暂时没找到问题。
接着检查日志,凌晨四点收单批量系统在干啥呢,最终发现问题,文件存在但是程序却打不开,根据errno显示,EMFILE 24 Too many open files,问题清楚。
执行了sysctl和unlimited 显示结果没问题,配置的参数足够大,根据经验,肯定是open了文件没有close
关键命令来了,lsof -n ,统计出来,进程打开文件的数量,排序,很明显其中一个特别大,然后分析该进程的代码,很快找到了问题。