启动一个centos容器,限制其内存为1G ,可用cpu数为2c++
[root@localhost ~]# docker run --name os1 -it -m 1g --cpus=2 centos:latest bash
启动容器后,能够使用docker 的监控指令查看容器的运行状态docker
[root@localhost ~]# 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
在容器中安装docker容器压测工具 stressshell
#先安装一些基础工具 [root@f9420cbbd2a9 /]# yum install wget gcc gcc-c++ make -y #下载stress [root@f9420cbbd2a9 ~]# wget http://people.seas.harvard.edu/~apw/stress/stress-1.0.4.tar.gz #安装 [root@f9420cbbd2a9 ~]# tar zxf stress-1.0.4.tar.gz [root@f9420cbbd2a9 ~]# cd stress-1.0.4 [root@f9420cbbd2a9 stress-1.0.4]./configure [root@f9420cbbd2a9 stress-1.0.4]# make [root@f9420cbbd2a9 stress-1.0.4]# make install
在容器使用stress指令进行负载压测centos
[root@f9420cbbd2a9 ~]# stress -m 1204m --vm 2
#模拟出4个繁忙的进程消耗cpu,而后使用-m 模拟进程最大使用的内存数1024,使用--vm 指定进程数
使用docker指令查看容器运行状态,能够os1容器的内存和cpu都获得了限制,即便给压测时超出了最大内存,也不会额外占用资源bash
[root@localhost ~]# 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
-? 显示帮助信息 -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
产生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 ()产生随机数的平方根ui
$ stress -c 13
产生1024个进程,仅显示出错信息spa
$ 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