docker内存及cpu限制(不断总结中)

简介:

在一台物理机上启动了多个docker容器时,就需要对内存及cpu做出相关的限制,以达到容器互不影响的目的

限制内存:-m选项

注:限制内存后进入容器中(free -m)查看内存,显示的内存为物理机的内存

1
2
3
4
5
[root@localhost ~] # docker run -d -p 80 -m 200m --name nginx nginx
b1086dbc4e4a4230c6289d99230c8a6a37e9e28e993678303cb97acd7faa6a09
[root@localhost ~] # docker ps 
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                            NAMES
b1086dbc4e4a        nginx                "nginx -g 'daemon off"    3 seconds ago       Up 3 seconds        443 /tcp , 0.0.0.0:32768->80 /tcp    nginx

查看限制结果:docker stats命令

可以看到此容器的内存使用量以及最大可以内存

1
2
3
4
[root@localhost ~] # docker stats nginx
 
CONTAINER           CPU %               MEM USAGE / LIMIT     MEM %               NET I /O              BLOCK I /O            PIDS
nginx               0.00%               8.586 MiB / 200 MiB   4.29%               648 B / 648 B       6.926 MB / 0 B      0

wKioL1ibCSPR0EdzAAAqv7r1yPU743.png


限制cpu的使用个数:--cpuset-cpus

--cpuset-cpus使用方法:

    0,1,3,5:指定使用0,1,3,5的cpu

    0-3:使用0,1,2,3的cpu

1
[root@localhost ~] # docker run -d -p 80 --name nginx-test --cpuset-cpus=0 nginx

测试限制cpu是否成功:

注:限制cpu后进入容器中通过top查看的还是物理机的cpu

测试方法:agileek/cpuset-test

下载CPU测试image;agileek/cpuset-test给出了一种用于测试CPU的image,功能就是将指定的CPU资源用满

1
2
3
4
5
6
[root@localhost ~] # docker pull agileek/cpuset-test
Using default tag: latest
latest: Pulling from agileek /cpuset-test
ff9ec0a03b10: Pull complete 
Digest: sha256:ba93b1446b8a2e70850001ebc1679d5be41fc5700133eebc116db70c213835bd
Status: Downloaded newer image  for  agileek /cpuset-test :latest

测试--cpuset-cpus=0

1
[root@localhost ~] # docker run -it --rm --cpuset-cpus=0 agileek/cpuset-test

另开一窗口观察cpu的压力情况:mpstat -P ALL 3(mpstat安装包为sysstat)

可以看到cpu0的在完全占用的情况,其余的cpu并没有受到影响

由此判定--cpuset-cpus的高定生效了

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
[root@localhost ~] # mpstat -P ALL 3
Linux 3.10.0-229.el7.x86_64 (localhost.localdomain)  02 /08/2017      _x86_64_    (4 CPU)
 
03:16:38 PM  CPU    %usr   % nice     %sys %iowait    %irq   %soft  %steal  %guest  %gnice   %idle
03:16:41 PM  all   24.94    0.00    0.08    0.00    0.00    0.00    0.00    0.00    0.00   74.98
03:16:41 PM    0   99.67    0.00    0.33    0.00    0.00    0.00    0.00    0.00    0.00    0.00
03:16:41 PM    1    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00
03:16:41 PM    2    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00
03:16:41 PM    3    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00
 
03:16:41 PM  CPU    %usr   % nice     %sys %iowait    %irq   %soft  %steal  %guest  %gnice   %idle
03:16:44 PM  all   24.96    0.00    0.08    0.00    0.00    0.00    0.00    0.00    0.00   74.96
03:16:44 PM    0   99.67    0.00    0.33    0.00    0.00    0.00    0.00    0.00    0.00    0.00
03:16:44 PM    1    0.00    0.00    0.33    0.00    0.00    0.00    0.00    0.00    0.00   99.67
03:16:44 PM    2    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00
03:16:44 PM    3    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00

wKiom1ibDdmyZHXqAABeSP7G__c307.png 

也可以进入容器中写一个死循环,查看cpu利用情况:

