场景:紧急呼救,上传图片失败了。我一脸懵,服务器这是又咋地了,别邪乎姐姐,姐姐胆子小啊。
一、寻找问题原因
1、OSS出问题了?
然后我尝试了 IOS 的APP是没问题的,Android提示上传失败?这就说明 OSS服务肯定是没问题的,那就看服务器吧。
Android提示上传失败,是因为他调用的后端接口上传,IOS无问题是因为自给自足,直接对接OSS,那么问题找到了,服务器接口的问题。
2、服务器到底又咋地了?
然后你就看吧,服务正常运行,看着没啥问题啊?那看看磁盘吧,不看不知道,一看吓一跳啊。
①磁盘使用查看命令:df -h
我们发现 /dev/vda3 100%了,他对应的路径 是/下,那么继续:
② 某个路径下的磁盘占用情况 du -sh *
一直往下查看,就会发现 是docker的containers很大,占据了很大的空间。
③ truncate -s 0 / rm -rf
我们发现 是json.log把磁盘大部分空间占用了,那么直接操作就好啦。
bash
truncate -s 0 f96ecdcdbab8b8d0afae10c0ccb2892e0e5e55e493a1c0585c1c99b02c93f726-json.log
bash
rm -rf 0 f96ecdcdbab8b8d0afae10c0ccb2892e0e5e55e493a1c0585c1c99b02c93f726-json.log
一个是清空内容,一个是删除日志.,删除需重启docker.
当然这些可以直接一个脚本 解决,不然这么多镜像,难道我还一个一个删除吗?哈哈哈。
bash
脚本内容:
#!/bin/bash
echo "==================== start clean docker containers logs =========================="
logs=$(find /var/lib/docker/containers/ -name *-json.log)
for log in $logs
do
echo "clean logs : $log"
cat /dev/null > $log
done
echo "==================== end clean docker containers logs =========================="