本文大纲

《如何做性能测试》

执行测试并分析

正文

准备工作回顾

在正式执行性能和压力测试之前,我们已经完成了以下关键步骤:

  • 建立预期目标 :明确了系统需要达到的性能指标。
  • 设计测试场景 :根据业务需求和技术要求定义了多种负载级别的测试情景。
  • 准备测试环境 :搭建了与生产环境尽可能相似的测试平台,并安装和配置了所有必要的工具和服务。
  • 了解测试工具 :熟悉并掌握了用于执行测试的工具(如JMeter)。

执行测试

在开始性能测试之前,首先进行预热测试,以确保系统处于最佳状态。随后使用JMeter按设计好的场景对不同负载级别的情况进行多次测试:

  1. 运行预热测试

    • 使用JMeter进行预热测试,模拟实际业务操作模式,帮助系统缓存数据、加载模块和优化资源分配。
  2. 执行正式测试

    • 按照设计的测试场景逐一执行,并记录关键性能指标:
      • 响应时间(Response Time)
      • 平均响应时间
      • 最小响应时间
      • 最大响应时间
      • 90%响应时间
      • 总体标准差
      • 并发请求数
      • QPS(每秒查询数)
      • TPS(每秒事务数)
      • 吞吐量
  3. 监控系统资源消耗

    • 监控CPU使用率、内存占用、网络带宽和磁盘I/O等关键指标,确保在负载增加时能及时发现问题。

分析与优化

分析测试结果时,需要将实际性能数据与预期目标进行对比:

  1. 正常完成测试

    • 当所有预设的并发数量和操作类型均达到预期目标时,确认系统表现良好。
  2. 识别瓶颈并提出优化建议

    • 如果在测试过程中发现资源耗尽或出现性能瓶颈(如CPU使用率达到上限、内存不足甚至发生内存泄漏现象、网络带宽成为限制因素或磁盘I/O达到峰值),则需要立即停止当前的负载增量,并进行分析:
      • CPU利用率 :若CPU使用率过高,可能表示系统处理能力受限。
      • 内存消耗 :如果内存资源紧张且有明显的内存泄漏迹象,则需检查代码中是否存在无效的对象引用和未及时释放的资源。
      • 网络带宽限制 :当网络流量接近最大值时,可能会导致数据传输延迟甚至丢包。
      • 磁盘I/O瓶颈 :高频率的数据读写操作会显著增加硬盘压力,从而影响整体性能。
  3. 优化系统配置或代码逻辑

    • 根据具体问题调整硬件资源(如增加内存、扩展存储容量)或修改应用程序的实现方式以提高效率。
  4. 再次测试验证效果

    • 完成初步优化后,重复上述步骤重新执行测试,进一步确认改进措施的有效性。

通过以上过程,可以确保性能测试不仅能够准确反映系统的实际运行状态,还能为后续的持续集成与交付流程提供可靠的参考依据。最终目标是确保企业信息管理系统能够在高负载条件下依然保持稳定、高效和可扩展的特性。

性能分析案例1(最佳并发数)

并发请求数,对QPS\TPS都有较大的应响:
1、随着并发数上升,QPS值逐渐提高,一路呈上升趋势。
2、当并发数达到临界值x时,QPS不在提高,上升趋势停止。
3、当并发数超过临界值x时,QPS开始下降(或持平),因过多的并发线程拖累了服务器性能。
临界值x就是服务器可以处理的最佳并发数。

性能分析案例 1:确定最佳并发数

在进行性能测试时,了解系统的最佳并发请求数至关重要,因为这直接影响到系统的QPS(每秒查询数)和TPS(每秒事务数)。通过观察并发请求数的变化及其对系统性能指标的影响,我们可以识别出服务器能够有效处理的最优并发量。

并发请求数与QPS/TPS的关系

