存储技术
已经很久没有关注自己的博客了,待回来细看时,是不是发现文章下面自己写的评论服务已经挂了。后来才知道原来是磁盘都满了,那么如何来解决这个问题呢,接下来就大致简单复现一下发现和解决问题的过程。
定位问题
第一步,还是到VPS搭建环境对应的管理面板下查看一下机器的状态,貌似一切正常,除了这一抹红色:
对,10G磁盘都满了!这很有可能是导致评论服务挂掉的原因。所以,还是ssh登陆到服务器上去,看看到底是什么导致这10G内存(上次关注它的时候连10%都没用到)都用完了。接下来,就需要在命令行里查询具体是哪个目录占了很多资源了。通过下面的这样的指令,就可以发现是哪一块在我没关注的这一阶段默默膨胀了。
df -h du -hs /* du -hs /root/* du -hs /var/log/*
果然,原来都是nginx的log捣的鬼(居然膨胀到了将近9G,那还得了)!
再cd到对应的目录查看具体是哪个文件:
cd /var/log/nginx du -hs *
罪魁祸首应该就是这Ngnix的access.log
解决
问题的原因找到了,解决起来就简单了。access.log记录了所有的nginx处理的请求记录,这肯定是随着时间的积累,信息量已经越来越大,以至于到了这个地步。不过这个log现在对于我而言没有太过价值,所以直接干脆 rm -rf 。/access.log 删掉该文件。不过,当我开心地再次检查内存状况(df -h )时,发现内存占用和之前一样,依然有10G。这不科学?确实不科学,这个时候按经验来说,很多人可能会选择重启服务器(但我还是不希望为了这个重启云上的服务器)。网上大概了解下原因:可能存在一些运行进程在使用未链接(实际已经删除了)的文件。所以,检查一下是否这样的进程在运行(其实,这时候基本上知道是nginx了):
ls -ld /proc/*/fd/* 2》&1 | fgrep ‘(deleted)’
果然,就是nginx。只要重启nginx服务就能够让 df 命令报出正式的内存状况。
service nginx restart
全部0条评论
快来发表一下你的评论吧 !