YOLOv8目标检测(七)_AB压力测试

YOLOv8目标检测(一)_检测流程梳理:YOLOv8目标检测(一)_检测流程梳理_yolo检测流程-CSDN博客

YOLOv8目标检测(二)_准备数据集:YOLOv8目标检测(二)_准备数据集_yolov8 数据集准备-CSDN博客

YOLOv8目标检测(三)_训练模型:YOLOv8目标检测(三)_训练模型_yolo data.yaml-CSDN博客

YOLOv8目标检测(三*)_最佳超参数训练:YOLOv8目标检测(三*)_最佳超参数训练_yolo 为什么要选择yolov8m.pt进行训练-CSDN博客

YOLOv8目标检测(四)_图片推理:YOLOv8目标检测(四)_图片推理-CSDN博客

YOLOv8目标检测(五)_结果文件(run/detrct/train)详解:YOLOv8目标检测(五)_结果文件(run/detrct/train)详解_yolov8 yolov8m.pt可以训练什么-CSDN博客

YOLOv8目标检测(六)_封装API接口:YOLOv8目标检测(六)_封装API接口-CSDN博客

YOLOv8目标检测(七)_AB压力测试:YOLOv8目标检测(七)_AB压力测试-CSDN博客

为什么要进行压力测试?

评估其在高并发和大负载下的性能表现,确保系统能够在实际使用场景中稳定运行,并找到潜在的瓶颈或优化点。

简单来说:测一测好多人访问调用,这个地址会不会崩掉,速度怎么样。

1.安装AB

Apache Bench(简称 ab)是一个用于测试和评估 Web 服务器性能的命令行工具。它是 Apache HTTP 服务器的附带工具之一,主要用于压力测试和性能分析

命令行输入

sudo apt-get update
sudo apt-get install apache2-utils

这个命令如果不行用

apt-get install apache2-utils -y

可以输入ab看一下是否安装成功,如上图。

2.测试命令

(1)基本并发测试

ab -n 1000 -c 10 <http://example.com/>

(2)POST 请求测试

笔者常用这个,还有一些其他的请求测试,这里不再一一列举。

ab -n 1000 -c 5 -r -p ./tireddrive_abtest.json -T 'application/json' '<http://0.0.0.0:888/predict>'
  • n 1000:指定总共发起的请求数。这里是 1000,意味着工具会发送 1000 个请求到目标 URL。
  • c 5:指定并发请求数。即在同一时刻,最多会有 5 个请求并发执行。这里是 5,表示最多有 5 个并发请求。
  • r:表示“忽略响应数据”。当使用这个选项时,ab 会忽略服务器返回的响应内容,只关注响应的时间和其他性能指标。这对于性能测试非常有用,因为不需要解析响应内容,节省了计算资源。
  • p ./tireddrive_abtest.json:指定一个文件,ab 会读取该文件的内容,并将其作为请求的正文(POST 请求的 payload)。tireddrive_abtest.json 文件包含了请求的数据,比如 JSON 格式的数据体。
  • T 'application/json':设置请求的 Content-Type 头部,这里是 application/json,表示请求正文是 JSON 格式的数据。这通常用于向 API 发送 JSON 数据。
  • '<http://0.0.0.0:888/predict':目标> URL,表示将发送请求到 http://0.0.0.0:888/predict。这是你正在测试的 HTTP 服务器地址和路径。

3.如何使用

笔者会测试修改-c和-P这两个参数,这里说明一下-P的文件,通常我会测一个有目标的和一个无目标的。

(1)起服务(参考上一个文章https://blog.csdn.net/weixin_48870215/article/details/144516248?fromshare=blogdetail&sharetype=blogdetail&sharerId=144516248&sharerefer=PC&sharesource=weixin_48870215&sharefrom=from_link)

(2)准备yourfile.json文件

1)准备一张要测试的有目标的图片

2)将图片转为base64格式

这里是笔者常用的将图片转为base64的脚本

import base64# 打开图片并将其转换为 Base64 编码
with open("D:/Desktop/network_tireddrive (31).jpg", "rb") as image_file:encoded_string = base64.b64encode(image_file.read()).decode('utf-8')# 将生成的 Base64 字符串写入到 txt 文件中
with open("D:\\Desktop\\output_base64.txt", "w") as text_file:text_file.write(encoded_string)print("Base64 encoded string has been saved to output_base64.txt")

