天天看点

Docker下使用stress进行压力测试

1、下载一个stress压力工具的镜像

<code>[root@docker ~]</code><code># docker pull joedval/stress</code>

<code>Pulling repository joedval</code><code>/stress</code>

<code>7eb627cb08a2: Download complete </code>

<code>b0082ba983ef: Download complete </code>

<code>109b72e23ca5: Download complete </code>

<code>a1a076997d57: Download complete </code>

<code>Status: Downloaded newer image </code><code>for</code> <code>joedval</code><code>/stress</code><code>:latest</code>

2、随机生成一个以“joedval/stress”镜像为基础的容器,设定权级为512

<code>[root@docker ~]</code><code># docker run -it --rm -c 512 joedval/stress --cpu 1</code>

<code>stress: info: [1] dispatching hogs: 1 cpu, 0 io, 0 vm, 0 hdd</code>

<code>可以看到cpu占用为99.6%,接近100%</code>

<code>[root@docker ~]</code><code># top</code>

<code>top</code> <code>- 15:19:07 up  1:04,  3 </code><code>users</code><code>,  load average: 1.62, 1.03, 0.43</code>

<code>Tasks: 158 total,   2 running, 156 sleeping,   0 stopped,   0 zombie</code>

<code>Cpu(s): 99.3%us,  0.3%sy,  0.0%ni,  0.0%</code><code>id</code><code>,  0.0%wa,  0.3%hi,  0.0%si,  0.0%st</code>

<code>Mem:   3910160k total,  1289624k used,  2620536k </code><code>free</code><code>,    96856k buffers</code>

<code>Swap:  4194300k total,        0k used,  4194300k </code><code>free</code><code>,   914440k cached</code>

<code>   </code><code>PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND                                                                              </code>

<code>  </code><code>4144 root      20   0  7208  120   28 R 99.6  0.0   2:58.09 stress                                                                                </code>

<code>  </code><code>4403 root      20   0 15032 1252  924 R  0.3  0.0   0:00.32 </code><code>top</code>                                                                                   

<code>     </code><code>1 root      20   0 19356 1532 1228 S  0.0  0.0   0:01.55 init                                                                                  </code>

<code>     </code><code>2 root      20   0     0    0    0 S  0.0  0.0   0:00.00 kthreadd                                                                              </code>

<code>     </code><code>3 root      RT   0     0    0    0 S  0.0  0.0   0:00.00 migration</code><code>/0</code>                                                                           

<code>     </code><code>4 root      20   0     0    0    0 S  0.0  0.0   0:00.03 ksoftirqd</code><code>/0</code>                                                                           

<code>     </code><code>5 root      RT   0     0    0    0 S  0.0  0.0   0:00.00 stopper</code><code>/0</code>                                                                             

<code>     </code><code>6 root      RT   0     0    0    0 S  0.0  0.0   0:00.02 watchdog</code><code>/0</code>                                                                            

<code>     </code><code>7 root      20   0     0    0    0 S  0.0  0.0   0:01.62 events</code><code>/0</code>                                                                              

<code>     </code><code>8 root      20   0     0    0    0 S  0.0  0.0   0:00.00 events</code><code>/0</code>                                                                              

<code>     </code><code>9 root      20   0     0    0    0 S  0.0  0.0   0:00.00 events_long</code><code>/0</code>                                                                         

<code>    </code><code>10 root      20   0     0    0    0 S  0.0  0.0   0:00.00 events_power_ef                                                                       </code>

<code>    </code><code>11 root      20   0     0    0    0 S  0.0  0.0   0:00.00 cgroup                                                                                </code>

<code>    </code><code>12 root      20   0     0    0    0 S  0.0  0.0   0:00.00 khelper                                                                               </code>

<code>    </code><code>13 root      20   0     0    0    0 S  0.0  0.0   0:00.03 netns                                                                                 </code>

<code>    </code><code>14 root      20   0     0    0    0 S  0.0  0.0   0:00.00 async</code><code>/mgr</code>                                                                             

<code>    </code><code>15 root      20   0     0    0    0 S  0.0  0.0   0:00.00 pm                                                                                    </code>

<code>    </code><code>16 root      20   0     0    0    0 S  0.0  0.0   0:00.02 sync_supers                                                                           </code>

<code>    </code><code>17 root      20   0     0    0    0 S  0.0  0.0   0:00.01 bdi-default</code>

3、继续生成一个容器

<code>root@docker ~]</code><code># docker run -it --rm -c 512 joedval/stress --cpu 1</code>

<code>top</code> <code>- 15:20:48 up  1:05,  3 </code><code>users</code><code>,  load average: 1.55, 1.13, 0.52</code>

<code>Tasks: 164 total,   3 running, 161 sleeping,   0 stopped,   0 zombie</code>

<code>Cpu(s): 99.0%us,  0.7%sy,  0.0%ni,  0.0%</code><code>id</code><code>,  0.0%wa,  0.3%hi,  0.0%si,  0.0%st</code>

