docker 搭建图片压测 QPS3000+ 服务器 (ftp+nginx)
- 在针对图片算法服务进行压力测试时,须要高性能的图片服务器
- 本人编写的图片利用性能不肯定能达到要求
- 可能因为图片利用本身达不到压测要求,影响算法服务的压测数据
筹备工作
须要在服务器先装置好 docker,性能后果看文章结尾
步骤
- 参数
我的项目 | key | value |
---|---|---|
地址 | IP | 192.168.0.2 |
ftp 用户名 | FTP_USERNAME | ftpuser |
ftp 明码 | FTP_PASSWORD | abc@123 |
宿主机保留目录 | FTP_PATH | /var/ftp |
ftp 地址 | FTP_URL | ftp://192.168.0.2/ |
图片申请地址 | PHOTO_URL | http://192.168.0.2/ftpuser/** |
- shell 中设置变量 (依据本人的理论参数去设置)
export IP=192.168.0.2 # 服务器 ip
export FTP_USERNAME=ftpuser # ftp 账号
export FTP_PASSWORD=abc@123 # ftp 明码
export FTP_PATH=/var/ftp # 图片上传根目录
export FTP_DOCKER_NAME=ftp # ftp 容器名称
export NGINX_DOCKER_NAME=nginx # nginx 容器名称
装置 ftp
- 创立文件目录
mkdir ${FTP_PATH}
- 启动容器
docker pull fauria/vsftpd
docker run -d \
--name ${FTP_DOCKER_NAME} \
--restart=always \
-p 20:20 \
-p 21:21 \
-p 21100-21110:21100-21110 \
-v ${FTP_PATH}:/home/vsftpd \
-e FTP_USER=${FTP_USERNAME} \
-e FTP_PASS=${FTP_PASSWORD} \
-e PASV_ADDRESS=${IP} \
-e PASV_MIN_PORT=21100 \
-e PASV_MAX_PORT=21110 \
fauria/vsftpd
装置 nginx
容器启动命令
docker pull nginx:latest
docker run -d \
--name ${NGINX_DOCKER_NAME} \
--restart=always \
-p 80:80 \
-v ${FTP_PATH}/${FTP_USERNAME}:/usr/share/nginx/html/${FTP_USERNAME} \
nginx:latest
重要配置!(nginx)
- 通过 ftp 上传的图片,拜访会报 403 无权限谬误
进入 nginx 容器,关上 /etc/nginx/nginx.conf 文件
将
user nginx;
改为
user root;
重启 nginx 容器
应用
-
关上文件资源管理器,地址栏输出 ftp 地址,输出账号密码,即可上传图片
ftp://${IP}/ # 即 ftp://192.168.0.2/
-
在浏览器中输出网页地址,,即可获取到图片
http://${IP}/${FTP_USERNAME}/${对应图片门路} # 即 http://192.168.0.2/ftpuser/${对应图片门路}
性能
应用测试 jmeter 进行压力测试,返回 200 状态码断定为胜利。
图片上传了 1000 张图片,循环获取继续 3 分钟
服务器配置
我的项目 | 配置 |
---|---|
零碎 | Ubuntu22.04 |
CPU | 4 核 |
内存 | 8G |
硬盘 | 120G |
网络 | 万兆内网 |
软件 | 新零碎零碎,仅装置 docker |
Jmeter、图片参数
我的项目 | 值 |
---|---|
线程数 | 1000 |
时长 | 180s(3min) |
图片分辨率 | 640*352 |
图片均匀大小 | 30 – 40 kb/ 张 |
Jmeter 后果
因为是单个申请,QPS=TPS=3257.8/sec
该压测过程中,运行 Jmeter 的电脑 CPU 100%,所以可能是运行电脑性能问题升高了压测后果,所以该后果仅供参考
Jmeter 原始报告如下:
Label | Sample | Average | Min | Max | std.Dev. | Error% | Throughput | Received KB/sec | Sent KB/sec | Avg. Bytes |
---|---|---|---|---|---|---|---|---|---|---|
TOTAL | 591303 | 302 | 1 | 70716 | 341.85 | 0.00% | 3257.8/sec | 102582.08 | 555.42 | 32243.4 |
服务器参数
以下统计应用 MobaXterm 软件连贯工具数值,非专业工具,仅供参考
我的项目 | 状态 | 数值 |
---|---|---|
CPU | 压测前 | 0% |
CPU | 压测中 | 40% – 70% |
内存 | 压测前 | 0.76G |
内存 | 压测中 | 0.77G |
总内存 | – | 7.75G |
Upload | 压测前 | 0.01 Mb/s |
Upload | 压测中 | 965.55 Mb/s |
Download | 压测前 | 0.01 Mb/s |
Download | 压测中 | 1871.02 Mb/s |
总结
该形式搭建的图片服务器能够满足大部分压测场景,服务器 CPU 资源要求很高,内存资源要求低。