阿里:高级运维工程师;大众点评:资深运维工程师;目前在创业公司:运维经理
分类: 系统运维
2013-09-02 11:58:11
现象:
8月23之后,时不时收到服务器的/usr used > 90%的报警
排查:
1、du发现磁盘/usr使用不大,而报警使用的df=》明显是有文件删除了空间没释放。
注:du和df的实现机制不同:du统计磁盘上存在的文件然后累加;df通过文件系统索引获取信息(会统计到删除了但是没释放的空间),实现机制的不同也会导致运行速度的区别。
2、用lsof(lsof /usr)查看发现nginx的tmp文件过大,删除之后,但是nginx进程依旧使用,导致空间未释放
解决:
方法1:进程定时重启,以释放空间:因影响用户体验,pass
方法2:不使用nginx的tmpfile:因为api主要是生成静态文件,给用户下载的,so加上缓存还是有一定作用的。所以考虑再三,还是保留。
方法3:限制nginx的tmp文件:以proxy_max_temp_file_siz,限制了每个文件最大300m(即314572800字节).
proxy_max_temp_file_size 300m;
测试效果ok,30号之后就没报警了
注意:线上变更都有风险,这样配置很可能限制了对方下载的文件的最大大小未300m,如果有超过300m的大文件的,请慎重配置。