Docker监控容器资源的占用情况

启动一个容器并限制资源

启动一个centos容器,限制其内存为1G ,可用cpu数为2

[[email protected] ~]# docker run --name os1 -it -m 1g --cpus=2 centos:latest bash

启动容器后,可以使用docker 的监控指令查看容器的运行状态

  • docker top 容器名: 查看容器的进程,不加容器名即查看所有
  • docker stats 容器名:查看容器的CPU,内存,IO 等使用信息
[[email protected] ~]# docker stats os1
CONTAINER ID        NAME                CPU %               MEM USAGE / LIMIT   MEM %               NET I/O             BLOCK I/O           PIDS
f9420cbbd2a9        os1                 45.94%              47.09MiB / 1GiB     4.60%               54.6MB / 352kB      0B / 21.1MB         3

安装stress

在容器中安装docker容器压测工具 stress

#先安装一些基础工具
[[email protected] /]# yum install wget gcc gcc-c++ make -y
#下载stress
[[email protected] ~]# wget http://people.seas.harvard.edu/~apw/stress/stress-1.0.4.tar.gz
#安装
[[email protected] ~]# tar zxf stress-1.0.4.tar.gz
[[email protected] ~]# cd stress-1.0.4
[[email protected] stress-1.0.4]./configure
[[email protected] stress-1.0.4]# make
[[email protected] stress-1.0.4]# make install

stress压测

在容器使用stress指令进行负载压测

[[email protected] ~]# stress  -m 1204m --vm 2
#模拟出4个繁忙的进程消耗cpu,然后使用-m 模拟进程最大使用的内存数1024,使用--vm 指定进程数

使用docker指令查看容器运行状态,可以os1容器的内存和cpu都得到了限制,即使给压测时超出了最大内存,也不会额外占用资源

[[email protected] ~]# docker stats os1
CONTAINER ID       NAME       CPU %            MEM USAGE / LIMIT  MEM %         NET I/O              BLOCK I/O           PIDS
f9420cbbd2a9        os1          127.46%          319.7MiB / 1GiB     31.22%        54.8MB / 356kB      0B / 33.6MB          9

Stress参数说明

-? 显示帮助信息
-v 显示版本号
-q 不显示运行信息
-n,--dry-run 显示已经完成的指令执行情况
-t --timeout N 指定运行N秒后停止
   --backoff N 等待N微妙后开始运行
-c --cpu 产生n个进程 每个进程都反复不停的计算随机数的平方根
-i --io  产生n个进程 每个进程反复调用sync(),sync()用于将内存上的内容写到硬盘上
-m --vm n 产生n个进程,每个进程不断调用内存分配malloc和内存释放free函数
   --vm-bytes B 指定malloc时内存的字节数 (默认256MB)
   --vm-hang N 指示每个消耗内存的进程在分配到内存后转入休眠状态,与正常的无限分配和释放内存的处理相反,这有利于模拟只有少量内存的机器
-d --hadd n 产生n个执行write和unlink函数的进程
   --hadd-bytes B 指定写的字节数,默认是1GB
   --hadd-noclean 不要将写入随机ASCII数据的文件Unlink
时间单位可以为秒s,分m,小时h,天d,年y,文件大小单位可以为K,M,G

Stress使用实例

  • 产生13个cpu进程4个io进程1分钟后停止运行
$ stress -c 13 -i 4 --verbose --timeout 1m
  • 产生3个cpu进程、3个io进程、2个10M的malloc()/free()进程,并且vm进程中malloc的字节不释放
$ stress --cpu 3 --io 3 --vm 2 --vm-bytes 10000000 --vm-keep --verbose
  • 测试硬盘,通过mkstemp()生成800K大小的文件写入硬盘,对CPU、内存的使用要求很低
$ stress -d 1 --hdd-noclean --hdd-bytes 800k
  • 产生13个进程,每个进程都反复不停的计算由rand ()产生随机数的平方根
$ stress -c 13
  • 产生1024个进程,仅显示出错信息
$ stress --quiet --cpu 1k
  • 产生4个进程,每个进程反复调用sync(),sync()用于将内存上的内容写到硬盘上
$ stress -i 4
  • 向磁盘中写入固定大小的文件,这个文件通过调用mkstemp()产生并保存在当前目录下,默认是文件产生后就被执行unlink(清除)操作,但是可以使用--hdd-bytes选项将产生的文件全部保存在当前目录下,这会将你的磁盘空间逐步耗尽
# 生成小文件
$ stress -d 1 --hdd-noclean --hdd-bytes 13

# 生成大文件
$ stress -d 1 --hdd-noclean --hdd-bytes 3G
 

原文地址:https://www.cnblogs.com/zhuochong/p/9729032.html

时间: 2024-08-01 12:29:53

Docker监控容器资源的占用情况的相关文章

如何监控 Tomcat 的内存占用情况

