docker搭建图片压测QPS3000+服务器(ftp+nginx)
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资源要求很高,内存资源要求低。
docker搭建图片压测QPS3000+服务器(ftp+nginx)的更多相关文章
- 案例 | 荔枝微课基于 kubernetes 搭建分布式压测系统
王诚强,荔枝微课基础架构负责人.热衷于基础技术研发推广,致力于提供稳定高效的基础架构,推进了荔枝微课集群化从0到1的发展,云原生架构持续演进的实践者. 本文根据2021年4月10日深圳站举办的[腾讯云 ...
- 在Linux CentOS上搭建Jmeter压测环境
本文的主要内容是介绍如何在Linux CentOS 服务器上面搭建Jmeter的压测环境整个详细的流程,来满足我们日常工作中对于压力测试环境搭建.压力测试执行过程的需求. 一.首先我们要准备四个东西, ...
- jmeter 多机负载压测与服务器性能监测
环境: jmeter: apache-jmeter-3.3 jdk: 负载生成: 被测机: 一. 多机负载压测: 概述: 1.修改jmeter.properties配置文件 remote_hosts= ...
- Jmeter简单压测之服务器监控
此篇为最近工作需要到内容,故现在做一个总结. 最近家里电脑坏了,等待会公司空闲在编写. 文章构思中,敬请期待.......
- 业界压测平台与JMeter的对比
压测平台是什么? 压测,即压力测试,作用是对各种服务对象进行压力测试以获得该服务处于或超过预期负载时系统的运行情况,进而判断系统在峰值负载或超出最大负载情况下的处理能力. 压测工具,顾名思义,就是用来 ...
- .Net Core 商城微服务项目系列(六):搭建自己的Nuget包服务器
当我们使用微服务架构之后,紧接而来的问题便是服务之间的程序集引用问题,可能没接触过的同学不太理解这句话,都已经微服务化了为什么还要互相引用程序集,当然可以不引用.但是我们会有这样一种情况,我们的每个接 ...
- JMeter接口压测和性能监测
JMeter接口压力测试总结 一.安装JMeter 1. 在客户端机器上安装JMeter压测工具,我这里安装的版本是apache-jmeter-5.2.1,由于JMeter是JAVA语言开发的 ...
- nginx+ftp搭建图片服务器(Windows Server服务器环境下)
几种图片服务器的对比 1.直接使用ftp服务器,访问图片路径为 ftp://账户:密码@192.168.0.106/31275-105.jpg 不采用这种方式,不安全容易暴露ftp账户信息 2.直接使 ...
- 基于Docker搭建Nginx图片服务器
前言 一般开发中,都会把图片上传到一个目录,然后将目录和文件名拼接存储在数据库中,但是,这种方法如果没弄好的话可能有一定的缺陷. 若项目搬迁,即时这台服务器本身还在用,存放在服务器的跟项目相关的图片也 ...
- ftp&nginx搭建图片服务器
下面使用ftp+nginx搭建一个简单的服务器 ftp用于文件的传输 nginx提供http服务 nginx服务器的安装和配置可以参照之前的教程:nginx安装及其配置详细教程 下面介绍ftp服务的安 ...
随机推荐
- Adversarial Active Learning based Heterogeneous GNN for Fake news Detection-ICDM20
一.摘要 假新闻的爆炸性增长,以及对政治.经济和公共安全的破坏性影响,增加了对假新闻检测的需求.社交媒体上的假新闻并不是以文章的形式独立存在的.许多其他实体,如新闻创造者.新闻主题等,都存在于社交媒体 ...
- java 进阶P-3.3+P-3.4
Array list的操作 ArrayList 类是一个可以动态修改的数组,与普通数组的区别就是它是没有固定大小的限制,我们可以添加或删除元素.ArrayList 继承了 AbstractList , ...
- 在 MBP(Apple M1 Pro)上捣鼓友善 nanoPi R5S——【一、构建 rkdeveloptool】
在种草了很多天之后,最近终于在淘宝下单了友善 nanoPi R5S. 选择友善 nanoPi R5S 有两点主要理由: 1. 自带 EMMC 存储,可以使用 RockChip 提供的 MaskRom ...
- springboot使用EasyExcel,导出数据到Excel表格,并且将Excel表中数据导入
一.导出至Excel 1.导入依赖 导出方法需要使用到fastJson的依赖,这里也直接导入 点击查看代码 <!--阿里的easyexcel--> <dependency> & ...
- Linux实时同步
实时同步 一.概述 背景: 以前,通过rsync+定时任务实现对文件的定时备份/同步 现在,对于NFS来说,需要进行实时同步 选择: 分布式存储 使用实时同步服务+NFS 选择公有云对象存储OSS,七 ...
- typora配置图床
PicGo无法上传图片,报下图错误 Error: Error in repo name 这里我使用图床是gitee 上传之前需要安装插件 解决方法: 最后一步:配置typora, 点击验证图片选项,查 ...
- springboot集成ElasticApm
jvm参数方式: -javaagent:D:/codesoft/elastic-apm-agent-1.18.0.jar -Delastic.apm.service_name=my-applicati ...
- Docker安装SqlServer、Mysql、MariaDB
一.Docker 安装SqlServer 说明 1. 拉取镜像 docker pull mcr.microsoft.com/mssql/server:2019-latest 2.运行 docker r ...
- P23_列表渲染
列表渲染 wx:for 通过 wx:for 可以根据指定的数组,循环渲染重复的组件结构,语法示例如下: 默认情况下,当前循环项的索引用 index 表示:当前循环项用 item 表示. 手动指定索引和 ...
- 宇宙最强开发工具VScode简易手册
VS Code 的全称是 Visual Studio Code,是一款开源的.免费的.跨平台的.高性能的.轻量级的代码编辑器.它在性能.语言支持.开源社区方面,都做得很不错,是这两年非常热门的一款开发 ...