在进行测试时,我们发现:

  1. 随着并发请求数的增加,QPS值逐渐提高:

    • 当初始并发数较低时系统的QPS也不会太高,随着并发数上升,QPS值逐渐提高一路呈上升趋势。随着更多请求被同时处理,服务器可以更有效地利用其资源来服务更多的用户。
  2. 当并发数达到临界值x时,QPS不再提高:

    • 达到某个特定的并发请求数量(即临界值x)后,系统的响应时间开始变长,QPS也无法继续提高了。此时,尽管有更多的请求被发送给系统,但服务器处理这些请求的能力已经达到了极限。
  3. 当并发数超过临界值x时,QPS开始下降或持平:

    • 如果继续增加并发请求数量,将会导致服务器性能显著下降,甚至出现超时和失败的情况。过多的并发线程反而会拖累系统整体的处理能力,导致响应时间延长,最终影响用户体验。

临界值x的重要性

临界值x定义了服务器可以处理的最佳并发数:

  • 识别最佳并发请求数的关键在于找到QPS不再增长的那个点。 在这个点之前,增加请求的数量会带来性能的提升;然而一旦超过这一点,继续增加负载只会导致系统崩溃或表现出不良性能。

案例分析

请看下图的一个测试案例,测试方法:使用HttpURLConnection调用,Tomcat中的Servlet,传输的是字符串从客户端发送到服务端.再原样返回。

例如,在本次性能测试中(先看128字节的数据负载测试),我们发现当并发请求数从1上升到10、20时,QPS值持续提高。但是,当并发数达到50(临界值x)后,QPS不再增长,并且在继续增加至100和200时,系统开始出现响应延迟和超时情况。

通过这些观察结果,我们确定服务器的最佳并发请求数为50左右。这意味着,在实际应用中应当配置合理的负载均衡策略以避免超过这个阈值,从而保证系统的稳定性和性能。

image2024-12-29_10-27-5.png

测试说明:
服务端机器配置:CPU:4核心至强,内存:8G.
客户端机器配置:CPU:2棵双核AMD皓龙2212 频率2g,内存:8G.
网络环境:1000Mb局域网.

性能分析案例 2:确定最大并发数

在性能测试中,了解系统的最大可支撑的并发请求数对于确保系统稳定性和最高上限至关重要。通过观察并发请求的数量变化及其对平均响应时间的影响,我们可以识别出服务器能够有效处理的最大并发量。

并发请求数与平均响应时间的关系

在进行性能测试时,我们发现:

  1. 随着并发数上升,平均响应时间值逐渐提高:

    • 当初始负载较低时,系统的响应速度较快。然而,随着更多请求被同时处理,服务器的资源利用率增加,导致每个请求的等待时间和处理时间延长。因此,平均响应时间会随之增加。
  2. 当平均响应时间达到可忍受的极限时,记下并发数x:

    • 在某个特定的并发请求数量(即临界值x)之前,系统仍能保持相对稳定且可以接受的响应时间。一旦超过这个点,系统的响应时间达到了用户可忍受的极限(例如3秒),导致用户等待的时间过长,用户体验大幅恶化。

临界值x的重要性

临界值x定义了服务器可以处理的最大并发数:

  • 找到平均响应时间达到不可忍受极限的那个点至关重要,这样我们就能确定系统在实际应用中能够承受的最大负载。

案例分析

例如,在一次性能测试中,当并发请求数从50增加到200时,系统的平均响应时间逐渐上升但仍然可接受。然而,当并发数达到300(临界值x)时,系统的响应时间达到了用户可忍受的极限(例如3秒),导致用户等待的时间变得不可忍受。

通过这些观察结果,我们确定服务器的最大并发请求数为280左右。这意味着,在实际应用中应当配置合理的负载均衡策略以避免超过这个阈值,从而保证系统的稳定性和用户体验。

请看下图的一个测试案例,测试方法:使用HttpURLConnection调用,Tomcat中的Servlet,传输的是字符串从客户端发送到服务端.再原样返回

虽然没有展示出 系统的响应时间达到了用户可忍受的极限(例如3秒)的效果,但是表达了   随着并发数上升平均响应时间值逐渐增大的效果。

image2024-12-29_10-28-17.png

测试说明:
服务端机器配置:CPU:4核心至强,内存:8G.
客户端机器配置:CPU:2棵双核AMD皓龙2212 频率2g,内存:8G.
网络环境:1000Mb局域网.