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

news/2025/3/16 2:00:24/

项目发布和测试

  • 一、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.ppmy.cn/news/813716.html

相关文章

华为网络设备交换机路由器查看ARP表项命令方法

描述&#xff1a;华为网络设备交换机路由器查看ARP表项命令方法 命令&#xff1a; display arp

ARP表和MAC表的区别

1.arp表是三层设备才有的&#xff0c;如&#xff1a;路由器、主机电脑&#xff0c;arp&#xff1a;地址解析协议&#xff0c;已知目标ip地址来获取目标mac地址。mac表二层设备才有&#xff0c;如交换机。 2.arp表&#xff1a;阐述ip地址与mac地址的对应关系&#xff0c;而mac表…

MAC表和ARP表的老化时间:

路由表&#xff1a;目的地址、网络掩码、下一条ip地址、出接口、优先级、cost路由开销 arp表&#xff1a;ip地址、对应的mac地址、ip地址类型 arp -a 命令用来查看计算机本地arp表 mac表&#xff1a;VLAN号 mac地址、出端口 MAC表老化时间 300S ARP表&#xff1a;思科是 5分钟…

MAC表、ARP表、IP路由表区别比较

作用生成方式组成存在设备MAC表数据链路层转发&#xff08;交换机根据数据帧的目的MAC地址查看MAC表&#xff0c;根据表项由相应接口转发出去&#xff09;根据数据帧的源MAC进行学习&#xff08;数据帧从那个接口进来的&#xff0c;就把该接口以及该帧的源MAC学习记录下来&…

关于路由表,ARP表,MAC表的一些理解

以下均为个人理解&#xff0c;如有不对之处&#xff0c;希望大家不吝指教。 数据在网络传输中有几个比较重要的东西&#xff1a;一个是IP地址&#xff0c;分为源地址和目的地址&#xff0c;一个是MAC地址&#xff0c;分为源MAC地址和目的MAC地址&#xff0c;发送一个信息需要填…

linux ping 不通 arp incomplete,关于show arp表,显示Incomplete问题

最近出现一个问题&#xff0c;在核心交换机上查看交换机的ARP表的时候&#xff0c;很多ARP表项目会显示如信息&#xff1a; Internet 172.21.6.1 0 Incomplete ARPA 这表示没有学习到IP地址的mac地址&#xff0c;找了很久&#xff0c;终于找到问题&#xff0…

查看arp内核表

linux中使用 arp -a命令可查看ARP缓存表 也可以使用ip neigh命令。 ip neigh或ip neighbour输出当前内核里的neighbour table&#xff0c;即查看arp表信息。 看具体接口下的arp缓存条目 ip neighbor show dev ens33 看具体某个网段的arp缓存条目 ip neighbor show 192.168.0.…

RIB表与FIB表、ARP表与FDB表

1.RIB与FIB的区别&#xff1a; RIB&#xff1a;路由表 FIB&#xff1a;转发信息表 FIB表更多是出现在需要快速转发的路由器上&#xff0c;这种路由器上的路由表条目通常都达成千上万条&#xff0c;如果按照传统的检索路由表进行转发的方式&#xff0c;其转发效率很低&#x…