Benchmark学习笔记

本文详细介绍了Benchmark在计算机领域的应用,包括其背景、在性能评估中的关键作用,以及如何进行性能测试,涉及目标设定、工具选择、测试环境配置等内容。重点讲解了Web服务器性能测试和数据库性能评估,并以ApacheBenchmark为例进行了实战演示。
摘要由CSDN通过智能技术生成

初学Benchmark

benchmark简介

正如维基百科所说

As computer architecture advanced, it became more difficult to compare the performance of various computer systems simply by looking at their specifications. Therefore, tests were developed that allowed comparison of different architectures.

Benchmark是一个评价方式,它在整个计算机领域有着长期的应用。随着计算机架构的进步,仅仅通过查看规格来比较各种计算机系统的性能变得越来越困难。因此,开发了允许比较不同架构的测试,即Benchmark。

在计算机领域,Benchmark应用最成功的就是性能测试,主要测试负载的执行时间、传输速度、吞吐量、资源占用率等。

而下面我将详细的讲述关于为什么要做性能测试以及如何做性能测试

一.为什么要进行性能测试以及性能测试核心指标

  1. 在项目预研和产品开发中,性能评估是一个关键环节。通过Benchmark测试,我们可以了解系统的性能瓶颈,为优化提供方向。

  2. Benchmark可以帮助我们测试出系统的极限负荷,从而判断系统是否满足需求。要知道,性能测试的隐藏目标:压榨出每一台服务器的最大潜能!

  3. 在编写代码时,Benchmark可以帮助我们测试算法的选择和优化,从而提升代码质量。

  4. 性能测试两大核心指标:响应时间(RT)吞吐量(Throughput)
    响应时间是指系统对请求做出响应的时间,这决定了用户的体验,而吞吐量是指系统在单位时间内处理完成的请求数量,这体现了服务器的承载能力和支撑用户量。除此之外还有负载的执行时间、传输速度、资源占用率等指标。

二.怎么进行benchmark – 性能测试

1.确定测试目标:首先,我们需要明确测试的目标。例如,我们可能想要测试Web服务器在高并发请求下的响应时间、吞吐量、错误率等。

2.选择Benchmark工具:对于Web服务器的性能测试,有很多开源的Benchmark工具可供选择,如Apache JMeterGatling等。选择哪个工具取决于你的具体需求和熟悉程度。

3.配置测试环境:你需要搭建一个模拟真实用户请求的环境。这可能包括一定数量的客户端机器,它们将向Web服务器发送请求。此外,确保Web服务器的硬件配置(如CPU、内存、磁盘、网络等)能够支持你的测试需求。

4.设计测试方案:你需要设计一系列的测试场景,如不同并发用户数下的请求、不同大小的数据包等。你还需要确定如何收集测试结果,如响应时间、吞吐量、错误率等。

5.执行测试:在准备好测试环境和测试方案后,你可以开始执行测试。让客户端机器向Web服务器发送请求,并记录测试结果。

6.分析测试结果:收集完测试结果后,你需要对它们进行分析。例如,你可以绘制出响应时间随着并发用户数的增加而变化的图表,或者比较不同数据包大小下的吞吐量。这些分析将帮助你了解Web服务器在不同工作负载和场景下的性能表现。

7.优化和改进:如果在测试中发现性能瓶颈或问题,你需要进行相应的优化和改进。这可能涉及到调整Web服务器的配置、升级硬件、优化代码等多个方面。

三.实际的应用场景

  1. 数据库性能评估:数据库是IT基础设施的重要组成部分,对于其性能的评估至关重要。使用TPC-C或TPC-H这样的基准测试可以评估数据库在不同负载下的响应时间、吞吐量以及资源利用率。

  2. 系统架构比较:当考虑采用不同的系统架构或技术栈时,可以使用Benchmark来比较不同方案的实际性能。这有助于决策者在技术选型时做出更明智的选择。

  3. 代码优化:在软件开发过程中,通过对特定功能的性能Benchmark测试,开发人员可以确定代码的瓶颈所在,并对其进行优化以提高整体性能。

