dockerd High CPU

近日在维护的某业务系统中发现 dockerd 进程的 CPU 占用高达 55%

感觉上不太可能,开始排查

perf top -g -p <pid> 发现大量调用发生在 logger, json 读写等

1
2
github.com/docker/docker/daemon/logger/loggerutils.(*forwarder).Do
github.com/docker/docker/daemon/logger/jsonfilelog.(*decoder).Decode

docker 默认的 logging driver 为 json-file,json 的读写还是开销大啊!

反正重要的日志也有其它记录方式,不需要依赖 docker logs,果断切换日志记录方式

https://docs.docker.com/config/containers/logging/configure/#configure-the-default-logging-driver

1
2
3
{
"log-driver": "local"
}

重启 dockerd,效果显著,目前 CPU 占用小于 5%