来的这么突然,让我猝不及防
项目背景:单体服务,所以一台机器干了所有的活(数据库/缓存/接口/页面)
问题原因:磁盘空间满了
因为项目小,没有想到会因为磁盘空间不足导致问题的出现,所以一开始想到的是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
-
就是配置文件了(配置文件的位置自行寻摸吧)
本以为改完会好使,结果确实千万头奔腾而过的小绵羊
1x1 随手的一个df -h就有了下面的这些操作
下面就是df -h的结果:
文件系统 容量 已用 可用 已用% 挂载点
/dev/vda1 197G 197G 0G 100% /
devtmpfs 3.9G 0 3.9G 0% /dev
tmpfs 3.9G 0 3.9G 0% /dev/shm
tmpfs 3.9G 468K 3.9G 1% /run
tmpfs 3.9G 0 3.9G 0% /sys/fs/cgroup
tmpfs 783M 0 783M 0% /run/user/0
1x2 开始寻找到底哪个文件的锅
# 名令如下
du -s -h /* | sort -nr
# 执行之后的结果
[root@fankers /]$ sudo du -s -h /data/wwwroot/www.fankers.cn/* | sort -nr
99G /data/wwwroot/www.fankers.cn/api
56M /data/wwwroot/www.fankers.cn/html
15M /data/wwwroot/www.fankers.cn/mall
8.0K /data/wwwroot/www.fankers.cn/shell
# 接下来要做的就是找到最大的接着瞅瞅里面到底是何物
1x3 通过上面的操作找到了罪魁祸首,是一个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/
1x4 上面就是这次问题的解决过程了
本人后端猿一枚,最近正在接触云计算,学习阶段,还望大佬们多多指教。
感谢网上前辈们提供的经验分享!