• cAdvisor监控Docker容器做性能测试


    cAdvisor监控Docker容器做性能测试

    缘起

    当前有个服务做技术选型,服务要求比较高的性能,要做性能测试。部署的环境是容器话部署,但申请新的容器流程较长,于是我打算在流程走完之前简单评估下性能,来确定技术选型是否可行。当前有一个测试服务器上装有Docker。

    Docker启动容器并部署

    将服务打包上传至服务器,启动一个Docker容器

    docker run -it -d -v /home/xxx:/opt -p 0.0.0.0:9002:8080 --name=test-service  debian11:latest
    # -i: 代表使用交互
    # -t: 代表打开一个终端
    # -d: 代表后台运行
    # -v: 代表挂载目录  冒号之前是本机目录,冒号之后是容器内部目录
    # -p: 端口映射 冒号之前是本机端口,冒号之后是容器端口
    # --name=容器名: 代表给容器起一个别名
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    启动完成后将服务的可执行文件上传至/home/xxx下,进入容器:

    docker exec -it test-service /bin/bash
    # -it同上
    # /bin/bash是打开/bin/bash作为交互的终端
    
    • 1
    • 2
    • 3

    进入后拷贝容器内/opt下的服务的可执行文件到发布目录,启动服务。
    给Docker加限制,使其和要求CPU,内存资源一致

    docker update --cpus 1 test-service
    docker update -m 1024M test-service
    
    • 1
    • 2

    安装监控工具cAdvisor

    执行压力测试肯定要监控资源使用情况,虽然top命令可以看,但毕竟看到的是Docker这个进程的使用情况,并不能真实反映Docker内部服务的,并且只是数据展示的话也不直观。Docker提供了docker stats 容器名/容器ID查看资源使用情况,效果如下:
    在这里插入图片描述但看下来也不是很直观,那么有没有一个比较直观的工具呢,有,那就是cAdvisor。
    github地址: https://github.com/google/cadvisor
    项目建议启动容器去查看:

    VERSION=v0.36.0 # use the latest release version from https://github.com/google/cadvisor/releases
    sudo docker run \
      --volume=/:/rootfs:ro \
      --volume=/var/run:/var/run:ro \
      --volume=/sys:/sys:ro \
      --volume=/var/lib/docker/:/var/lib/docker:ro \
      --volume=/dev/disk/:/dev/disk:ro \
      --publish=8080:8080 \
      --detach=true \
      --name=cadvisor \
      --privileged \
      --device=/dev/kmsg \
      gcr.io/cadvisor/cadvisor:$VERSION
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    我登陆上docker hub看了下,因为网络太卡就放弃,并且公司内网有限制,并不能去docker hub下载镜像,会被拦截。于是我在cAdvisor的releases翻了一下,发现有打好的二进制包,直接下载并启动
    在这里插入图片描述
    访问服务器的8080端口展示如下:
    在这里插入图片描述
    Subcontainers下面就是我启动的容器,点进去可以看到CPU,内存,磁盘等监控。

    效果

    贴几张效果图
    CPU:
    在这里插入图片描述

    内存:
    在这里插入图片描述

    Docker内部进程占用:
    在这里插入图片描述

  • 相关阅读:
    我的创作纪念日
    DHTMLX JavaScript 待办事项+To Do List
    【CMU15-445数据库】bustub Project #1:Buffer Pool
    LDAP协议工作原理
    多态(polymorphic)
    设计模式学习(十一):组合模式
    centos7安装mysql5.7
    深入理解JVM虚拟机第二十四篇:详解JVM当中的动态链接和常量池的作用
    LeetCode-775. 全局倒置与局部倒置【最小后缀,归纳】
    【JVM】字节码文件的组成部分
  • 原文地址:https://blog.csdn.net/u013014691/article/details/133952155