性能测试知识科普(七):监控能给你带来什么

本文涉及的产品
性能测试 PTS,5000VUM额度
简介: 当然这些指标是我们日常工作中经常遇到和会关注的,但实际上在性能测试过程中,要根据不同的业务场景、技术架构以及问题表现来关注分析不同的指标。而不是只关注自己看到的指标,填充到表格里提交一份所谓的压测报告就完事的。

这是性能测试知识科普的第七篇文章。


前几天关于三大模型的文章发布后,有同学在技术交流群问了我一个问题:“QPS和TPS有什么区别,该如何在实际工作中理解这些指标的含义


群里其他同学也发表了各自的一些观点,通过观察和交流,我发现部分测试同学对于技术指标的理解还是有些差异,归根结底的原因是知识面的广度较为缺乏,或者说对运维监控相关的知识了解不足。


这篇文章,从性能测试的角度出发,聊聊常见的一些监控技术指标以及相关的工具和作用。


不同视角性能


说起性能测试关注的指标,可能很多同学会说tps、rt、99rt、cpu/memery使用率等等。


当然这些指标是我们日常工作中经常遇到和会关注的,但实际上在性能测试过程中,要根据不同的业务场景、技术架构以及问题表现来关注分析不同的指标。而不是只关注自己看到的指标,填充到表格里提交一份所谓的压测报告就完事的。


下面的表格,我列举了在考虑系统性能时,不同角色关注的一些常见的监控指标,仅供参考。


不同视角 关注指标
性能测试同学 TPS/ART/99RT/Error%
研发工程师 QPS/99RT/YGC/FGC/OOM
运维工程师 CPU%/Memory%/Net Work/Disk IO
数据库工程师 锁/索引/慢SQL/命中率


上表中所列出的指标,仅代表日常工作和压测时比较关注的通用指标,但在实际的项目和场景中,需要根据具体情况去监控分析更多的指标,切记不要生搬硬套。看完下面的监控分层和指标含义,大家应该就可以理解我上面这句话了。


理解监控分层


下面是一个常见的微服务架构的简易模型:


640.png


软件系统为用户提供服务,其背后是由多个软硬件组合支撑的,缺一不可。


如上图所示,软件系统的复杂性导致了当它出现性能问题时,影响性能的因素可能是其中任意一个组件。因此在性能测试中,要关注不同层级的指标。下表是不同层级我们需要关注的一些监控指标:


监控分层 常见关注指标
网络 带宽是否足够、是否有丢包延迟
网关 负载均衡
服务层 TPS/ART/99RT/Error%/Load/异常/垃圾回收/通信协议
中间件 超时/线程池/缓存命中/消费速率&消息积压/批处理
持久化存储 锁/索引/慢SQL/命中率
硬件服务器 CPU%/Memory%/Net Work/Disk IO
操作系统 Swap/内核参数/文件句柄/IO调度


你看,其实影响性能的因素很多,不同层级要关注的指标也各有不同。


很多性能测试同学在工作中往往太过于关注服务层的技术指标,其实所谓的TPS/ART/99RT只是反映了服务在当前的负载下的性能表现,这是结果。但是为什么是这个数值?哪些因素影响了它的性能表现?如何优化性能?就需要从不同维度去分析定位,这才是性能测试中真正的价值所在。


常见监控工具


聊完了不同视角的性能指标和监控分层后,来看看有哪些常见的监控工具。如下表:


工具名称 工具作用 类似工具
grafana 可视化监控面板,可自由定制 kibana
exporters 数据采集工具,兼容多种操作系统 telegraf
promethous 时序数据库,存储exporters采集的数据 influxdb
skywalking 链路追踪,请求调用链耗时/状态展示 cat/pinpoint
mysqlreport mysql全局监控工具 pt-query-digest
jvisualvm Java代码分析工具,JVM自带 arthas/google-perftools


上面提到的工具,像grafana+exporters+permethous,是目前使用范围最广的监控工具组合,它可以覆盖上面第二部分提到的绝大部分维度的数据采集和存储以及展示。


当然,像链路追踪、代码分析工具及针对特定技术组件(如mysql)的监控分析工具,是否在团队内使用要看具体情况。选择合适的工具在合适的场景,灵活解决问题即可。


上面提到了监控分层和不同层级的监控工具,在实际的落地过程中,还需要考虑其他问题,如监控工具落地的难易程度,落地成本,接入工具对性能的影响等,都是需要考虑的点。监控体系搭建,可参考如下思维导图:


640.png


