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服务的安 ...
随机推荐
- 8KB的C#贪吃蛇游戏热点答疑和.NET7版本
在之前的一篇文章<看我是如何用C#编写一个小于8KB的贪吃蛇游戏>中,介绍了在.NET Core 3.0的环境下如何将贪吃蛇游戏降低到8KB.不过也有很多小伙伴提出了一些疑问和看法,主要是 ...
- 【高并发】AQS中的CountDownLatch、Semaphore与CyclicBarrier用法总结
CountDownLatch 概述 同步辅助类,通过它可以阻塞当前线程.也就是说,能够实现一个线程或者多个线程一直等待,直到其他线程执行的操作完成.使用一个给定的计数器进行初始化,该计数器的操作是原子 ...
- 分布式协议与算法-Paxos算法
1.Basic Paxos 假设我们要实现一个分布式集群,这个集群是由节点 A.B.C 组成,提供只读 KV 存储服务.你应该知道,创建只读变量的时候,必须要对它进行赋值,而且这个值后续没办法修改.因 ...
- java入门与进阶P-5.5+P-5.6
投票统计 写一个程序,输入数量不确定的[0,9]范围内的整数,统计每一中数字出现的次数,输入-1表示结束 循环遍历 通常都是使用for循环,让循环变量i从0到<数组的length,这样循环体内最 ...
- 【开源】libinimini:适用于单片机的极简 ini 解析库
介绍说明 最近自己基于 XR872 在做一个小作品练习练习,具备可以配置的功能,选择了使用 ini 作为配置文件.我调研了网上常见的 ini 解析库,几乎都涉及到了 fopen()/fgets().. ...
- VeryCapture V1.8.9.5 中文版安装使用教程
VeryCapture简介 VeryCapture中文版是一款实用的屏幕捕捉工具.VeryCapture最新版持将图钉在桌面.这个功能可以方便图片对比,在写论文或者写文章时比较方便.VeryCaptu ...
- window系统增强优化工具
计算机系统优化的作用很多,它可以清理WINDOWS临时文件夹中的临时文件,释放硬盘空间:可以清理注册表里的垃圾文件,减少系统错误的产生:它还能加快开机速度,阻止一些程序开机自动执行:还可以加快上网和关 ...
- 利用Git+GitHub进行团队协作开发
自己之前写过两篇关于Git和GItHub使用的文章,分别是 浅谈使用git 进行版本控制博客链接:https://www.cnblogs.com/wj-1314/p/7992543.html 使用Gi ...
- flutter系列之:在flutter中使用导航Navigator
目录 简介 flutter中的Navigator Navigator的使用 总结 简介 一个APP如果没有页面跳转那么是没有灵魂的,页面跳转的一个常用说法就是Navigator,flutter作为一个 ...
- JAVA 进阶第一阶段 59-69
10/10号笔记 私有与公共 用private在类中定义的成员变量 只有在这个类的内部才支持访问和编写 public 公共的 用这个定义的在任何地方都可以访问 比如public calss clock ...