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

1
2
3
4
ulimit -a
默认的65535
lsof|wc -l

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

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

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


本文地址
本文采用 知识共享署名 4.0 国际许可协议进行许可,欢迎转载内容,并请注明出处。