动态调整docker容器cpu资源

目的:动态调整系统cpu核数后,如何在不停止容器服务的情况下,docker动态使用最新的CPU资源

事件由来:

    1、在ucloud上购买了一台可以热升级的机器,热升级指的是动态更改系统cpu和内存资源

    2、随着业务的扩展,发现cpu、内存负载过高,需要在不停止业务的情况下动态扩容,因此使用了ucloud提供的热升级服务,从4核12G扩容为8核16G

    3、热升级了cpu和内存后,使用docker info,发现docker已经成功识别到8核16G资源

    4、容器中内存可以立马正常使用,但是容器中的所有进程还是跑在0-3cpu上,即没有使用到最新的cpu(4-7)

环境

 

 失败方案:

     1、docker container update --cpuset-cpus功能。发现调整后,容器中进程还是跑在旧cpu上

     2、taskset -pc 0-7 containerpid。发现调整后,显示还是使用0-3cpu

原因:

    1、/sys/fs/cgroup/cpuset/docker/cpuset.cpus限制了docker所创建的容器能够使用的cpu资源,该文件内容为0-3,

    2、容器资源受限于docker资源:使用taskset方式设置容器在宿主机上的pid资源,还是只能使用0-3,因为容器资源受docker资源影响

解决方案

    1、更改docker能够使用的cpu资源

    2、更改容器能够使用的cpu资源

具体操作步骤:

[[email protected]_node3 ~] cd /sys/fs/cgroup/cpuset/docker/

[[email protected]_node3 docker]# cat cpuset.cpus

0-3

#更改docker能够使用的cpu资源,因为容器的cpuset依赖于docker的cpuset内容
[[email protected]_node3 docker]# echo 0-7 cpuset.cpus

0-7 cpuset.cpus

[[email protected]_node3 docker]# echo 0-7 > cpuset.cpus

[[email protected]_node3 docker]# cat cpuset.cpus

0-7

[[email protected]_node3 docker]# docker ps

CONTAINER ID        IMAGE                       COMMAND             CREATED             STATUS              PORTS               NAMES

98d89fd476bf        server_game_ver:20190412b   "/start/run.sh"     7 hours ago         Up 7 hours          22/tcp              tt_server_game2_1

c6c5e3eb4e68        server_game_ver:20190412b   "/start/run.sh"     47 hours ago        Up 47 hours         22/tcp              wx_server_game1_1

[[email protected]_node3 ~]# cd /sys/fs/cgroup/cpuset/docker/98d89fd476bf2d495234398de50199fe48d8e6c6ee2ee67cf38c20133ef0f40c/

[[email protected]_node3 98d89fd476bf2d495234398de50199fe48d8e6c6ee2ee67cf38c20133ef0f40c] cat cpuset.cpus

0-3

#更改容器能够使用的cpu资源

[[email protected]_node3 98d89fd476bf2d495234398de50199fe48d8e6c6ee2ee67cf38c20133ef0f40c]# echo 0-7> cpuset.cpus

[[email protected]_node3 98d89fd476bf2d495234398de50199fe48d8e6c6ee2ee67cf38c20133ef0f40c]# cat cpuset.cpus

0-7


 

版权声明:本文为u014113686原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/u014113686/article/details/103201840

智能推荐

Composer 安装 ThinkPHP6 问题

Composer 安装 ThinkPHP6 问题 先说说问题 一.运行环境要求 二.配置 参考: ThinkPHP6.0完全开发手册 先说说问题 执行ThinkPHP6的安装命令 遇到问题汇总如下: 看提示是要更新版本,执行命令更新。 更新之后,再次安装ThinkPHP,之后遇到如下问题。 尝试了很多方法,依然不能解决。其中包括使用https://packagist.phpcomposer.com...

Spring Boot 整合JDBC

今天主要讲解一下SpringBoot如何整合JDBC,没啥理论好说的,直接上代码,看项目整体结构 看一下对应的pom.xml 定义User.java 定义数据源配置,这里使用druid,所以需要写一个配置类 上面指定druid的属性配置,和用户登录的账号信息以及对应的过滤规则: 下面定义数据访问接口和对应的实现: 数据访问层很简单,直接注入JdbcTemplate模板即可,下面再看对应的servi...

html鼠标悬停显示样式

1.显示小手:     在style中添加cursor:pointer 实现鼠标悬停变成小手样式     实例:         其他参数: cursor语法: cursor : auto | crosshair | default | hand | move | help | wait | tex...

Yupoo(又拍网)的系统架构

Yupoo!(又拍网) 是目前国内最大的图片服务提供商,整个网站构建于大量的开源软件之上。以下为其使用到的开源软件信息: 操作系统:CentOS、MacOSX、Ubuntu 服务器:Apache、Nginx、Squid 数据库:MySQLmochiweb、MySQLdb 服务器监控:Cacti、Nagios、 开发语言:PHP、Python、Erlang、Java、Lua 分布式计算:Hadoop...

创建一个Servlet项目流程(入门)

版本 IDEA 2020.2 JDK1.8 apache-tomcat-9.0.36 项目流程 一、IDEA中新建JaveEE项目 项目起名,选择项目存放地址,点击finish创建成功 进入项目后,右键选择项目,选择add Framework Support 选择Web Application,点击OK 此时项目文件夹 在WEB-INF下创建两个目录classes和lib 按ctrl+alt+sh...

猜你喜欢

Docker部署SpringCloud ELK+RabbitMQ日志

Docker部署SpringCloud ELK+RabbitMQ日志  Im_Coder 原文:https://www.jianshu.com/p/f773f23096a9 一、效果图 image.png 二、ELK是什么? ELK由ElasticSearch、Logstash和Kiabana三个开源工具组成。 其中Elasticsearch是个开源分布式搜索引擎,它的特点有:分布式,索...

[译]高性能缓存库Caffeine介绍及实践

概览 本文我们将介绍Caffeine-一个Java高性能缓存库。缓存和Map之间的一个根本区别是缓存会将储存的元素逐出。逐出策略决定了在什么时间应该删除哪些对象,逐出策略直接影响缓存的命中率,这是缓存库的关键特征。Caffeine使用Window TinyLfu逐出策略,该策略提供了接近最佳的命中率。 添加依赖 首先在pom.xml文件中添加Caffeine相关依赖: 您可以在Maven Cent...

Django开发微信公众号

一、微信公众号的准备: 1. 注册 访问地址:https://mp.weixin.qq.com/  按照提示注册即可  注意:本文样例使用个人公众号,由于个人公众号没有接口权限,自定义菜单无法进行开发,同学们不要注册错!  2. 配置 需要准备好自己的服务器地址,可以使用腾讯云阿里云京东云等等皆可,没有域名用IP也可以。  在公众平台官网的开发-基本设置页面...

vs2019实现makefile内容

vs全宇宙第一编译器,使用vs2019开发linux是很方便,但是怎么将makefile中的选项对应到vs2019的工程属性中呢?记录下踩过的坑,当然可以用cmake,共同缺点就是编译太慢 1.在vs工程属性中包含linux的系统头文件 我觉得在这里添加要合适一些,这里添加linux下的系统头文件,他会自动复制到window下 2.添加额外头文件路径, 当提示找不到头文件,但是有执行了上面的两条,...

Linux下分割PDF工具--PDFtk

发现一个Linux下分割、合并PDF的工具,记录一下。 官网是:https://www.pdflabs.com/tools/pdftk-server/#download 官方介绍如下: 安装方式很简单 常用命令...