图床项目之公网发布和测试

news/2024/5/19 3:24:33/文章来源:https://blog.csdn.net/Long_xu/article/details/127860303

项目发布和测试

  • 一、http服务测试
    • 1.1、ab http压力测试
    • 1.2、post测试(注册请求和登录请求)
  • 二、性能测试
    • 2.1、生成测试脚本
    • 2.2、上传测试
      • 2.2.1、单客户端测试本地上传到本机服务器
      • 2.2.2、如果使用集群的方式进行测试
    • 2.3、下载测试
    • 2.4、删除测试
    • 2.5、测试性能总结
      • 2.5.1 上传文件
      • 2.5.2、下载文件
  • 总结

一、http服务测试

在这里插入图片描述

启动项目,使用ab命令进行http请求测试。

1.1、ab http压力测试

ab命令全称为 Apache bench 是Apache自带的压力测试工具。ab命令非常实用,它不仅可以对Apache服务器进行网站访问压力测试,也可以对或其它类型的服务器进行压力测试,ab命令会创建多个并发线程,模拟多个访问者同时对某一个url地址进行访问,实现压力测试。
(1)ab安装:

sudo apt-get install apache2-utilsab -V

版本显示:

This is ApacheBench, Version 2.3 <$Revision: 1807734 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/

(2)参数说明:ab -h

