Docker在CentOS上的性能如何提升
导读:Docker 在 CentOS 上的性能提升清单 一 基础与内核参数 提升文件描述符与内核资源上限:提高系统可打开文件数与网络/内存相关内核参数,避免“too many open files”、连接队列溢出等瓶颈。示例(写入 /etc/s...
Docker 在 CentOS 上的性能提升清单
一 基础与内核参数
- 提升文件描述符与内核资源上限:提高系统可打开文件数与网络/内存相关内核参数,避免“too many open files”、连接队列溢出等瓶颈。示例(写入 /etc/sysctl.conf 后执行 sysctl -p):
- fs.file-max = 2097152
- fs.inotify.max_user_watches = 524288
- net.core.somaxconn = 65535
- net.ipv4.tcp_max_syn_backlog = 65535
- net.ipv4.tcp_fin_timeout = 15
- net.ipv4.tcp_tw_reuse = 1
- vm.swappiness = 0(数据库/低延迟场景更稳;若需一定 swap 可设为 10)
- 启用并验证 cgroups v2(CentOS 9 推荐):统一资源模型、提升调度与限额一致性。
- GRUB_CMDLINE_LINUX=“systemd.unified_cgroup_hierarchy=1”
- 执行:grub2-mkconfig -o /boot/grub2/grub.cfg & & reboot
- 网络转发与桥接流量入 iptables:
- net.ipv4.ip_forward = 1
- net.bridge.bridge-nf-call-ip6tables = 1
- net.bridge.bridge-nf-call-iptables = 1
- 注意:加载 br_netfilter 模块后上述桥接规则才生效。
二 存储驱动与数据路径
- 使用 overlay2 存储驱动(CentOS 7/8/9 上性能与稳定性最佳,需内核 ≥ 4.0 且启用 overlay 模块)。在 /etc/docker/daemon.json 中配置:
- { “storage-driver”: “overlay2” }
- 将 Docker 根目录迁移至更快或更大磁盘(如 NVMe/SSD),减少 I/O 抖动:
- 停止 Docker:systemctl stop docker
- 迁移数据:mv /var/lib/docker /data/docker
- 软链:ln -sf /data/docker /var/lib/docker
- 启动 Docker:systemctl start docker
- 验证:docker info | grep “Docker Root Dir”
- 定期清理无用镜像/容器/网络/卷,降低碎片与空间压力:
- docker system prune -af --volumes。
三 容器资源限制与内存治理
- 为容器设置硬限制与 CPU 绑定,避免“吵闹邻居”与资源抢占:
- docker run -d --name app --memory=1g --cpus=1.0 --cpuset-cpus=0,2 myapp:latest
- 在 CentOS 7.9(cgroups v1) 上启用内存记账,避免容器无限制扩张触发宿主机 OOM:
- GRUB_CMDLINE_LINUX=“cgroup_enable=memory swapaccount=1”
- 执行:grub2-mkconfig -o /boot/grub2/grub.cfg & & reboot
- Java 应用需与容器限额匹配(JDK 8u191+ / 10+ 支持容器感知):
- JAVA_OPTS=“-Xms512m -Xmx1g -XX:+UseContainerSupport”
- 监控与告警:部署 cAdvisor + Prometheus + Grafana,对容器内存使用率设置阈值告警(如 > 80% 持续 2m),提前识别 OOM 风险。
四 网络与系统层优化
- 提升网络承载能力与短连接效率:
- 增大连接队列与复用 TIME_WAIT 连接(见“基础与内核参数”)。
- 启用网卡多队列与中断亲和性(提升高并发网络吞吐):
- ethtool -l eth0(查看 combined)
- ethtool -L eth0 combined 8
- echo 0-7 > /sys/class/net/eth0/device/msi_irqs/affinity
- 容器网络模式选择:
- 低延迟/高吞吐优先使用 host 网络;多主机覆盖网络按需使用 overlay。
- 防火墙与安全策略:
- 不建议直接关闭 firewalld/SELinux;按需放行端口与策略(如 firewalld-cmd --permanent --add-port=80/tcp & & firewall-cmd --reload),在合规与安全前提下获得接近直通的转发性能。
五 快速验证与落地顺序
- 基线采集:docker info、docker stats、ss -s、free -m、iostat -x 1、ip -s link,记录当前 P95/P99 延迟与 IOPS。
- 分层优化与 A/B 测试:
- 内核与文件描述符 → 2) 存储驱动与数据路径 → 3) 容器限额与内存治理 → 4) 网络队列与模式
- 回归验证:在相同压测场景下对比 QPS、P95/P99 延迟、错误率、OOM/重启次数与磁盘 I/O 等待。
- 持续观测:保留 cAdvisor/Prometheus/Grafana 看板与阈值告警,结合业务峰值做容量规划与滚动升级。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Docker在CentOS上的性能如何提升
本文地址: https://pptw.com/jishu/788083.html