运行后部分结果如下

3)修改tireddrive_abtest.json

替换yourpicture_base64

请求格式例子如下,需要跟你写服务中的数据格式保持一致,如果读者参考了我之前的格式,那么直接用。

{"image":"yourpicture_base64",
"customerID":"sdcm_001",
"imageID":"image_001",
"minScore": 0.35,
"maxScore": 0.99,
"timeStamp":"1234455",
"flexibleParams":""}

(3)运行ab命令

ab -n 1000 -c 5 -r -p ./tireddrive_abtest.json -T 'application/json' '<http://0.0.0.0:888/predict>'

4.查看结果

运行结果如下

正样本 请求数1000 5 	GPU-Util 17
----------------------------------------------------------------------------------------------------------------
root@c712345678:/usr/src/ultralytics# ab -n 1000 -c 5 -r -p ./tireddrive_abtest.json -T 'application/json' '<http://0.0.0.0:888/predict>'
This is ApacheBench, Version 2.3 <$Revision: 1843412 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, <http://www.zeustech.net/>
Licensed to The Apache Software Foundation, <http://www.apache.org/>Benchmarking 0.0.0.0 (be patient)
Completed 100 requests
Completed 200 requests
Completed 300 requests
Completed 400 requests
Completed 500 requests
Completed 600 requests
Completed 700 requests
Completed 800 requests
Completed 900 requests
Completed 1000 requests
Finished 1000 requestsServer Software:        uvicorn
Server Hostname:        0.0.0.0
Server Port:            888Document Path:          /predict
Document Length:        141 bytesConcurrency Level:      5
Time taken for tests:   18.868 seconds
Complete requests:      1000
Failed requests:        0
Total transferred:      267000 bytes
Total body sent:        171773000
HTML transferred:       141000 bytes
Requests per second:    53.00 [#/sec] (mean)
Time per request:       94.339 [ms] (mean)
Time per request:       18.868 [ms] (mean, across all concurrent requests)
Transfer rate:          13.82 [Kbytes/sec] received8890.65 kb/s sent8904.47 kb/s totalConnection Times (ms)min  mean[+/-sd] median   max
Connect:        0    0   0.0      0       0
Processing:    20   94   4.3     94     105
Waiting:       20   94   4.3     94     105
Total:         20   94   4.3     94     105Percentage of the requests served within a certain time (ms)50%     9466%     9475%     9580%     9590%     9695%     9898%     9999%    101100%    105 (longest request)

笔者通常关注的指标如下:

1)Requests per second

Requests per second:    53.00 [#/sec] (mean)
  • 含义:表示在整个测试过程中,服务器每秒处理的平均请求数。
  • 解释:这里是 53,意味着服务器平均每秒能够处理 53 个请求。这个数值越高,代表服务器的吞吐量越大,处理请求的能力越强。

2)Time per request

Time per request:       94.339 [ms] (mean)
Time per request:       18.868 [ms] (mean, across all concurrent requests)

94.339

  • 含义:表示每个请求的平均响应时间,单位是毫秒(ms)。
  • 解释:94.339 毫秒是每个请求从发出到服务器响应的平均时间。如果响应时间过长,可能表示服务器负载过高或网络存在瓶颈。

18.868

  • 含义:表示在并发请求的情况下,每个请求的平均响应时间,单位为毫秒(ms)。这个值考虑了并发请求的影响。
  • 解释:这里是 18.868 毫秒,它是平均的每个请求的响应时间,但此值已按并发请求数(在这个例子中是 5)做了平均。这个值比上面的 Time per request(94.339 毫秒)低,因为并发请求可以让多个请求同时进行,从而减少等待时间。

3)Transfer rate

Transfer rate:          13.82 [Kbytes/sec] received8890.65 kb/s sent8904.47 kb/s total

13.82

  • 含义:表示服务器在测试过程中每秒接收的数据量,单位是 Kbytes/sec(千字节每秒)。
  • 解释:13.82 Kbytes/sec 表示服务器每秒钟从客户端接收了约 13.82 千字节的数据。这通常与请求的大小和请求频率有关。

