#定位进程top
#找到耗费进程的线程top -Hp 进程id
jstack查看线程堆栈
free -h
#一秒刷新一次free -h -s 1
df -h
docker stats
df -h#查看
第一列 Filesystem 代表文件系统的名称。
第二列 Size 表示文件系统的大小。
第三列 Used 表示已占用多大的磁盘空间。
第四列 Avail 表示可用磁盘空间的大小。
第五列 Use% 表示磁盘使用率多大,100% 表示磁盘占满了。
第六列 Mounted On 表示挂载在哪个目录。
# 先进入到根目录 `/`cd /
# 列出当前目录或文件的总大小,并按倒叙排序,然后进入大文件夹下再次执行
du -sh /* | sort -nr
方案一:手动清理日志文件,可解燃眉之急,治标不治本。
方案二:脚本定期清理日志文件,缺点是日志文件全丢了,无法追溯。
#!/bin/sh
echo "======== start clean docker containers logs ========"
logs=$(find /var/lib/docker/containers/ -name *-json.log)
for login $logs
doecho "clean logs : $log"
cat /dev/null > $log
done
echo "======== end clean docker containers logs ========"
# 增加权限
chmod +x clean_docker_log.sh
# 执行
./clean_docker_log.sh
# 可加入linux定时任务
方案三:限制所有容器的日志文件大小,治本,缺点是需要重新创建容器和启动 docker 镜像。
vim /etc/docker/daemon.json
{
"log-driver":"json-file",
"log-opts": {"max-size":"500m", "max-file":"3"}
}
ax-size=500m,表示容器的日志文件大小上限是 500M, max-file=3,表示容器有三个日志,第一个满了 500M之后就写第二个,第二个满了 500M就写第三个,如果第三个满了,就清空第一个日志文件,重新写第一个日志文件