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

相关推荐
滕州市燕猫虎计算机科技工作室个体工商户1 小时前
查看Docker里的日志
运维·docker·容器
JavaPub-rodert1 小时前
Docker Compose 实战:一键部署你的完整应用环境
运维·docker·容器
小此方1 小时前
Linux网络(九):从 URL 到 HTTP 报文:彻底搞懂 HTTP 请求与响应,并手写一个简单的 HTTP 服务器
linux·服务器·网络
前端世界1 小时前
Linux服务器实战:日志越来越大怎么办?用Logrotate+DNS解决日志管理与内网访问问题
linux·服务器·chrome
小此方1 小时前
Linux网络(十):HTTP请求是如何被服务器解析的?从请求报文、路径处理到响应状态码与异常处理
linux·服务器·网络
少司府1 小时前
Linux系统篇(一)指令篇·一:初识Linux及其基本指令
linux·运维·服务器·网络·阿里云·linux系统
Zixhy3 小时前
手撕Reactor模型实现同步高并发服务器及Muduo网络库深入解析
linux·服务器·网络·数据库·c++
迷途之人不知返3 小时前
【进程】-4-进程状态(2):Linux中的进程状态
linux
bosins12 小时前
WSL 迁移指南:如何将 Linux 环境完整复制到另一台电脑
linux·运维·服务器