0

0

Linux 容器资源限制与性能优化

冷漠man

冷漠man

发布时间:2026-02-22 08:43:03

|

782人浏览过

|

来源于php中文网

原创

容器资源限制与性能优化需通过cgroups v2、docker cli、内核i/o调优、cpu隔离及监控动态调优五步实现:统一管控cpu/内存、设置合理硬限与软限、优化i/o调度与脏页策略、隔离cpu核心并关闭干扰特性、结合docker stats/cadvisor实时采集指标并自动扩容。

linux 容器资源限制与性能优化

如果您在运行 Linux 容器时发现应用响应迟缓、内存溢出或 CPU 占用异常,很可能是容器未设置合理的资源限制,或现有配置未能匹配实际负载需求。以下是针对资源限制与性能优化的具体操作方法:

一、使用 cgroups v2 限制 CPU 和内存

cgroups v2 提供统一、层级化的资源控制接口,可精确约束容器的 CPU 时间配额与内存上限,避免单个容器耗尽宿主机资源。

1、确认系统启用 cgroups v2:执行 mount | grep cgroup,输出中应包含 cgroup2 on /sys/fs/cgroup type cgroup2

2、为容器创建专用 cgroup 子树:运行 sudo mkdir -p /sys/fs/cgroup/container-app

3、设置 CPU 配额:执行 echo 50000 | sudo tee /sys/fs/cgroup/container-app/cpu.max(表示每 100ms 最多使用 50ms CPU 时间)。

4、设置内存上限:执行 echo 536870912 | sudo tee /sys/fs/cgroup/container-app/memory.max(即 512MB)。

5、将容器进程加入该 cgroup:获取容器主进程 PID 后,执行 echo [PID] | sudo tee /sys/fs/cgroup/container-app/cgroup.procs

二、通过 Docker CLI 应用资源限制

Docker 在启动时可直接传递 cgroups 参数,无需手动挂载,适用于快速部署场景且兼容性高。

1、限制 CPU 核心数:运行 docker run --cpus=1.5 nginx,限定最多使用 1.5 个逻辑 CPU 核心。

2、限制内存硬上限:运行 docker run --memory=768m --memory-swap=768m nginx,禁止使用 swap,总内存不超过 768MB。

3、设置内存预留与软限制:运行 docker run --memory-reservation=256m --memory=1g nginx,保障最低 256MB 可用,但硬上限为 1GB。

4、绑定 CPU 亲和性:运行 docker run --cpuset-cpus="0-1" nginx,强制容器仅在 CPU 0 和 CPU 1 上调度。

三、调整内核参数优化 I/O 性能

容器共享宿主机内核,某些默认 I/O 调度策略和缓冲区设置会加剧延迟,尤其在高并发磁盘读写场景下。

1、查看当前 I/O 调度器:执行 cat /sys/block/[device]/queue/scheduler(如 device 为 sda)。

Destoon B2B网站
Destoon B2B网站

Destoon B2B网站管理系统是一套完善的B2B(电子商务)行业门户解决方案。系统基于PHP+MySQL开发,采用B/S架构,模板与程序分离,源码开放。模型化的开发思路,可扩展或删除任何功能;创新的缓存技术与数据库设计,可负载千万级别数据容量及访问。 系统特性1、跨平台。支持Linux/Unix/Windows服务器,支持Apache/IIS/Zeus等2、跨浏览器。基于最新Web标准构建,在

下载

2、临时切换为 mq-deadline 调度器:运行 echo mq-deadline | sudo tee /sys/block/[device]/queue/scheduler

3、降低脏页刷新阈值:执行 echo 10 | sudo tee /proc/sys/vm/dirty_ratioecho 5 | sudo tee /proc/sys/vm/dirty_background_ratio,加快脏页回写频率。

4、禁用透明大页(THP):运行 echo never | sudo tee /sys/kernel/mm/transparent_hugepage/enabled,防止内存碎片与延迟尖峰。

四、启用 CPU 隔离并禁用非必要内核特性

CPU 隔离可确保容器独占指定核心,消除上下文切换干扰;关闭非必要内核服务可减少中断和调度开销。

1、启动时隔离 CPU:在 GRUB 配置中添加内核参数 isolcpus=managed_irq,domain,1,2,3,4 nohz_full=1,2,3,4 rcu_nocbs=1,2,3,4,然后更新 GRUB 并重启。

