来的这么突然,让我猝不及防
项目背景:单体服务,所以一台机器干了所有的活(数据库/缓存/接口/页面)
问题原因:磁盘空间满了
因为项目小,没有想到会因为磁盘空间不足导致问题的出现,所以一开始想到的是redis抽风了
0x1突然网站打不开了,授权登陆接口报错信息如下
MISCONF Redis is configured to save RDB snapshots, but is currently not able to....后面还有一大堆
0x2看到这个报错,接着我就一顿狂搜
得到额结果就是要修改redis的配置(两种方式):
-
命令走起
config set stop-writes-on-bgsave-error no
-
就是配置文件了(配置文件的位置自行寻摸吧)
本以为改完会好使,结果确实千万头奔腾而过的小绵羊
1×1 随手的一个df -h就有了下面的这些操作
下面就是df -h的结果:文件系统 容量 已用 可用 已用% 挂载点/dev/vda1 197G 197G 0G 100% /devtmpfs 3.9G 0 3.9G 0% /devtmpfs 3.9G 0 3.9G 0% /dev/shmtmpfs 3.9G 468K 3.9G 1% /runtmpfs 3.9G 0 3.9G 0% /sys/fs/cgrouptmpfs 783M 0 783M 0% /run/user/0
1×2 开始寻找到底哪个文件的锅
# 名令如下du -s -h /* | sort -nr# 执行之后的结果[root@fankers /]$ sudo du -s -h /data/wwwroot/www.fankers.cn/* | sort -nr99G /data/wwwroot/www.fankers.cn/api56M /data/wwwroot/www.fankers.cn/html15M /data/wwwroot/www.fankers.cn/mall8.0K /data/wwwroot/www.fankers.cn/shell# 接下来要做的就是找到最大的接着瞅瞅里面到底是何物
1×3 通过上面的操作找到了罪魁祸首,是一个debug日志目录惹得祸
- 心想既然它这么大,那我就直接使用rm -rf大法,一波带走,事实证明我不要你以为的我要我以为的,自然是不行了 感性的老铁可以试试rm同时删除不计其数的文件是个什么效果
- 又是一波搜,大佬们都用rsync来删,我就合计着试试
- rsync选项简单说明(具体的大家可以去了解一下):
–delete-before 接收者在传输之前进行删除操作–progress 在传输时显示传输过程-a 归档模式,表示以递归方式传输文件,并保持所有文件属性-H 保持硬连接的文件-v 详细输出模式–stats 给出某些文件的传输状态
# 创建一个空目录mkdir /tmp/empty# 然后真的就可以一波带走了rsync --delete-before --progress -d /tmp/empty/ /data/wwwroot/www.fankers.cn/api/token/runtime/debug/
1×4 上面就是这次问题的解决过程了
本人后端猿一枚,最近正在接触云计算,学习阶段,还望大佬们多多指教。
感谢网上前辈们提供的经验分享!