Docker 守护进程无法处理日志
Docker daemon fails to process logs
Docker 守护程序无法解析 json 日志并抛出 unexpected EOF
错误。我们正在调查问题的根本原因。
环境:
- Debian 4.9.189-3+deb9u2
- Docker 引擎 19.03.5
Docker 守护进程日志:
Apr 29 14:31:05 Prod-IS dockerd[30810]: time="2020-04-29T14:31:05.070677515+02:00" level=warning msg="got error while decoding json" error="unexpected EOF" retries=345
Apr 29 14:31:05 Prod-IS dockerd[30810]: time="2020-04-29T14:31:05.070695689+02:00" level=warning msg="got error while decoding json" error="unexpected EOF" retries=346
Apr 29 14:31:05 Prod-IS dockerd[30810]: time="2020-04-29T14:31:05.070712630+02:00" level=warning msg="got error while decoding json" error="unexpected EOF" retries=347
Apr 29 14:31:05 Prod-IS dockerd[30810]: time="2020-04-29T14:31:05.070732299+02:00" level=warning msg="got error while decoding json" error="unexpected EOF" retries=348
Apr 29 14:31:05 Prod-IS dockerd[30810]: time="2020-04-29T14:31:05.070755016+02:00" level=warning msg="got error while decoding json" error="unexpected EOF" retries=349
Apr 29 14:31:05 Prod-IS dockerd[30810]: time="2020-04-29T14:31:05.070773699+02:00" level=warning msg="got error while decoding json" error="unexpected EOF" retries=350
Docker 守护程序配置
"log-driver": "json-file",
"log-opts": {
"mode": "non-blocking",
"max-size": "500m",
"max-file": "3"
}
存储 space 在 docker 写入其日志的分区上可用。
非常欢迎您就此事发表见解。
问题=Docker 引擎错误json-文件:修复偶发的意外 EOF 错误
我花了一些时间研究并试图找出 docker 中的错误
日志。
docker 引擎 20.10.5 中存在错误,即 docker 中的 运行 版本。 Github PR 修复了这个问题。 https://github.com/moby/moby/pull/42104
我在 运行
时发现错误
$ journalctl -u docker.service
level=warning msg="got error while decoding json" error="unexpected EOF" retries=19999
Docker 日志驱动程序有一个错误,它无法处理某些日志格式。然后,该错误会用重试消息淹没系统日志。这种情况会产生非常烦人的 CPU 负载。
Docker 引擎最新版本是 20.10.7。此问题已在版本 Docker 引擎 20.10.6 https://docs.docker.com/engine/release-notes/#20106
中修复
上述问题将导致 CPU 使用 docker(版本 <= 19)进程的异常峰值,并一直保持在该水平,直到您修复日志。
要修复日志和 cpu 用法,您必须截断所有容器日志(因为我们无法确定哪个容器有错误日志)。仅当您的日志采用 json 格式时才有效:
truncate -s 0 /var/lib/docker/containers/*/*-json.log
请参阅 Andre 的回答以获得永久修复。
Docker 守护程序无法解析 json 日志并抛出 unexpected EOF
错误。我们正在调查问题的根本原因。
环境:
- Debian 4.9.189-3+deb9u2
- Docker 引擎 19.03.5
Docker 守护进程日志:
Apr 29 14:31:05 Prod-IS dockerd[30810]: time="2020-04-29T14:31:05.070677515+02:00" level=warning msg="got error while decoding json" error="unexpected EOF" retries=345
Apr 29 14:31:05 Prod-IS dockerd[30810]: time="2020-04-29T14:31:05.070695689+02:00" level=warning msg="got error while decoding json" error="unexpected EOF" retries=346
Apr 29 14:31:05 Prod-IS dockerd[30810]: time="2020-04-29T14:31:05.070712630+02:00" level=warning msg="got error while decoding json" error="unexpected EOF" retries=347
Apr 29 14:31:05 Prod-IS dockerd[30810]: time="2020-04-29T14:31:05.070732299+02:00" level=warning msg="got error while decoding json" error="unexpected EOF" retries=348
Apr 29 14:31:05 Prod-IS dockerd[30810]: time="2020-04-29T14:31:05.070755016+02:00" level=warning msg="got error while decoding json" error="unexpected EOF" retries=349
Apr 29 14:31:05 Prod-IS dockerd[30810]: time="2020-04-29T14:31:05.070773699+02:00" level=warning msg="got error while decoding json" error="unexpected EOF" retries=350
Docker 守护程序配置
"log-driver": "json-file",
"log-opts": {
"mode": "non-blocking",
"max-size": "500m",
"max-file": "3"
}
存储 space 在 docker 写入其日志的分区上可用。
非常欢迎您就此事发表见解。
问题=Docker 引擎错误json-文件:修复偶发的意外 EOF 错误
我花了一些时间研究并试图找出 docker 中的错误 日志。
docker 引擎 20.10.5 中存在错误,即 docker 中的 运行 版本。 Github PR 修复了这个问题。 https://github.com/moby/moby/pull/42104
我在 运行
时发现错误$ journalctl -u docker.service
level=warning msg="got error while decoding json" error="unexpected EOF" retries=19999
Docker 日志驱动程序有一个错误,它无法处理某些日志格式。然后,该错误会用重试消息淹没系统日志。这种情况会产生非常烦人的 CPU 负载。
Docker 引擎最新版本是 20.10.7。此问题已在版本 Docker 引擎 20.10.6 https://docs.docker.com/engine/release-notes/#20106
中修复上述问题将导致 CPU 使用 docker(版本 <= 19)进程的异常峰值,并一直保持在该水平,直到您修复日志。
要修复日志和 cpu 用法,您必须截断所有容器日志(因为我们无法确定哪个容器有错误日志)。仅当您的日志采用 json 格式时才有效:
truncate -s 0 /var/lib/docker/containers/*/*-json.log
请参阅 Andre 的回答以获得永久修复。