1
2
3
4
5
6
[root@cff6c983451e tmp] # cat test.sh 
#!/bin/bash
i=0
while  true ; do
let  i++
done

本文转自激情燃烧的岁月博客51CTO博客,原文链接http://blog.51cto.com/liuzhengwei521/1896177如需转载请自行联系原作者

weilovepan520
相关文章
|
1月前
|
存储 缓存 监控
Docker容器性能调优的关键技巧,涵盖CPU、内存、网络及磁盘I/O的优化策略,结合实战案例,旨在帮助读者有效提升Docker容器的性能与稳定性。
本文介绍了Docker容器性能调优的关键技巧,涵盖CPU、内存、网络及磁盘I/O的优化策略,结合实战案例,旨在帮助读者有效提升Docker容器的性能与稳定性。
126 7
|
1月前
|
开发框架 .NET PHP
网站应用项目如何选择阿里云服务器实例规格+内存+CPU+带宽+操作系统等配置
对于使用阿里云服务器的搭建网站的用户来说,面对众多可选的实例规格和配置选项,我们应该如何做出最佳选择,以最大化业务效益并控制成本,成为大家比较关注的问题,如果实例、内存、CPU、带宽等配置选择不合适,可能会影响到自己业务在云服务器上的计算性能及后期运营状况,本文将详细解析企业在搭建网站应用项目时选购阿里云服务器应考虑的一些因素,以供参考。
|
2月前
|
弹性计算 Kubernetes Perl
k8s 设置pod 的cpu 和内存
在 Kubernetes (k8s) 中,设置 Pod 的 CPU 和内存资源限制和请求是非常重要的,因为这有助于确保集群资源的合理分配和有效利用。你可以通过定义 Pod 的 `resources` 字段来设置这些限制。 以下是一个示例 YAML 文件,展示了如何为一个 Pod 设置 CPU 和内存资源请求(requests)和限制(limits): ```yaml apiVersion: v1 kind: Pod metadata: name: example-pod spec: containers: - name: example-container image:
305 1
|
2月前
|
存储 关系型数据库 MySQL
查询服务器CPU、内存、磁盘、网络IO、队列、数据库占用空间等等信息
查询服务器CPU、内存、磁盘、网络IO、队列、数据库占用空间等等信息
878 2
|
4月前
|
存储 关系型数据库 MySQL
查询服务器CPU、内存、磁盘、网络IO、队列、数据库占用空间等等信息
查询服务器CPU、内存、磁盘、网络IO、队列、数据库占用空间等等信息
226 5
|
3月前
|
运维 JavaScript Linux
容器内的Nodejs应用如何获取宿主机的基础信息-系统、内存、cpu、启动时间,以及一个df -h的坑
本文介绍了如何在Docker容器内的Node.js应用中获取宿主机的基础信息,包括系统信息、内存使用情况、磁盘空间和启动时间等。核心思路是将宿主机的根目录挂载到容器,但需注意权限和安全问题。文章还提到了使用`df -P`替代`df -h`以获得一致性输出,避免解析错误。
|
3月前
|
C# 开发工具 Windows
C# 获取Windows系统信息以及CPU、内存和磁盘使用情况
C# 获取Windows系统信息以及CPU、内存和磁盘使用情况
91 0
|
4月前
|
Prometheus Kubernetes 监控
使用kubectl快速查看各个节点的CPU和内存占用量
在Kubernetes集群中,安装metrics-server,并使用kubectl快速查看集群中各个节点的资源使用情况。
336 0
|
5月前
|
存储 监控 Docker
如何限制docker使用的cpu,内存,存储
如何限制docker使用的cpu,内存,存储
|
Java Shell 应用服务中间件
Docker: 限制容器可用的内存
默认情况下容器使用的资源是不受限制的。也就是可以使用主机内核调度器所允许的最大资源。但是在容器的使用过程中,经常需要对容器可以使用的主机资源进行限制,本文介绍如何限制容器可以使用的主机内存。
2408 0

热门文章

最新文章

下一篇
开通oss服务