Docker第八回(docker资源限制和验证)-创新互联
一、docker资源限制
创新互联公司是一家专业提供隰县企业网站建设,专注与成都网站建设、网站建设、H5高端网站建设、小程序制作等业务。10年已为隰县众多企业、政府机构等服务。创新互联专业的建站公司优惠进行中。docker能够运行起来要依赖于内核中的两个特性,namespaces和CGroups。默认情况下,容器是没有任何资源限制的,因此它能够耗尽主机上内核能分配给该容器的所有资源。因此,为了防止一个容器的运行中耗尽主机所有的资源,就需要用到资源限制。而资源限制的一些功能特性需要linux 内核支持 Linux Capabilities,在docker 1.13版本之前,只支持CFS schedule(Completely Fair Scheduler 完全公平调度器),之后的版本还支持realtime schedule
CFS schedule:每个进程都有优先级,非实时进程的优先级从100-139,CSF schedule是用来调度这些非实时进程的调度器,优先级高的进程会先被cpu执行
realtime schedule:实时进程调度器,进程的优先级从0-99,realtime schedule是专门调度实时进程的调度器
二、docker的memory、cpu资源限制参数
1、cpu限制
--cpus=
--cpu-shares:为容器按比例分配cpu资源,如果其他容器的cpu资源是空闲,那么容器1如果需要,将会使用所有cpu的资源,且将任务分配到任意核心处理
--cpuset-cpus:为容器指定可以使用的cpu核心是哪个,如果cpu是4和,那么按照编号0-3区分每一个核心,此参数设置为0,1即表示可以使用cpu的第一个和第二个核心。
2、memory以及swap限制
--memory=
--memory-swap:为容器指定最多可以使用多少swap空间,此选项必须要在使用了--memory参数的前提下才能使用,如果没有设置--memory参数,那么这个参数不会生效
-- memory-swappiness:设置容器使用swap的倾向性有多大,0-100。
-- memory-reservation:容器使用内存的软限制,这个指一定要设置的比--memory小,当系统内存紧张时,会回收掉此容器的memory值-reservation值的内存,让容器的内存使用降到reservation的标准
--oom-kill-disable:当容器内进程发生oom时,是否杀掉该容器
三、使用压测工具进行测试
1、测试内存
1.1、不限制cpu使用
[root@bogon ~]# docker container run --name stress -it --rm lorel/docker-stress-ng:latest --cpu 8 stress-ng: info: [1] defaulting to a 86400 second run per stressor stress-ng: info: [1] dispatching hogs: 8 cpu [root@bogon ~]# docker stats CONTAINER ID NAME CPU % MEM USAGE / LIMIT MEM % NET I/O BLOCK I/O PIDS 92b0b8d916c1 stress 101.54% 15.81MiB / 983.3MiB 1.61% 648B / 0B 0B / 0B 9 [root@bogon ~]# top top - 19:15:49 up 2 days, 2:38, 2 users, load average: 7.02, 3.00, 1.15 Tasks: 131 total, 10 running, 121 sleeping, 0 stopped, 0 zombie %Cpu(s): 99.7 us, 0.3 sy, 0.0 ni, 0.0 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st KiB Mem : 1006892 total, 100680 free, 320704 used, 585508 buff/cache KiB Swap: 2097148 total, 2096628 free, 520 used. 422732 avail Mem PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 40035 root 20 0 6908 4180 252 R 12.6 0.4 0:12.79 stress-ng-cpu 40037 root 20 0 6908 4180 252 R 12.6 0.4 0:12.78 stress-ng-cpu 40038 root 20 0 6908 2136 252 R 12.6 0.2 0:12.78 stress-ng-cpu 40040 root 20 0 6908 2136 252 R 12.6 0.2 0:12.78 stress-ng-cpu 40036 root 20 0 6908 2136 252 R 12.3 0.2 0:12.77 stress-ng-cpu 40039 root 20 0 6908 2136 252 R 12.3 0.2 0:12.78 stress-ng-cpu 40041 root 20 0 6908 4180 252 R 12.3 0.4 0:12.77 stress-ng-cpu 40042 root 20 0 6908 2136 252 R 12.3 0.2 0:12.77 stress-ng-cpu 1 root 20 0 128484 7208 4196 S 0.0 0.7 0:10.12 systemd可以看到,cpu使用已经满了
1.2、重新启动容器加入内存限制参数
[root@bogon ~]# docker container run --name stress --cpus=0.5 -it --rm lorel/docker-stress-ng:latest --cpu 8 stress-ng: info: [1] defaulting to a 86400 second run per stressor stress-ng: info: [1] dispatching hogs: 8 cpu [root@bogon ~]# docker stats CONTAINER ID NAME CPU % MEM USAGE / LIMIT MEM % NET I/O BLOCK I/O PIDS 845220ef9982 stress 51.57% 20.05MiB / 983.3MiB 2.04% 648B / 0B 0B / 0B 9设置的参数生效
2、测试内存
2.1、不限制内存使用,压测指定了2个内存,每个128m
[root@bogon ~]# docker container run --name stress -it --rm lorel/docker-stress-ng:latest --vm 2 --vm-bytes 128m stress-ng: info: [1] defaulting to a 86400 second run per stressor stress-ng: info: [1] dispatching hogs: 2 vm [root@bogon ~]# docker stats CONTAINER ID NAME CPU % MEM USAGE / LIMIT MEM % NET I/O BLOCK I/O PIDS beb3cfa10748 stress 99.29% 256.2MiB / 983.3MiB 26.05% 648B / 0B 0B / 0B 5而实际使用了256M内存
2.2、重新启动容器,加入内存限制
--memory限制容器只能使用128m内存
[root@bogon ~]# docker container run --name stress -it --memory=128m --rm lorel/docker-stress-ng:latest --vm 2 --vm-bytes 128m stress-ng: info: [1] defaulting to a 86400 second run per stressor stress-ng: info: [1] dispatching hogs: 2 vm [root@bogon ~]# docker stats CONTAINER ID NAME CPU % MEM USAGE / LIMIT MEM % NET I/O BLOCK I/O PIDS decee18cb471 stress 99.47% 126.4MiB / 128MiB 98.77% 648B / 0B 3.19MB / 461MB 5另外有需要云服务器可以了解下创新互联cdcxhl.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。
网站名称:Docker第八回(docker资源限制和验证)-创新互联
URL网址:http://scyanting.com/article/ccggdi.html