1 S920X00机器CentOS 7.6下大批量容器执行docker exec卡顿
问题现象描述Symptom
**硬件配置:**现场一批400+台S920X00机器,使用CentOS 7.6,内核版本4.14,docker使用OS自带的1.13版本
**问题现象:**现场一台机器上创建大量docker容器,批量执行docker exec命令发生卡顿

关键过程、根本原因分析Key Process and Cause Analysis
关键过程:
(1)实验室部署镜像环境,使用1.13版本docker,创建54个docker容器,运行脚本循环调用docker exec命令,出现docker exec命令卡顿


(2)抓了进程火焰图发现进程在启动时耗时较长(__start),st复现问题后打印卡死进程堆栈发现进程有卡在epoll_wait和futex_wait函数的2种状态,strace抓到也是这两个函数耗时高,增加go pprof、gdb均排查到大量线程卡在runtime.futex中



(3)使用新版本的docker 26.1.4版本测试发现问题解决,定界该问题属于软件问题,已与客户同步

同时发现一个patch与此相关,https://github.com/moby/moby/pull/45625,合入patch可以改善卡顿现象,但是无法完全解决,只能说从docker 1.13到26.1.4中间版本太多了,这个版本是24.06合入的,尝试在24.01上验证也是OK的。

根本原因分析:
docker老版本问题,升级docker版本解决问题,当前问题涉及版本1.13,验证解决问题版本24.01
规避方案为绕过docker形式直接nsenter进入容器
结论、解决方案及效果Conclusion and Solution
结论:
docker老版本问题,升级docker版本解决问题
解决方案:
docker老版本问题,升级docker版本解决问题
规避方案为绕过docker形式直接nsenter进入容器
经验总结、预防措施和规范建议Experience
无
备注Remarks
enter进入容器
经验总结、预防措施和规范建议Experience
无
备注Remarks
无