对线上docker应用内存进行优化,把原来存放在共享内存里的数据改成在磁盘存储,预计能减少5G的内存。
优化完成,在测试环境和开发环境进行测试,观测到docker stats内存下降了5G左右,符合预期。
但是当升级到线上时,docker容器镜像替换,确发现线上docker stats内存几乎没有改变,优化没有效果。
但是排查时发现,应该里的共享内存确实空了。机器上执行free -h 命令,也能观测到少了5G内存左右。初步怀疑docker stats统计有问题。
排查了docker stats源码发现,docker cli版本低于19.03时,docker stats命令不会统计到容器内的共享内存。
排查了测试机和本地虚拟机的docker版本,为20.10版本,线上为19.03版本。确定了时这个原因