8890.65

  • 含义:表示服务器每秒发送的数据量,单位是 kb/s(千比特每秒)。
  • 解释:8890.65 kb/s 表示服务器在整个测试过程中每秒钟发送了约 8890.65 千比特的数据。这个数值越高,说明服务器响应的返回数据量较大。

8904.47

  • 含义:表示整个测试过程中服务器的总数据传输速率,包括接收和发送的数据,单位是 kb/s(千比特每秒)。
  • 解释:8904.47 kb/s 是服务器同时接收和发送数据的总速率。这个数值是 Transfer rate receivedsent 的合并。

恭喜你学会了如何测试在高并发和大负载下服务的性能表现。

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

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

相关文章

在 Spring Boot 3 中实现基于角色的访问控制

基于角色的访问控制 (RBAC) 是一种有价值的访问控制模型,可增强安全性、简化访问管理并提高效率。它在管理资源访问对安全和运营至关重要的复杂环境中尤其有益。 我们将做什么 我们有一个包含公共路由和受限路由的 Web API。受限路由需要数据库中用户的有效 JWT。 现在用户…

线程知识总结(一)

1、概述 1.1 进程与线程 进程是程序运行时&#xff0c;操作系统进行资源分配的最小单位&#xff0c;包括 CPU、内存空间、磁盘 IO 等。从另一个角度讲&#xff0c;进程是程序在设备&#xff08;计算机、手机等&#xff09;上的一次执行活动&#xff0c;或者说是正在运行中的程…

OpenCV圆形标定板检测算法findGrid原理详解