四.有效的性能分析

–性能测试的目的便是完成有效的性能分析

  1. 识别瓶颈:性能分析的关键是识别出系统的瓶颈。这可能涉及到CPU、内存、磁盘I/O、网络带宽等多个方面。通过监控这些资源的使用情况,可以确定性能问题的根源。

  2. 设定基线:在开始性能优化之前,设定一个基线非常重要。这意味着在没有任何优化措施的情况下,首先测量系统的性能。这将作为后续优化的参照点。

  3. 逐步优化:优化通常是一个迭代的过程。在每次优化后,都应该重新运行基准测试以评估改进的效果。如果性能没有得到提升,或者提升不明显,那么可能需要重新考虑优化策略。

  4. 结果报告:将Benchmark测试的结果以清晰、直观的方式呈现出来,有助于团队成员理解性能问题并参与到优化工作中来。

五.下面将对一款简单易用的工具 – Apache Benchmark(以下简称ab)的实战进行介绍,虽不比Apache JMeter但却能帮助我们理解基本的性能测试

1.Apache Benchmark的原理:创建多个并发访问线程模拟多个访问者对某一URL地址进行访问。

在这里插入图片描述
2.ab指令

# get请求
ab -n 总请求数量 -c 并发数量 网址

#post请求
ab -p 指定需要post的数据文件 -T 指定 content-type

# -s: timeout,单位为秒

# -t:timelimit,指定本次压测的最长时间限制 (如果不指定 -n ,这里会默认指定一个-n 50000)

# -r:当发生 socket error 时不退出,而是继续执行请求

# -k:在http请求的 headers 中加上 Connection:keep-alive,一保持连接

3.测试实例

性能测试时,有一些系统需要预热

这里对预热做一下解释:有些数据会预加载,存到缓存里面去,因此第一次测试的时间可能不标准,所以会进行第二次测试

通过get请求我们能获得一份性能测试报告结果

# 测试报告核心数据:
Server Software:
Server Hostname:			192.168.1.110
Server Port:		        8081

Document Path:				/gc/queryLogistics?mailId=1200000000001
Document Length:            849 bytes # 每次返回的内容大小
Concurrency Level: 			100  #并发次数 100
Time taken for tests:		0.734 seconds # 测试所用时间
Complete requests:    		1000 # 总请求数量
Failed requests:			0
Write errors:				0
Total transferred:			983000 bytes #总共收到的数据量大小
HTML transferred:			849000 bytes #响应内容大小 数据包大小

#吞吐量大小? 1362.47/s
Requests per second:		1362.47 [#/sec] (mean) #平均没秒能收到多少个响应
Time per request:			73.396 [ms] (mean)
Time per request:			0.734 [ms] (mean, across all concurrent requests)
Transfer rate:				1307.91 [Kbytes/sec] received

# 具体的每个步骤 TCP
Connection Times (ms)
						min  mean[+/-sd] median	max
Connect:				 0    8    7.0      7    40
Processing:				 5   62   39.6     53   236
Waiting:				 3   61   39.3     53   236
Total:				     8   71   39.4     52   252

Percentage of the requests served within a certain time (ms)
  50%	  62
  66%	  82
  75%	  97
  80%	 105
  90%	 124
  95%	 145
  98%	 165 
  99%	 187
 100%	 252 (longest request)

测试报告分析
吞吐量:1362.47/s
响应时间 < 252ms

从上面的信息我们可以得出每台服务器吞吐量的大小为1362.47/s,因此倘若我们要求每秒钟5000的请求,我们需要的服务器数量就为5000/1300=4台

当然单次测试报告分析肯定时不完整的我们需要多次分析然后才得出我们的结论,最终给出优化方案。

六.小结

性能测试并不是一个严谨的工作,我们需要有自己的判断然后通过指标来确认自己的判断,同时给出建议。

  • 15
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值