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服务的安 ...
随机推荐
- [C#]关于override和new在重写方法时的区别
规则: 在"运行时"遇到虚方法时,对象会调用虚成员派生得最远的.重写的实现. 如果是用new修饰符实现的方法,它会在基类面前隐藏派生类重新声明的成员,这时候会找到使用new修饰符的 ...
- 2023牛客寒假算法基础集训营1 ACDEFGHKLM
比赛链接 A 题解 知识点:模拟. 显然. (用char输入到一半直接给答案跳出,WA了两小时,无话可说. 时间复杂度 \(O(1)\) 空间复杂度 \(O(1)\) 代码 #include < ...
- MAC 安装homebrew最好的办法哦~~
Command+Shift+. 可以显示隐藏文件.文件夹,再按一次,恢复隐藏:finder下使用Command+Shift+G 可以前往任何文件夹,包括隐藏文件夹. 常用指令如下 cd ~ 进入根 ...
- 结构型模式 - 外观模式Facade
1.tm的NT审核机制,满篇文章哪来的广告? 就算有也是你们自己加的吧?等财富能支持我自己的网站后,就是和你们说再见之时. 2.tm第二遍说,我接着提交,这个审核机制的傻逼设计者或者是程序敲出来的bu ...
- 如何找到CSDN中关注的用户和粉丝?
如何找到CSDN中关注的用户和粉丝? 刚刚在CSDN个人账号里找了半天都没找到自己关注的人 对CSDN的页面更新感到很迷, 个人账号管理很不人性化, 或者说是根本找不到自己关注的用户以及关注自己的粉丝 ...
- 【随笔记】NDK 编译开源库 SQLite3
NDK 编译环境搭建请参考:[工作笔记]NDK 编译开源库 nghttp2/openssl/curl_lovemengx的博客-CSDN博客 一.下载源代码 wget https://github.c ...
- Fabric2.x中Raft共识算法核心数据结构
一.共识算法可插拔的代码体现Chain接口 Hyperledger Fabric的共识算法是可插拔的,在代码上体现为Chain接口,所有不同的共识算法均可根据Chain接口进行具体实现,目前fabri ...
- 生成式AI对业务流程有哪些影响?企业如何应用生成式AI?一文看懂
集成与融合类ChatGPT工具与技术,以生成式AI变革业务流程 ChatGPT背后的生成式AI,聊聊生成式AI如何改变业务流程 ChatGPT月活用户过亿,生成式AI对组织的业务流程有哪些影响? 生成 ...
- (二) MdbCluster分布式内存数据库——分布式架构1
(二) MdbCluster分布式内存数据库--分布式架构1 分布式架构是MdbCluster的核心关键,业界有很多相关的实现,却很少有文章详细的解释每个架构实现背后的细节和这么做的原因.在Mdb ...
- VMwarestation安装centos系统
上机实验1 1.软硬件准备 软件:推荐使用vmware 镜像:centos7下载网址https://mirror.iscas.ac.cn/centos/7/isos/x86_64/ 这个镜像网址实测比 ...