这两天连续发生了几次磁盘占用空间过多的预警,今天调查了一天,发现有两个原因导致了这个问题。
docker overlay2 存储文件过多
其中一个节点上 /var/lib/docker/overlay2 目录占用了绝大多数的磁盘空间。 overlay2 是 docker 的存储系统。
参考 这篇文章 上的命令,清理了磁盘。
-
du -hs /var/lib/docker/查看磁盘使用情况。 -
docker system df查看Docker的磁盘使用情况。 -
docker system prune清理磁盘,删除关闭的容器、无用的数据卷和网络,以及 dangling 镜像(即无tag的镜像)。 -
docker system prune -a命令清理得更加彻底,可以将没有容器使用Docker镜像都删掉。注意,这两个命令会把你暂时关闭的容器,以及暂时没有用到的Docker镜像都删掉
p6spy 日志
项目采用 dynamic-datasource-spring-boot-starter 实现多数据库的访问,使用 p6spy 来监控 SQL 。
由于之前生产环境中错误的开启了 p6spy 监控,而且遗漏了 spy.properties 配置,导致默认情况下日志输出到了根目录的 spy.log 文件。最终这个文件过大,导致 k8s 资源不足,以至驱逐了该节点的所有服务。
修复起来也比加简单:
案1. 直接关闭 p6spy 监控
生产环境建议是关闭 p6spy 监控的。
datasource.datasource.dynamic.p6spy=false
案2. 指定 p6spy 的 appender,将日志输出到日志系统
仍然需要监控时,可以通过在 spy.properties 文件中指定 appender 来将日志输出到日志系统。
appender=com.p6spy.engine.spy.appender.Slf4JLogger
版权声明:本文为博主「佳佳」的原创文章,遵循 CC 4.0 BY-NC-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:www.liujiajia.me/2020/11/13/…