最后回答一下文章开头提到的问题,如果对某些监控指标理解有误,建议系统的了解一下监控分层和不同的技术指标是在什么背景和场景下出现的。而不是用自己的已知认知模型去强行理解不了解的认知领域。

相关实践学习
通过性能测试PTS对云服务器ECS进行规格选择与性能压测
本文为您介绍如何利用性能测试PTS对云服务器ECS进行规格选择与性能压测。
相关文章
|
7月前
|
监控 JavaScript 前端开发
在生产环境中测试和监控Vue项目的方法有哪些?
在生产环境中测试和监控Vue项目的方法有哪些?
93 4
|
7月前
|
监控 测试技术
为什么要在测试管理中做测试监控和跟踪?
为什么要在测试管理中做测试监控和跟踪?
114 0
|
6月前
|
监控 测试技术
局域网监控软件的自动化测试框架搭建(使用JUnit)
本文介绍了如何使用JUnit搭建局域网监控软件的自动化测试框架。通过创建测试类和编写测试用例,如连接测试和警报功能测试,确保软件功能的正确性。测试完成后,利用HTTP POST请求将监控数据自动提交到指定网站,实现数据的实时更新和追踪。这种方法能提升测试效率,保证软件质量和稳定性。
150 3
|
3月前
|
缓存 Java 测试技术
谷粒商城笔记+踩坑(11)——性能压测和调优,JMeter压力测试+jvisualvm监控性能+资源动静分离+修改堆内存
使用JMeter对项目各个接口进行压力测试,并对前端进行动静分离优化,优化三级分类查询接口的性能
114 10
谷粒商城笔记+踩坑(11)——性能压测和调优,JMeter压力测试+jvisualvm监控性能+资源动静分离+修改堆内存
|
7月前
|
JSON 监控 测试技术
Groovy脚本编写员工上网行为监控自动化测试
本文介绍了如何使用Groovy脚本创建一个自动化工具来监控员工的网络活动。通过编写简单脚本记录员工访问的网站并打印信息,可进一步扩展为将数据保存至数据库。此外,通过设定定时任务,实现了每30分钟自动监控一次的功能。最后,展示了如何将监控数据转换为JSON格式并使用HTTP POST请求提交到网站,以实现数据的自动化上报,有助于企业保障网络安全、保护数据并提升工作效率。
178 5
|
4月前
|
监控 jenkins 测试技术
自动化测试中的“守护神”: 持续集成与代码质量监控
【8月更文挑战第31天】在软件开发的海洋里,自动化测试犹如一座灯塔,指引着项目向着高质量和高效率的方向前进。本文将深入探讨如何通过持续集成(CI)和代码质量监控相结合的方式,构建起一道坚固的防线,保障软件项目在快速迭代中不失方向。我们将一起探索这一过程中的关键实践,以及它们是如何相互作用,共同提升软件项目的可靠性和稳定性。
|
7月前
|
开发框架 监控 Java
深入探索Spring Boot的监控、管理和测试功能及实战应用
【5月更文挑战第14天】Spring Boot是一个快速开发框架,提供了一系列的功能模块,包括监控、管理和测试等。本文将深入探讨Spring Boot中监控、管理和测试功能的原理与应用,并提供实际应用场景的示例。
84 2
|
7月前
|
运维 监控 Linux
提升系统稳定性:Linux服务器性能监控与故障排查实践深入理解与实践:持续集成在软件测试中的应用
【5月更文挑战第27天】在互联网服务日益增长的今天,保障Linux服务器的性能和稳定性对于企业运维至关重要。本文将详细探讨Linux服务器性能监控的工具选择、故障排查流程以及优化策略,旨在帮助运维人员快速定位问题并提升系统的整体运行效率。通过实际案例分析,我们将展示如何利用系统资源监控、日志分析和性能调优等手段,有效预防和解决服务器性能瓶颈。
|
7月前
|
弹性计算 运维 监控
监控 HTTP 服务器的状态(测试返回码)
【4月更文挑战第28天】
72 0
|
7月前
|
监控 测试技术 API
自动化测试工具与电脑桌面监控软件的集成:Selenium与Python的无缝整合
在当今数字化时代,软件质量保证是每个软件开发团队都必须面对的重要挑战之一。自动化测试工具和电脑桌面监控软件的结合,为开发团队提供了一种有效的方式来确保软件的稳定性和性能。本文将介绍如何利用Python编程语言中的Selenium库,与桌面监控软件进行无缝整合,以实现对应用程序的自动化测试和桌面监控。
289 5