<code>Mem:   3910160k total,  1298324k used,  2611836k </code><code>free</code><code>,    97924k buffers</code>

<code>Swap:  4194300k total,        0k used,  4194300k </code><code>free</code><code>,   917480k cached</code>

<code>  </code><code>4772 root      20   0  7208  124   28 R 49.9  0.0   0:16.12 stress                                                                                </code>

<code>  </code><code>4144 root      20   0  7208  120   28 R 49.5  0.0   4:22.39 stress                                                                                </code>

<code>     </code><code>7 root      20   0     0    0    0 S  0.0  0.0   0:01.66 events</code><code>/0</code>                                                                              

<code>    </code><code>17 root      20   0     0    0    0 S  0.0  0.0   0:00.01 bdi-default        </code>

<code>然后,可以发现存在两个stress的进程,各占用49.5%</code>

<code>我们再次添加一个容器,并修改下stress权限为1024</code>

<code>top</code> <code>- 15:22:13 up  1:07,  4 </code><code>users</code><code>,  load average: 2.53, 1.50, 0.70</code>

<code>Tasks: 171 total,   4 running, 167 sleeping,   0 stopped,   0 zombie</code>

<code>Mem:   3910160k total,  1318152k used,  2592008k </code><code>free</code><code>,    99008k buffers</code>

<code>Swap:  4194300k total,        0k used,  4194300k </code><code>free</code><code>,   921024k cached</code>

<code>  </code><code>4992 root      20   0  7208  120   28 R 49.5  0.0   0:09.79 stress                                                                                </code>

<code>  </code><code>4144 root      20   0  7208  120   28 R 24.9  0.0   4:59.56 stress                                                                                </code>

<code>  </code><code>4772 root      20   0  7208  124   28 R 24.6  0.0   0:53.28 stress                                                                                </code>

<code>     </code><code>2 root      20   0     0    0    0 S  0.0  0.0   0:00.01 kthreadd                                                                              </code>

<code>     </code><code>7 root      20   0     0    0    0 S  0.0  0.0   0:01.69 events</code><code>/0</code>                                                                              

<code>    </code><code>16 root      20   0     0    0    0 S  0.0  0.0   0:00.02 sync_supers</code>

4、查看容器信息:

<code>[root@docker ~]</code><code># docker ps -a</code>

<code>CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                      PORTS               NAMES</code>

<code>fcc6cb7b064c        joedval</code><code>/stress</code>      <code>"stress --cpu 1"</code>    <code>29 seconds ago      Up 28 seconds                                   drunk_rosalind      </code>

<code>7c195fe2e038        joedval</code><code>/stress</code>      <code>"stress --cpu 1"</code>    <code>2 minutes ago       Up 2 minutes                                    loving_galileo      </code>

<code>9b19fbca489b        joedval</code><code>/stress</code>      <code>"stress --cpu 1"</code>    <code>7 minutes ago       Up 7 minutes                                    furious_rosalind</code>

5、测试内存:

<code>[root@docker ~]</code><code># docker run -it --rm -m 128m joedval/stress --vm 1 --vm-bytes 120m --vm-hang 0</code>

<code>stress: info: [1] dispatching hogs: 0 cpu, 0 io, 1 vm, 0 hdd</code>

<code>[root@docker ~]</code><code># docker ps -l</code>

<code>CONTAINER ID        IMAGE               COMMAND                CREATED             STATUS              PORTS               NAMES</code>

<code>9841ee711d7f        joedval</code><code>/stress</code>      <code>"stress --vm 1 --vm-   8 seconds ago       Up 6 seconds                            boring_jones       </code>

<code>[root@docker ~]</code><code># docker run -it --rm -m 128m joedval/stress --vm 1 --vm-bytes 512m --vm-hang 0</code>

<code>stress: FAIL: [1] (415) &lt;-- worker 5 got signal 9</code>

<code>stress: WARN: [1] (417) now reaping child worker processes</code>

<code>stress: FAIL: [1] (421) </code><code>kill</code> <code>error: No such process</code>

<code>stress: FAIL: [1] (451) failed run completed </code><code>in</code> <code>3s</code>

<code>[root@docker ~]</code><code># docker run -it --rm -m 128m joedval/stress --vm 1 --vm-bytes 255m --vm-hang 0</code>

<code>[root@docker ~]</code><code># docker run -it --rm -m 128m joedval/stress --vm 1 --vm-bytes 256m --vm-hang 0</code>

<code>stress: FAIL: [1] (415) &lt;-- worker 6 got signal 9</code>

<code>stress: FAIL: [1] (451) failed run completed </code><code>in</code> <code>2s</code>

<code>说明:不能超过预设值的两倍(比如上面案例中256m是128m,所以自动退出了)</code>

本文转自 冰冻vs西瓜 51CTO博客,原文链接:http://blog.51cto.com/molewan/1757918,如需转载请自行联系原作者