博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
树莓派+Docker+sysbench 进行压力测试
阅读量:3951 次
发布时间:2019-05-24

本文共 6860 字,大约阅读时间需要 22 分钟。

研一参加的老师一个项目,其中用到了Docker和树莓派。有一部分内容需要对树莓派native性能和树莓派上容器性能比较。

我用sysbench性能测试工具进行测试对照。其中因为树莓派是arm架构(我们当时买的是32位的树莓派4B(4GB+16GB内存卡),内存卡自带的32位Debian系统) 但是很多Docker镜像都是基于x86平台的,所以并不能很好的支持。所以一开始还是走了不少弯路。这里记录一下。

安装docker

下载安装脚本:

curl -fsSL https://get.docker.com -o get-docker.sh

使用阿里云镜像下载安装:

sh get-docker.sh --mirror Aliyun

执行脚本后会自动识别arm架构,下载安装对应版本docker,稍等片刻即可

将当前用户加入docker组:

sudo usermod -aG docker $USER

退出当前终端并重新登录,此时操作docker不再需要加sudo权限

安装docker-compose

因为树梅派是arm架构,docker-compose是没有提供官方的二进制文件的,所以我们要使用python的pip3工具来安装docker-compose

更新apt软件源:

sudo apt-get update

安装python和pip3(我的系统已经自带了,所以不用安装)

安装libffi-dev,否则在安装docker-compose的时候会报错:

sudo apt-get install -y libffi-dev

使用pip3安装docker-compose,临时使用中科大的软件源:

sudo pip3 install docker-compose -i https://pypi.mirrors.ustc.edu.cn/simple/  --trusted-host  pypi.mirrors.ustc.edu.cn

安装完成后,如果执行docker-compose命令提示找不到ssl_match_hostname:

需要把python3.6(具体哪个版本从控制台输出可以看出来)的dist-packages文件夹复制到docker的工作目录下:

sudo cp -r /usr/local/lib/python3.6/dist-packages/backports /usr/local/lib/python3.6/dist-packages/docker/transport/

docker镜像更改软件源

在树莓派docker中构建镜像时,如果要更改镜像软件源,使用案例如下:

FROM mcr.microsoft.com/dotnet/core/aspnet:3.0#安装ffmpeg工具RUN sed -i 's/deb.debian.org/mirrors.ustc.edu.cn/g' /etc/apt/sources.list \    && apt-get update \    && apt-get install -y ffmpeg \    && apt-get clean && apt-get autoclean && apt-get autoremove \    && rm -rf /var/lib/apt/lists/*WORKDIR /appCOPY ./publish/ /app #默认就是80端口,如果要别的端口,代码中要明确指定监听端口号EXPOSE 80EXPOSE 443ENTRYPOINT ["dotnet","WebMvc.dll"]

开放指定端口

树莓派使用的是iptables

开放80端口(注意eth0是网卡,如果是无线连接要改为wlan0):

sudo iptables -I INPUT -i eth0 -p tcp --dport 80 -j ACCEPTsudo iptables -I OUTPUT -o eth0 -p tcp --sport 80 -j ACCEPT

关闭80端口

sudo iptables -I INPUT -i eth0 -p tcp --dport 80 -j DROPsudo iptables -I OUTPUT -o eth0 -p tcp --sport 80 -j DROP

更换软件源

参考这里:


接下来是关于arm镜像

刚开始,我直接dcker search sysbench 发现搜到好多sysbench的镜像,就找starts最多的下几个。