2、将容器绑定至隔离 CPU:使用 taskset -c 1-4 docker run ... 启动容器,确保其仅在 CPU 1–4 运行。

3、禁用 NUMA 平衡:运行 echo 0 | sudo tee /proc/sys/kernel/numa_balancing,避免跨节点内存迁移开销。

4、关闭 kswapd 内存回收线程(仅限内存充足且静态分配场景):执行 echo 0 | sudo tee /proc/sys/vm/swappiness

五、监控与动态调优容器资源使用

实时采集指标可识别资源瓶颈点,支撑按需调整限制值,避免过度限制导致性能下降或限制不足引发争抢。

1、获取容器实时资源数据:运行 docker stats --no-stream [container_id],查看 CPU%、MEM USAGE / LIMIT、NET I/O 等字段。

2、读取底层 cgroup 统计文件:访问 /sys/fs/cgroup/[path]/cpu.stat 获取 CPU 使用微秒数,或 /sys/fs/cgroup/[path]/memory.current 获取当前内存占用字节数。

3、使用 Prometheus + cAdvisor 抓取指标:部署 cAdvisor 容器并映射 -v /:/rootfs:ro -v /var/run:/var/run:rw,通过 HTTP 接口暴露容器级 metrics。

4、基于指标触发自动调整:编写脚本定期检查 memory.max_usage_in_bytes,若连续三次超过限额 90%,则调用 echo [new_value] > memory.max 动态扩容。

相关文章

数码产品性能查询
数码产品性能查询

该软件包括了市面上所有手机CPU,手机跑分情况,电脑CPU,电脑产品信息等等,方便需要大家查阅数码产品最新情况,了解产品特性,能够进行对比选择最具性价比的商品。

下载

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
nginx 重启
nginx 重启

nginx重启对于网站的运维来说是非常重要的,根据不同的需求,可以选择简单重启、平滑重启或定时重启等方式。本专题为大家提供nginx重启的相关的文章、下载、课程内容,供大家免费下载体验。

240

2023.07.27

nginx 配置详解
nginx 配置详解

Nginx的配置是指设置和调整Nginx服务器的行为和功能的过程。通过配置文件,可以定义虚拟主机、HTTP请求处理、反向代理、缓存和负载均衡等功能。Nginx的配置语法简洁而强大,允许管理员根据自己的需要进行灵活的调整。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

517

2023.08.04

nginx配置详解
nginx配置详解

NGINX与其他服务类似,因为它具有以特定格式编写的基于文本的配置文件。本专题为大家提供nginx配置相关的文章,大家可以免费学习。

566

2023.08.04

tomcat和nginx有哪些区别
tomcat和nginx有哪些区别

tomcat和nginx的区别:1、应用领域;2、性能;3、功能;4、配置;5、安全性;6、扩展性;7、部署复杂性;8、社区支持;9、成本;10、日志管理。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

242

2024.02.23

nginx报404怎么解决
nginx报404怎么解决

当访问 nginx 网页服务器时遇到 404 错误,表明服务器无法找到请求资源,可以通过以下步骤解决:1. 检查文件是否存在且路径正确;2. 检查文件权限并更改为 644 或 755;3. 检查 nginx 配置,确保根目录设置正确、没有冲突配置等等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

561

2024.07.09

Nginx报404错误解决方法
Nginx报404错误解决方法

解决方法:只需要加上这段配置:try_files $uri $uri/ /index.html;即可。想了解更多Nginx的相关内容,可以阅读本专题下面的文章。

3606

2024.08.07

nginx部署php项目教程汇总
nginx部署php项目教程汇总

本专题整合了nginx部署php项目教程汇总,阅读专题下面的文章了解更多详细内容。

49

2026.01.13

nginx配置文件详细教程
nginx配置文件详细教程

本专题整合了nginx配置文件相关教程详细汇总,阅读专题下面的文章了解更多详细内容。

67

2026.01.13

pixiv网页版官网登录与阅读指南_pixiv官网直达入口与在线访问方法
pixiv网页版官网登录与阅读指南_pixiv官网直达入口与在线访问方法

本专题系统整理pixiv网页版官网入口及登录访问方式,涵盖官网登录页面直达路径、在线阅读入口及快速进入方法说明,帮助用户高效找到pixiv官方网站,实现便捷、安全的网页端浏览与账号登录体验。

928

2026.02.13

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
PostgreSQL 教程
PostgreSQL 教程

共48课时 | 9.5万人学习

Git 教程
Git 教程

共21课时 | 3.8万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号