Usage: ab [options] [http[s]://]hostname[:port]/path
Options are:-n requests     Number of requests to perform-c concurrency  Number of multiple requests to make at a time-t timelimit    Seconds to max. to spend on benchmarkingThis implies -n 50000-s timeout      Seconds to max. wait for each responseDefault is 30 seconds-b windowsize   Size of TCP send/receive buffer, in bytes-B address      Address to bind to when making outgoing connections-p postfile     File containing data to POST. Remember also to set -T-u putfile      File containing data to PUT. Remember also to set -T-T content-type Content-type header to use for POST/PUT data, eg.'application/x-www-form-urlencoded'Default is 'text/plain'-v verbosity    How much troubleshooting info to print-w              Print out results in HTML tables-i              Use HEAD instead of GET-x attributes   String to insert as table attributes-y attributes   String to insert as tr attributes-z attributes   String to insert as td or th attributes-C attribute    Add cookie, eg. 'Apache=1234'. (repeatable)-H attribute    Add Arbitrary header line, eg. 'Accept-Encoding: gzip'Inserted after all normal header lines. (repeatable)-A attribute    Add Basic WWW Authentication, the attributesare a colon separated username and password.-P attribute    Add Basic Proxy Authentication, the attributesare a colon separated username and password.-X proxy:port   Proxyserver and port number to use-V              Print version number and exit-k              Use HTTP KeepAlive feature-d              Do not show percentiles served table.-S              Do not show confidence estimators and warnings.-q              Do not show progress when doing more than 150 requests-l              Accept variable document length (use this for dynamic pages)-g filename     Output collected data to gnuplot format file.-e filename     Output CSV file with percentages served-r              Don't exit on socket receive errors.-m method       Method name-h              Display usage information (this message)-I              Disable TLS Server Name Indication (SNI) extension-Z ciphersuite  Specify SSL/TLS cipher suite (See openssl ciphers)-f protocol     Specify SSL/TLS protocol(SSL2, TLS1, TLS1.1, TLS1.2 or ALL)

1.2、post测试(注册请求和登录请求)

(1)注册请求测试:

ab -n 100 -c 4 -p reg.txt -T application/json http://114.215.169.66/api/reg

reg.txt内容:

{
"email": "3072095585@qq.com", 
"firstPwd": "e10adc3949ba59abbe56e057f20f883e", 
"nickName": "lucky", 
"phone": "18888888888", 
"userName": "FLY." }

测试结果:

(2)登录请求:

ab -n 100 -c 4 -p login.txt -T application/json http://114.215.169.66/api/login

login.txt内容:

{"pwd": "e10adc3949ba59abbe56e057f20f883e", 
"user": "FLY." }

测试结果:

(3)开启登录注册的线程数量:在tc_http_server.conf文件的TreadNum配置。
(4)注意:在发布之前,要把一些打印信息去掉,不然会影响性能。

二、性能测试

使用TPS指标:
TPS Transactions Per Second 也就是事务数/秒。一个事务是指一个客户机向服务器发送请求然后服务器做出反应的过程。客户机在发送请求时开始计时,收到服务器响应后结束计时,以此来计算使用的时间和完成的事务个数。

2.1、生成测试脚本

编译
cd fastdfs/test
make
生成
test_upload
test_delete
test_download
执行./gen_files,
生成6中不同大小的测试文件
上传能力测试,
单机可以模拟多个客户端,比如10代表10个客户端。
./test_upload.sh 10
下载能力测试,
单机可以模拟多个客户端,比如10代表10个客户端。
./test_download.sh 10
删除能力测试,
单机可以模拟多个客户端,比如10代表10个客户端。
./test_delete.sh 10

注意:test_download和test_delete依赖于test_upload产生的文件。

小规模测试的时候,建议一台客户端机器只模拟一个客户端 ./test_upload.sh 1。

cd ~/tuchuang/fastdfs/test 
make

2.2、上传测试

对应的测试程序test_upload.c + test_upload.sh。可以模拟十个并发客户端。.0、.1、…、.9只是客户端序号。

测试结果在fastdfs/test/upload目录。
(1)fail.x是存储上传失败的文件。
(2)file_id.x是存储上传成功的文件。
(3)stat_by_file_type.x是耗时统计。
(4)stat_by_overall.x包含总上传数、成功次数、耗时。
(5)stat_by_storage_ip.x是不同storage的统计。

测试结果显示:

使用6种不同大小的文件进行测试,分别为:

文件规格测试次数
5K1 000 000
50K2 000 000
200K1 000 000
1M2 000 000
10M20 000
100M1 000

或者

文件规格测试次数
5K50 000
50K10 000
200K5 000
1M500
10M50
100M10

2.2.1、单客户端测试本地上传到本机服务器

2.2.2、如果使用集群的方式进行测试

先考虑磁盘写入能力:
机械硬盘的写入速度和读写速度一般约为120MB/S。
SATA协议的固态硬盘速度约为500MB/S。
NVMe协议(PCIe 3.0×2)的固态硬盘速度约为1800MB/S。
NVMe协议(PCIe 3.0×4)的固态硬盘速度约为3500MB/S。

外网带宽:
通常是千M网是极限

内网带宽:
非I/O优化的实例为千兆共享带宽,I/O优化的实例为万兆或25G共享带宽。
由于是共享网络,因此无法保证带宽速度是不变的。

性能会怎么样? 本质而言要考虑的点:
网络带宽。
磁盘读写速度。
文件大小。
同组storage的个数,因为storage直接要相互同步影响源文件写入的性能。比如 1台服务器写入能力。

举例:
比如三个storage:
磁盘写入能力为:500MB/s,即是4000Mbps
服务器带宽:1000Mbps
局域网带宽:10000Mbps
此时要同时三个storage上传带宽都达到1000M极限,则需要磁盘的写入能力至少是3000Mbps起,而且局域网的带宽至少要达到3000Mpbs,因为局域网之间是需要通过路由去交换数据,并不是两个服务器直连的。
再考虑到方案如果是先上传到nginx,然后再转到fastdfs,则写入能力还要再加上1000Mbps, 所以磁盘写能力至少要达到4000Mbps。

2.3、下载测试

test_download.c + test_upload.sh,他们依赖test_upload后产生的upload里面的file_id.x文件,里面记录了要下载文件的file id。

./test_download 1

测试结果在fastdfs/test/download目录。

2.4、删除测试

test_delete.c + test_delete.sh,他们依赖test_upload后产生的upload里面的file_id.x文件,里面记录了要删除的文件的file id。

./test_delete 1

2.5、测试性能总结

2.5.1 上传文件

提升上传性能的方法:

  1. 增加group(水平扩展)。
  2. 增加带宽(带宽能力)。
  3. 使用读写性能高的磁盘。

单纯增加每个group的storage只能应对上传峰值,不能从根本上提升上传能力。

2.5.2、下载文件

提升下载性能的方法:

  1. 增加storage(少写多读的场景)。
  2. 增加group。
  3. 增加带宽。
  4. 使用读写性能高的磁盘。

fastdfs打满千M带宽是很容易的。

总结

  1. 测试上传中,会受带宽的限制,特别是云服务器qps限制;同时也会收到磁盘写入、读取能力限制。
  2. 单机能做到20k左右数据,tps=5000。

在图床项目中,公网发布和测试是非常重要的步骤,它们有助于确保项目在实际应用环境中的稳定性和可靠性。下面是公网发布和测试的一些总结:

测试:

  1. 功能测试:确保图床项目的基本功能能够正常工作,如上传图片、生成链接、展示图片等。
  2. 性能测试:通过模拟多个用户并发访问图床项目,测试服务器的负载能力和响应速度。可以使用工具(如Apache JMeter)来进行性能测试。
  3. 安全性测试:测试图床项目的安全性,如防止恶意文件上传、防止跨站脚本攻击(XSS)等。可以使用安全测试工具(如OWASP ZAP)来进行安全性测试。
  4. 兼容性测试:确保图床项目在不同的浏览器和操作系统上都能正常运行和显示图片。
  5. 异常情况测试:模拟各种异常情况,如网络中断、数据库故障等,测试图床项目的容错能力和恢复能力。

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_328883.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

springboot请求重定向失败问题解决方案

今天晚上在写登录页面时&#xff0c;发现自己的首页无法正常访问&#xff0c;用户名和密码正常的情况下还是无法访问首页。于是开始进行debug&#xff0c; 程序执行至此处时无任何异常&#xff0c;但是就是在进行重定向页面时出现了404&#xff0c;在检查导航栏后发现地址栏也发…

深度学习——批数据训练

代码与详细注释&#xff1a; BATCH_SIZE 5&#xff0c;shuffleTrue import torch import torch.utils.data as Data# 添加随机种子以使结果可复现 torch.manual_seed(1) # reproducible# 批大小 BATCH_SIZE 5 # BATCH_SIZE 8x torch.linspace(1, 10, 10) # this…

dvwa靶场通关(九)

第九关&#xff1a;Weak Session IDs&#xff08;弱会话IDs&#xff09; 当用户登录后&#xff0c;在服务器就会创建一个会话(session)&#xff0c;叫做会话控制&#xff0c;接着访问页面的时候就不用登录&#xff0c;只需要携带 Sesion去访问。 sessionID作为特定用户访问站…

用技术指标伦敦金行情走势图

经常有投资者说&#xff0c;伦敦金行情走势图老是涨跌涨跌&#xff0c;抓不准它涨跌的规律&#xff0c;老是被它弄得头昏脑胀。其实看伦敦金行情走势图的方法有很多&#xff0c;最直接的就是使用技术指标。技术指标本来就是投资者为了避免伦敦金行情走势图上价格干扰性波动&…

什么是热修复?它的优缺点是什么?

我们开发时常常要考虑的一些问题。 开发上线的版本能保证不存在Bug么&#xff1f; 修复后的版本能保证用户都及时更新么&#xff1f; 如何最大化减少线上Bug对业务的影响&#xff1f; 热修复技术帮助我们解决了很多问题&#xff0c;带来的优势不言而喻。不知道各位对于热修复技…

【AcWing算法基础课】第四章 数学知识(未完待续)

文章目录 前言课前温习番外&#xff1a;秦九韶算法核心模板 一、质数1. 试除法判定质数核心模板1.1题目描述1.2思路分析1.3代码实现 2、试除法分解质因数核心模板1.4题目描述1.5思路分析1.6代码实现 二、筛素数1.朴素筛法求素数核心模板2.线性筛法求素数&#xff08;O(n)&#…

vue拼接html中onclick的触发方式,模版字符串拼接点击事件在vue项目中不生效问题

模版字符串拼接点击事件在vue项目中不生效问题 下面的点击事件没有任何效果&#xff0c;但是如果换成onclick绑定事件则会提示没有该方法。主要原因是&#xff1a; 模版字符串中拼接的html片段中的方法调不到vue中this.methods里的东西&#xff0c;因为methods里的代码是编译…

STM32 Proteus UCOSII系统多路数据采集系统8路开关量4路电压-0058

STM32 Proteus UCOSII系统多路数据采集系统8路开关量4路电压-0058 Proteus仿真小实验&#xff1a; STM32 Proteus UCOSII系统多路数据采集系统8路开关量4路电压-0058 功能&#xff1a; 硬件组成&#xff1a;STM32F103R6单片机 LCD1602显示器8路光耦隔离开关量采集4路微小信号…

你的流量虚了吗?分析手机流量卡不足量的套路

当今时代&#xff0c;手机流量的使用是每个人每天都在消耗的事情&#xff0c;在有WIFI的情况下还好&#xff0c;大家不需要担心流量用多了还是少了&#xff0c;但是在使用手机流量的时候&#xff0c;就需要注意了&#xff0c;看看是不是会用超什么的&#xff0c;但是现在有一个…

网络编程5——TCP协议的五大效率机制:滑动窗口+流量控制+拥塞控制+延时应答+捎带应答

文章目录 前言一、TCP协议段与机制TCP协议的特点TCP报头结构TCP协议的机制与特性 二、TCP协议的 滑动窗口机制 三、TCP协议的 流量控制机制 四、TCP协议的 拥塞控制机制 五、TCP协议的 延时应答机制 六、TCP协议的 捎带应答机制 总结 前言 本人是一个普通程序猿!分享一点自己的…

QT事件处理

设计一个闹钟&#xff0c;定时播报内容。 #ifndef MAINWINDOW_H #define MAINWINDOW_H#include <QMainWindow> #include <QTimerEvent> #include <QDateTime> #include <QMessageBox> #include <QTextToSpeech> #include <QDebug> namespa…

41. 同时在线人数问题

文章目录 题目需求思路一实现一学习链接题目来源 题目需求 现有各直播间的用户访问记录表&#xff08;live_events&#xff09;如下。 表中每行数据表达的信息为&#xff1a;一个用户何时进入了一个直播间&#xff0c;又在何时离开了该直播间。 现要求统计各直播间最大同时在…

21-注册中心与配置中心Nacos

已经使用过了Spring cloud提供的Geteway、openFeign。 1、注册中心与配置中心 1.1、注册中心 相当于通讯录,让应用之间相互认识。 用途: 实例的健康检查。 路由转发:为了控制成本,会对机器做动态扩容,此时IP就不固定了。 远程调用。 1.2、配置中心 动态修改线上的配…

Java 匿名对象

一、简介 1.1.含义 没有名字的对象 。以常规的创建对象的方法&#xff1a; AtomicInteger atomicInteger new AtomicInteger(100000);格式&#xff1a; 类名 变量名 new 类名(); 这样就完成了对象的创建。注意&#xff1a;&#xff08;&#xff09;内可以无参数&#xff0c…

Zabbix 的使用 续

Zabbix 的使用 续 一、部署 zabbix 代理服务器1.1 环境准备1.2 设置 zabbix 的下载源&#xff0c;安装 zabbix-proxy1.3 部署数据库&#xff0c;要求 MySQL 5.7 或 Mariadb 10.5 及以上版本1.4 导入数据库信息1.5 修改 zabbix-proxy 配置文件1.6 启动 zabbix-proxy1.7 在所有主…

ARM day10 (IIC协议接收温湿传感器数据)

iic.h #ifndef __IIC_H__ #define __IIC_H__ #include "stm32mp1xx_gpio.h" #include "stm32mp1xx_rcc.h" /* 通过程序模拟实现I2C总线的时序和协议* GPIOF ---> AHB4* I2C1_SCL ---> PF14* I2C1_SDA ---> PF15** */#define SET_SDA_OUT do{…

vue 多环境打包指令配置及编译

1.创建多环境: 在根目录创建.env.xxx文件,如下为例(我创建了两个) 文件内容主要包括&#xff1a; # 页面标题 VUE_APP_TITLE "标题"# 生产环境配置 ENV production# DNA检测仓储管理系统/生产环境 VUE_APP_BASE_API https://xxxxxx 2.设置: 修改根目录下的package…

行业追踪,2023-07-10,汽车零部件如期调整,需要耐心等待第二波

自动复盘 2023-07-10 成交额超过 100 亿 排名靠前&#xff0c;macd柱由绿转红 成交量要大于均线 有必要给每个行业加一个上级的归类&#xff0c;这样更能体现主流方向 rps 有时候比较滞后&#xff0c;但不少是欲杨先抑&#xff0c; 应该持续跟踪&#xff0c;等 macd 反转时参与…

【MATLAB第53期】基于MATLAB的TSK模糊神经网络时间序列预测模型,含短期预测未来功能

【MATLAB第53期】基于MATLAB的TSK模糊神经网络时间序列预测模型&#xff0c;含短期预测未来功能 一、效果展示 二、数据设置 数据采用一列数据滑动窗口设置为5 &#xff0c;可自行设置70%训练30%测试预测未来值为10 &#xff0c;可自行设置&#xff0c;控制10以内 三、模型…

欧科云链联合大湾区警方共话区块链安全

为了应对日益严峻的区块链衍生犯罪&#xff0c;日前欧科云链联合粤港澳大湾区警务人员在深圳开展了为期一天的三地警务研讨会&#xff0c;期间获得包括香港商报、澳门日报、澳门法治报、澳门商报、香港雅虎财经等多家港澳权威媒体的报道&#xff0c;引发三地警务机关的高度关注…