之前一段时间上博客的时候发现登不上去了,显示数据库连接失败,重启数据库服务之后还没有反应,SSH连接也变得巨卡,我猜测是磁盘空间不足了,可能是日志太多的缘故,下面开始排查。
排查过程
这个其实没什么好说的,网上有很多教程。
- 查看服务器空间使用情况
df -h
- 进入/dev/vdal的磁盘挂载的目录 /,查看各个文件占用大小
cd /
du -sh *
除去usr和www文件存有应用服务外,我们分析到var比较可疑(之前已经清理过空间了,所以没那么大)。
- 接下来就不断使用第2步的方法进入较大的文件逐级扫描,确定文件位置
最后锁定是var文件内系统日志和docker服务的nginx日志占用了大量的磁盘空间
使用宝塔面板定期清除日志文件
定位到了问题,也不能直接删除日志,要查清楚日志文件能不能随意删除,之前就是直接rm -f了docker服务的日志,导致整个服务都坏掉了,要重新安装,就比较麻烦了。另外最好也不要直接关掉日志功能,因为有的时候我们需要查询日志定位异常信息。
nginx日志的处理
nginx的问题主要是access.log文件比较大,我之前直接没有暂停nginx服务就直接把它删掉了,实际上整个日志文件时刻都在被写入,删完之后,nginx服务就出了问题。
正确做法是,先暂停nginx,删除日志,然后重启。当然这有些麻烦,可以直接使用覆盖日志的方法清理,这样就可以不用重启了。
echo "" > /usr/local/nginx/access.log(路径替换成你的日志路径)
实际上,定期人工清理也挺麻烦的,我们就可以借助宝塔面板的计划任务定期清理。宝塔面板是一个不错的运维辅助工具,操作过程可参看Linux宝塔面板使用教程。
通过添加定时任务的方式,就可以定时清除日志了,比较方便。
系统日志的处理
系统日志的问题主要是journal文件夹内定期产生的日志太多了,同样的,最好不要全删,每次留一点比较合适。以下语句作用是只保留近期500MB的日志。
journalctl --vacuum-size=500M
同样的,添加到宝塔面板的计划任务中,这些诸如清理、备份的定时任务,最好时间设定在半夜,避免对博客访问产生影响。
最后
这篇博客主要是写给我自己的,未来迁移服务器重新配置的时候我怕忘了。磁盘空间清理这类运维知识都是比较浅显的,不过一方面我建站了解到这一层也就差不多了,另一方面聚沙成塔,记录下来以后也会有丰富的知识积累。
评论 (0)