linux服务器问题现场处理之open too many files惹的祸

昨天早晨,某台线上linux服务器所有图片服务,php的web应用服务突然异常,导致线上web站点访问异常。
二话不说登陆服务器,首先查看服务器负载,一切正常。
找到提供图片服务的Nginx配置,检查配置中图片目录发现图片妥妥的躺在那里,等于吃了个定心丸,不是被人黑了删除目录。
查看nginx访问日志正常,查看nginx错误日志open too many files大量出现了。

ulimit -a
默认的65535
lsof|wc -l
查看最大连接数后发现文件打开数已经快满了
这时依次排查所有可疑的java进程,php进程,nginx进程最终根据pid确定真凶是一个Java的定式服务
先kill掉真凶,一切服务恢复正常。

至此事故处理结束了,但是根本问题没有解决。
询问一番原来是张口设计模式闭口编程思想的B君写的,日防夜防家贼难防阿!
找到Jave代码走查一遍,发现递归读取某个目录下所有文件分别执行一系列处理,最后竟然没有关闭InputStream,放到final块中关掉,重新部署上线,喜大普奔。
这里提醒所有的程序员,能力越大责任越大,打开水龙头用完了一定记得随手关了,要节约资源。

至此问题才算解决,早晨的一杯水还是热的



本作品采用知识共享署名 4.0 国际许可协议进行许可,欢迎转载内容并请注明出处
《linux服务器问题现场处理之open too many files惹的祸》 http://io97.com/2015/04/04/10022.html