S920X00机器CentOS 7.6下大批量容器执行docker exec卡顿

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

无

相关推荐
刘马想放假10 分钟前
CANviz 使用指南|Linux 安装、DBC 解码、实时曲线与 J1939 实战
linux·python·websocket
kloc1 小时前
聊天室项目入口网关子服务的实现
linux·c++
GeW1 小时前
深圳APEC峰会倒计时:数据库与Linux运维的"隐形考场"
linux
duansamve3 小时前
Python3+Flask+PostgreSQL18+Vue3项目生产环境用docker如何部署?
python·docker·flask
梦到啥说啥3 小时前
Linux网络编程:UDP网络协议
linux·网络协议·udp
无足鸟ICT4 小时前
【RHCA+】ipcrm命令(删除IPC资源)
linux
星恒随风5 小时前
MySQL 从零入门(四):表的增删改查与基础查询详解
linux·服务器·数据库·笔记·mysql
陈希1238 小时前
Linux 网络诊断工具实战:ping、curl、tcpdump、mtr、dig 用法详解
linux·网络·tcpdump
进击的荆棘8 小时前
Linux系统——线程同步与互斥之线程池和安全
linux·运维·服务器·安全·单例模式·线程
刘大望8 小时前
不用买开发板:用 QEMU 走通嵌入式 Linux 全流程(三)存储与网络实地验证
linux·qemu·嵌入式linux·alpine