cAdvisor监控Docker容器做性能测试

那年烟雨落申城
• 阅读 176

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=容器名: 代表给容器起一个别名

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

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

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

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

安装监控工具cAdvisor

执行压力测试肯定要监控资源使用情况,虽然top命令可以看,但毕竟看到的是Docker这个进程的使用情况,并不能真实反映Docker内部服务的,并且只是数据展示的话也不直观。Docker提供了docker stats 容器名/容器ID查看资源使用情况,效果如下: cAdvisor监控Docker容器做性能测试但看下来也不是很直观,那么有没有一个比较直观的工具呢,有,那就是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

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

效果

贴几张效果图 CPU: cAdvisor监控Docker容器做性能测试

内存: cAdvisor监控Docker容器做性能测试

Docker内部进程占用: cAdvisor监控Docker容器做性能测试

点赞
收藏
评论区
推荐文章
捉虫大师 捉虫大师
2年前
盘点golang中的开发神器
本文已收录https://github.com/lkxiaolou/lkxiaolou欢迎star。在Java中,我们用Junit做单元测试,用JMH做性能基准测试(benchmark),用asyncprofiler剖析cpu性能,用jstack、jmap、arthas等来排查问题。作为一名比较新的编程语言,golang的这些工具是否更加好用呢?单元测
good123 good123
2年前
奈学p7云原生架构师
云原生的概念主要是基于容器云,其主要原则是,软件产品从设计、开发到交付,全流程都考虑适配容器云的环境。传统的开发,是本地开发与测试,测试环境再次测试,然后部署上线,如果有上容器的需求,那么再编写Dcokerfile,做容器化改造,最后部署到容器云上云原生的产品,开发,测试和上线都是完全兼容容器云的环境,例如通过EclipseChe镜像开发,提交到git上,从
Stella981 Stella981
2年前
Apache Synapse 远程代码执行漏洞(CVE
!(https://oscimg.oschina.net/oscnet/435fc4cde65d4aee9a2efca3080cb89e.png)0x00事件背景ApacheSynapse是一个简单、轻量级的高性能企业服务总线(ESB),它是在ApacheSoftwareFoun
Stella981 Stella981
2年前
Nginx多进程高并发、低时延、高可靠机制在缓存(redis、memcache)twemproxy代理中的应用
_0\.手把手教你做中间件、高性能服务器、分布式存储技术交流群_手把手教你做中间件、高性能服务器、分布式存储等(redis、memcache、nginx、大容量redispika、rocksdb、mongodb、wiredtiger存储引擎、高性能代理中间件),git地址如下:git地址:https://github.com/y1234
Stella981 Stella981
2年前
Rancher3
官方说:Rancher是使用一系列的Docker容器进行部署的。运行Rancher跟启动两个容器一样简单。一个容器作为管理服务器部署,另外一个作为集群节点的Agent部署官方的意思是:学好docker基础是关键官方安装要求:!(https://oscimg.oschina.net/oscnet/79bdc381dc
Stella981 Stella981
2年前
Arthas 初探
由于在项目中遇到一种情况,某段代码在进行单元测试和在tomcat容器中运行的性能相差数百倍,因此需要分析在不同环境下某个方法执行的具体时间,从而确定问题。Arthas可以做到无侵入的监控应用远行情况。安装安装:wgethttps://alibaba.github.io/arthas/arthasboot.jarj
Wesley13 Wesley13
2年前
1. 容器化部署一套云服务 第一讲 Jenkins(Docker + Jenkins + Yii2 + 云服务器))
容器化部署一套云服务系列1\.容器化部署一套云服务之Jenkins(https://www.oschina.net/action/GoToLink?urlhttps%3A%2F%2Fwww.cnblogs.com%2Fjackson0714%2Fp%2Fdeploy1.html)一、购买服务器服务器!caeef00
Stella981 Stella981
2年前
Jmeter之java请求
ApacheJmeter是开源、易用的性能测试工具,之前工作中用过几次对http请求进行性能测试,对jmeter的基本操作有一些了解。最近接到开发的对java请求进行性能测试的需求,所以需要写java请求的脚本。Java请求的性能测试与http请求的性能测试类似,都是给远程应用提供的服务发送请求并施压,得到响应结果及性能数据。不同的是,http调用的是
Stella981 Stella981
2年前
Chapter 3准备:基础设施与TA框架
持续集成、自动化测试进一步要求软件研发有一个良好的环境支撑,即本章要讨论的基础设施,包括虚拟技术与Docker技术、基础设施即代码、持续集成环境、单元测试TA框架、系统测试TA框架、验收测试TA框架(包括需求实例化与BDD框架)、DevOps工具链等。3.1虚拟机与容器技术虚拟机大大提高服务器利用率从数据中心空间、机柜、网线、耗
3A网络 3A网络
1年前
docker中启动所有的容器命令
docker中启动所有的容器命令前提:在3A服务器上部署docker环境docker中启动所有的容器命令javascriptdockerstart$(dockerpsa|awk'print$1'|tailn2)docker中关闭所有的容器命令javascriptdockerstop$(dockerpsa|a