pi@raspberrypi:~ $ docker search sysbenchNAME                             DESCRIPTION                                     STARS               OFFICIAL            AUTOMATEDseveralnines/sysbench            Sysbench 1.0                                    13                                      [OK]ljishen/sysbench                 SysBench (Version 1.0)                          5                                       [OK]percona/sysbench                                                                 5                                       dotnetdr/sysbench                sysbench 0.5 in centos docker images            2                                       [OK]ociotec/sysbench                 Container running a CPU sysbench in an infin…   1                                       rkourtz/sysbench                                                                 1                                       cwpinkerton/sysbench             MySQL 5.6 with SYSBENCH                         0                                       [OK]saied/sysbench                   Sysbench 1.1.0 built from source in an Ubunt…   0                                       dpitsoftware/sysbench            The sysbench software in older versions than…   0                                       diamantisolutions/sysbench                                                       0                                       jonhartley/sysbench-custom       Sysbench with some custome scripts              0                                       bretfisher/sysbench-docker-hpe   Sysbench and Docker Setups to Benchmark Phys…   0                                       [OK]quarriedstone/sysbench           Test sysbench                                   0                                       gigichen34/sysbench-1                                                            0                                       xridge/sysbench                  Docker image for running sysbench based benc…   0                                       lnsp/sysbench                                                                    0                                       sjclem/sysbench                  A basic debian-based sysbench image             0                                       fmanders/sysbench                                                                0                                       lamhaison/sysbench                                                               0                                       kongms/sysbench                                                                  0                                       sergeygals/sysbench              sysbench 1.0 with ubuntu 16.04                  0                                       [OK]senax/sysbench                   docker sysbench                                 0                                       perconalab/sysbench                                                              0                                       openmcp/sysbench-test                                                            0                                       hjalves/sysbench                 Sysbench 1.0 on Docker                          0                                       [OK]

然后创建容器的时候都会报错

pi@raspberrypi:~$ docker run severalnines/sysbench sysbench --test=cpu --cpu-max-prime=2000 runstandard_init_linux.go:211: exec user process caused "exec format error"

一查原因,是x86的镜像在arm平台不兼容。

但是怎么找arm架构的镜像呢?

忽然想起来一个原始的办法,我直接fq到Docker Hub上搜:sysbench,发现确实有支持arm的镜像!!!

在这里插入图片描述

比如:ociotec/sysbench

在这里插入图片描述

在这个镜像的Tags页面,就能查到它支持的平台,

有latest:支持linux/amd64 (x86架构)
有arm64:linux/arm (64位arm)
有arm32v7:linux/arm(32位arm)

最后一个就是我要找的,于是在终端pull的镜像后面加上这个tag:

pi@raspberrypi:~ $ docker pull ociotec/sysbench:arm32v7arm32v7: Pulling from ociotec/sysbenchbb075e02249b: Pull complete 8bf0ede911e1: Pull complete 7750415cbda1: Pull complete 26385376f7c2: Pull complete a477b6bc7981: Pull complete e925c413538a: Pull complete Digest: sha256:82c63b471ff1be8ddaf97a6e90230b668d76d82a7a3cb82db32430670c3a5108Status: Downloaded newer image for ociotec/sysbench:arm32v7docker.io/ociotec/sysbench:arm32v7

创建容器并运行(进行cpu测试):

pi@raspberrypi:~ $ docker run ociotec/sysbench:arm32v7 sysbench --test=cpu --cpu-max-prime=2000 runsysbench 0.4.12:  multi-threaded system evaluation benchmarkRunning the test with following options:Number of threads: 1Doing CPU performance benchmarkThreads started!Done.Maximum prime number checked in CPU test: 2000Test execution summary:    total time:                          10.4290s    total number of events:              10000    total time taken by event execution: 10.3878    per-request statistics:         min:                                  1.01ms         avg:                                  1.04ms         max:                                  2.69ms         approx.  95 percentile:               1.11msThreads fairness:    events (avg/stddev):           10000.0000/0.00    execution time (avg/stddev):   10.3878/0.00

完美!!!!!!!

转载地址:http://tjkzi.baihongyu.com/

你可能感兴趣的文章
开源ltr-es-7.6.2代码到本地idea打开出现各种错误总结
查看>>
Requests实践详解&& python通过连接开启https的elasticsearch7 服务器
查看>>
ES查询流程源码解析
查看>>
ldaps与ldap over TLS
查看>>
jvm为什么把-Xms和-Xmx的值设置成一样
查看>>
2021-01-21对map进行key或者value排序
查看>>
ConcurrentHashMap 1.7和1.8的区别
查看>>
阻塞锁与自旋锁
查看>>
【面试官:select语句和update语句分别是怎么执行的
查看>>
scala学习之安装问题
查看>>
LDAP常见错误码
查看>>
linux yum安装rpm包出现问题
查看>>
idea编译报错类似xxx.java:[85,65] 错误: 找不到符号
查看>>
ArrayList复制
查看>>
idea打开项目时,文件左下角显示橙色J
查看>>
SQL注入
查看>>
linux中ldconfig的使用介绍
查看>>
ldap适合入门学习
查看>>
ldap学习参考博客
查看>>
linux学习之source命令与alias(别名)使用
查看>>