目录 1 JVM 内存模型中的区域 1.1 线程栈区 1.2 Java Heap 区 1.3 静态方法区 1.4 JDK 8.0中的元空间 2 JDK 工具的使用 3 查看 GC 日志信息 4 添加 JMS 远程监控 Tomcat 是运行在 JVM(Java Virtual Machine) 中的一个 Java 进程, 它在运行过程中对内存的占用情况, 可以借助一些 JDK 的工具进行监控, 为优化提供数据支撑. 1 JVM 内存模型中的区域 1.1 线程栈区 压入线程栈的每个栈帧(Stack

Docker 限制容器资源

默认情况下,容器没有资源的限制,它可以使用整个主机的所有资源.Dcoker提供了控制资源的方法, 多少内存,CPU,IO,都可以在docker run使用标志符来设置. 内存 Docker可以强制执行硬内存限制,允许容器使用不超过给定数量的用户或系统内存, 或软限制,允许容器使用所需的内存,除非满足某些条件,例如 内核检测到主机上的低内存或争用. 当单独使用或设置多个选项时,这些选项中的一些具有不同的效果. 选项 说明 -m or --memory= 容器能使用的最大的内存. 如果你设置了这个选

Docker Cgroup 容器资源限制

docker通过cgroup来控制容器使用的资源配额,包括CPU.内存.磁盘三大方面. 1.限制内存 查询系统中已经mount的cgroup的文件系统,这里的t表示type [[email protected] ~]# mount -t cgroup 搜索cgroup软件包 [[email protected] ~]# yum search cgroup 安装libcgroup [[email protected] ~]# yum install -y libcgroup-tools.x86_6

Docker监控:google/cadvisor

Docker自带了容器监控功能,可以对容器进行相关的性能监控,指标查看 主要包括: 主机的CPU情况和使用量 主机的内存情况和使用量 主机的本地镜像情况 主机的容器运行情况 常规使用docker ps -a   ,docker images命令查看后两者,当然docker stats命令就是监控相关容器实例情况. [[email protected] ~]# docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 14

docker容器资源限制及监控

docker stats name #查看容器的资源使用情况限制内存docker run -d -p 8088:8080 --name=monitor -m 200M hub.c.163.com/xbingo/cadvisor:latest限制容器运行在某个cpu上docker run -d -p 8088:8080 --name=monitor -m 200M --cpuset-cpus=0 hub.c.163.com/xbingo/cadvisor:latest #限制容器运行在第一颗cpu

Docker 监控实战 教你如何监控 Docker 容器内部

如今,越来越多的公司开始使用 Docker 了,现在来给大家看几组数据: 2 / 3 的公司在尝试了 Docker 后最终使用了它 也就是说 Docker 的转化率达到了 67%,而转化市场也控制在 60 天内. 越大型的公司越早开始使用 Docker 研究发现主机数量越多的公司,越早开始使用 Docker.而主机数量多,在这个研究里就默认等同于是大型公司了. Docker 优势 那为什么 Docker 越来越火呢?一谈起 Docker 总是会跟着让人联想到轻量这个词,甚至会有一种通过 Dock

docker容器资源配额控制之内存-io-数据映射

docker容器资源配额控制之内存-io-数据映射 当容器中服务或命令运行结束后,自动删除容器 作用:当容器命令运行结束后,自动删除容器.应用场景:在某些环境下,可能需要大量的新建docker虚拟机,然后仅仅运行几秒钟,然后就彻底删除.如运行单元测试等,测试弹性云计算,需要创建1万虚拟机,运行1小时,模拟双11的压力,1小时后自动删除. [[email protected] ~]# docker run -it --rm --name apeng centos sleep 5 [[email p

云智慧监控宝Docker监控功能评测

之前看到dockone社区<[实战]五个Docker监控工具的对比>(http://dockone.io/article/397)的文章,前两天也尝试了新上线的Docker监控工具监控宝.想按照文章中包含的六项指标,对监控宝做一个评价.评测项目包括: 1.部署的难易 2.信息呈现的详细度 3.部署过程中日志的聚集程度 4.告警能力 5.是否可以监控非Docker的资源 6.成本 1.部署的难易 监控宝的Docker监控部署是击中监控工具里最简单的,只需要将Docker监控采集器(SendPro

Docker运维必备:监控宝Docker监控试用手记

本文由肖远昊深度实践docker监控的报告   非常荣幸得到监控宝的邀请,试用了他们最近推出的新产品--Docker监控. 9月7日,中国APM厂商云智慧CloudWise正式发布上线Docker监控,该产品从部署到使用,整个过程都非常的简单.不仅能够实时监控宿主机和Docker容器的性能信息(包括CPU.Mem.磁盘.Net In/Out),还可以自定义相应的告警策略.以下将从部署.监控信息.告警这几个方面聊聊试用体会.大家可以[注册]监控宝,免费使用Docker监控. 部署流程 阅读了Doc