OpenCV的findGrid函数检测圆形标定板的流程如下: class CirclesGridClusterFinder {CirclesGridClusterFinder(const CirclesGridClusterFinder&); public:CirclesGridClusterFinder

基于SpringBoot+Vue实现的个人备忘录系统

&#x1f384; 写在前面 最近学习vue&#xff0c;所以抽时间就用SpringBootVue做了一个个人备忘录&#xff0c;本意是想打造一个轻量级的、自托管的备忘录中心&#xff0c;可能是老了&#xff08;haha&#xff09;,很多时候都觉得好记性不如烂笔头&#xff0c;所以就有了这个小…

docker简单命令

docker images 查看镜像文件 docker ps -a 查看容器文件 docker rm 0b2 删除容器文件&#xff0c;id取前三位即可 docker rmi e64 删除镜像文件&#xff08;先删容器才能删镜像&#xff09;&#xff0c;id取前三位即可 在包含Dockerfile文件的目录…

【前端】vue数组去重的3种方法

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、数组去重说明二、Vue数组去重的3种方法 前言 随着开发语言及人工智能工具的普及&#xff0c;使得越来越多的人会主动学习使用一些开发工具&#xff0c;本…

BPMN与一般的流程图区别在那里?

1. 语义和标准性 BPMN&#xff08;业务流程建模符号&#xff09; 基于标准语义&#xff1a;BPMN是一种标准化的业务流程建模语言&#xff0c;拥有一套严谨的语义规范。它由国际对象管理组织&#xff08;OMG&#xff09;维护&#xff0c;定义了事件、活动、网关和流向等元素的确…

《薄世宁医学通识50讲》以医学通识为主题,涵盖了医学的多个方面,包括医学哲学、疾病认知、治疗过程、医患关系、公共卫生等

《薄世宁医学通识50讲》是一门由薄世宁医生主讲的医学通识课程&#xff0c;该课程旨在通过深入浅出的方式&#xff0c;向广大听众普及医学知识&#xff0c;提升公众对医学的认知和理解。 晓北斗推荐-薄世宁医学通识 以下是对该课程的详细介绍&#xff1a; 一、课程概述 《薄世…

二八(vue2-04)、scoped、data函数、父子通信、props校验、非父子通信(EventBus、provideinject)、v-model进阶

1. 组件的三大组成部分(结构/样式/逻辑) 1.1 scoped 样式冲突 App.vue <template><!-- template 只能有一个根元素 --><div id"app"><BaseOne></BaseOne><BaseTwo></BaseTwo></div> </template><script…

操作系统文件管理

一、文件系统 1. 文件的概念 &#xff08;1&#xff09;文件的概念与文件系统 文件是操作系统中的重要概念&#xff0c;是存储在计算机硬盘上的信息集合&#xff0c;如文本文档、图片、程序等。在系统运行时&#xff0c;资源调度和分配以进程为基本单位&#xff0c;而用户的…

【论文研读】U-DiTs:在U型扩散Transformer中引入下采样Token,以更低计算成本超越DiT-XL/2

推荐理由 这篇论文提出了一种新的U型扩散Transformer模型&#xff08;U-DiT&#xff09;&#xff0c;该模型通过对自注意力机制中的查询、键和值进行下采样&#xff0c;有效减少了计算冗余&#xff0c;同时提高了性能。论文中的研究不仅包含理论分析和实验验证&#xff0c;还展…

清远榉之乡托养机构为你深度分析:特殊碳水化合物饮食对自闭症的作用

在探索自闭症干预方法的道路上&#xff0c;各种尝试不断涌现。其中&#xff0c;特殊碳水化合物饮食引起了不少家长的关注。那么&#xff0c;特殊碳水化合物饮食对自闭症究竟有怎样的作用呢&#xff1f;今天&#xff0c;清远榉之乡托养机构为你深度分析。 榉之乡大龄自闭症托养机…

Linux shell脚本用于常见图片png、jpg、jpeg、tiff格式批量转webp格式后,并添加文本水印

Linux Debian12基于ImageMagick图像处理工具编写shell脚本用于常见图片png、jpg、jpeg、tiff格式批量转webp并添加文本水印 在Linux系统中&#xff0c;使用ImageMagick可以图片格式转换&#xff0c;其中最常用的是通过命令行工具进行。 ImageMagick是一个非常强大的图像处理工…

【系统】Windows11更新解决办法,一键暂停

最近的windows更新整的我是措不及防&#xff0c;干啥都要关注一下更新的问题&#xff0c;有的时候还关不掉&#xff0c;我的强迫症就来了&#xff0c;非得关了你不可&#xff01; 经过了九九八十一难的研究之后&#xff0c;终于找到了一个算是比较靠谱的暂停更新的方法&#x…

PostgreSQL技术内幕21:SysLogger日志收集器的工作原理

0.简介 在前面文章中介绍了事务模块用到的事务日志结构和其工作原理&#xff0c;本文将介绍日志的另一个部分&#xff0c;操作日志&#xff0c;主要去描述SysLogger日志的工作原理&#xff0c;流程以及其中关键的实现&#xff1a;日志轮转&#xff0c;刷盘性能问题等&#xff…

坑人 C# MySql.Data SDK

一:背景 1. 讲故事 为什么说这东西比较坑人呢?是因为最近一个月接到了两个dump,都反应程序卡死无响应,最后分析下来是因为线程饥饿导致,那什么原因导致的线程饥饿呢?进一步分析发现罪魁祸首是 MySql.Data,这就让人无语了,并且反馈都是升级了MySql.Data驱动引发,接下…

武汉市电子信息与通信工程职称公示了

2024年武汉市电子信息与通信工程专业职称公示了&#xff0c;本次公示通过人员有109人。 基本这已经是今年武汉市工程相关职称最后公示了&#xff0c;等待出证即可。 为什么有人好奇&#xff0c;一样的资料&#xff0c;都是业绩、论文等&#xff0c;有的人可以过&#xff0c;有的…

MySQL数据库——门诊管理系统数据库数据表

门诊系统数据库his 使用图形化工具或SQL语句在简明门诊管理系统数据库his中创建数据表&#xff0c;数据表结构见表2-3-9&#xff5e;表2-3-15所示。 表2-3-9 department&#xff08;科室信息表&#xff09; 字段名称 数据类型 长度 是否为空 说明 dep_ID int 否 科室…

基于Python3编写的Golang程序多平台交叉编译自动化脚本

import argparse import os import shutil import sys from shutil import copy2from loguru import loggerclass GoBuild:"""一个用于构建跨平台执行文件的类。初始化函数&#xff0c;设置构建的主文件、生成的执行文件名称以及目标平台。:param f: 需要构建的…

WIN10拖入文件到桌面,文件自动移动到左上角,导致桌面文件错乱

1.先打开文件管理器。 2.点击如下图所示的“选项”。 3.我用红笔标记的这个框&#xff0c;把勾去掉