1.问题引出
使用服务器中es的时候,es报错 TOO_MANY_REQUESTS/12/disk usage exceeded flood-stage watermark 查阅资料后发现是Linux 服务器磁盘使用率已经高达 96% 了,ES 磁盘使用率配置默认上限为 95%,所以es在报错。
2.查找问题
首先来到docker目录
cd /var/lib/docker/
在docker路径下使用命令
ps:--max-depth=1意思为检索文件的最大深度1,即只检索汇总计算当前目录下的文件
du -h --max-depth=1
确定是容器内的日志占用文件过大
3.解决问题
确定是容器内log问题后进入容器
cd /var/lib/docker/containers/
du -h --max-depth=1
这里也是清理之后了,清理之前seata日志高达30多个G,这里清理别的容器作为演示
我们进入容器文件夹(注意不是进入容器)
cd /var/lib/docker/containers/你的容器id/
进入文件夹之后使用“du -ah”命令查看当前文件夹中的文件磁盘占用大小
du -ah
可以看出log文件占用最多磁盘。使用“cat /dev/null > *-json.log”命令将json文件给清理掉
如图,清理后json文件大小为0
清理后需要重启容器,实际上容器已经down了
4.总结
推荐在docker容器启动时指定日志的最大磁盘容量
docker run ...... --log-opt max-size=10m --log-opt max-file=1
或者修改docker全局配置
新建或修改/etc/docker/daemon.json,添加log-dirver和log-opts参数(daemon.json)
{
"log-driver": "json-file",
"log-opts": {
"max-size": "10m",
"max-file": "3",
"labels": "production_status",
"env": "os,customer"
}
}
或者在docker-compose文件中配置日志
logging:
options:
max-size: '12m'
max-file: '5'
driver: json-file
参考资料:
Linux Docker容器磁盘出现日志/var/lib/docker/overlay2占用100%_彭于晏之武冈分晏的博客-CSDN博客