性能测试从零开始实施指南——性能监控篇

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
应用实时监控服务-用户体验监控,每月100OCU免费额度
性能测试 PTS,5000VUM额度
简介: 狭义上的APM单指应用程序的监控,如应用的各接口性能和错误监控,分布式调用链路跟踪,以及其他各类用于诊断(内存,线程等)的监控信息等。

  性能测试过程中,监控分析和调优是最核心也是占比最大的一部分。性能分析的目的是找出系统性能存在的瓶颈与风险,性能调优就是尽可能用更少的资源提供更好的服务。而其关键点,就是生成负载、监控相关指标性能测试前期的需求调研开始前的准备工作,都是为了保证后期的监控分析调优能顺利且高效进行。那么,一个完整的监控体系,需要包含哪些?这篇文章,聊聊我在工作实践中如何监控,以及比较完善的监控体系,都包含哪些指标和工具。


在讲述监控分级体系之前,有必要了解下面的概念:


APM(Application Performance Management):对应用程序性能和可用性的监控管理。


狭义上的APM单指应用程序的监控,如应用的各接口性能和错误监控,分布式调用链路跟踪,以及其他各类用于诊断(内存,线程等)的监控信息等。


广义上的APM, 除了应用层的监控以外,还包括手机App端监控,页面端监控,容器、服务器监控,以及其他平台组件如中间件容器,数据库等层面的监控。


APM监控的目的:主要包含如下两方面:


1、事前:及时预警发现故障;

2、事后:提供详实的数据用于追查定位问题。


监控分级体系


640.jpg

 

一、中间件监控


中间件监控,主要包含如下两个方面:


1、缓存


IOPS:一般指用于计算机存储设备性能测试的计量方式,可以视为每秒的读写次数。


命中率:缓存的命中率是一个很重要的性能监控指标,它指的是应用服务从缓存读取数据的百分比,命中率越高,服务的延时越低,性能越好。


连接数:指的是请求缓存所创建的http连接数,以Redis来说,最大连接数为10000。监控连接数的目的在于防止缓存负载过高导致雪崩。


2、消息队列


Topic:在消息队列中间件(kafka、MQ)中,topic指的是一种消息类型。采用发布订阅模式,由消费者来订阅该类消息并处理。


QPS:即每秒请求数,在性能测试中,QPS主要用来衡量应用服务单位时间内承受的负载请求量。


消息总量:消息队列通过异步处理消息的模式,来达到削峰填谷,提升性能的目的。但其本身的消息持有量是有限的。因此监控消息总量防止消息积压,也是监控中必不可少的一环。

 

二、压测数据监控


1、指标


TPS:每秒事务数。在性能测试中,主要用来衡量服务端单位时间内对请求的处理能力。


ART:平均响应时间,用来衡量服务端在一个时间段内,处理请求的平均耗时,这也是衡量系统性能的关键指标。


99RT:意指99%的请求响应时间在某个范围内。由于很多因素的影响,请求耗时的分布是不均的,因此99%RT可以从另一个维度衡量系统性能的可用性。


Error%:错误率。当然对应的有请求成功率,业务成功率,通过这些指标,可以直观的衡量系统各维度的性能表现。


2、工具


jmeter:java开源的性能测试工具,其本身提供了较为丰富的监控组件,支持二次开发,是现在业内使用比较广泛的负载工具。


loadrunner:商业收费的性能测试工具。


三、链路监控


链路监控的重要性不言而喻,搭建基于时间序列数据库的监控报警系统,满足业务监控需求,可以更好的辅助大家定位系统问题,甚至自动(提早)发现问题。


1、指标


JVM


640.jpg


2、工具


CAT


640.jpg


640.jpg


其他类似的工具还有:Zipkin、pinpoint、skywalking。

 

四、DB监控


数据库的监控,在性能测试过程中,主要监控如下指标:


CPU:CPU资源耗用,是很重要的一项指标,如果DB挂了,那么整体的所有服务,也就无法为用户提供服务。


慢sql:即当前正在执行的耗时比较长的SQL语句,这些是影响DB性能的重要因素。


最大连接数:即DB可支持的同时保持请求连接的数量。

 

五、日志监控


日志的重要性不言而喻,基本上绝大多数的监控系统都是基于日志来进行聚合展示,排查问题的。最常见的日志监控系统,就是所谓的ELK。


现在公有云服务基本都提供日志服务,比如阿里云的logstore。

 

六、安全监控


一般性能测试过程中,涉及安全的部分比较少,但数据信息的安全是很重要的。对于中小型企业而言,安全监控,一般都是利用专业的三方厂商工具来进行。


PS:一般安全部门为了更好的监控,会在防火墙和网关之间搭建一层WAF来更好的保障安全,但WAF层会有一定的延时,性能测试,有时候需要关注这一层。

 

七、API监控


性能测试过程中,无论是前期的流量模型评估还是压测过程中的实时监控,对于API层的监控,都是很重要的。且很多时候,压测报错,都是API的各种问题。


可用性:API能否像它所承诺的提供正常的服务(处理能力)。


正确性:API对用户请求的正确处理表现。

 

八、业务监控


业务监控的重要性不言而喻,无论是对于数据分析还是服务可用性评级,都是很重要的。以电商系统而言,常见的监控指标有:PV、DAU、每分钟订单量/支付量


640.jpg

 

九、客户端监控


这里为什么要提到客户端监控,因为用户端可用才是真正的可用!!!(所谓的可用性,一定是业务/用户可用)


客户端监控主要关注这几项指标:


页面打开速度(测速)

页面稳定性(JS Erro)

外部服务调用成功率(API)


640.png


可以通过监控大盘的方式,来多维度的展示相关的监控指标,比如:


640.jpg

 

十、服务资源监控


服务资源监控,作为性能测试和运维体系中最基本的监控,目的是对系统不间断实时监控,实时反馈系统当前状态,保证服务可用性安全性,保证业务持续稳定运行。


监控主要关注如下指标:


CPU:Total%、Sys%、User%、每个CPU%;

磁盘:读写吞吐率(MBps)、读写次数(次/s);

内存:Menery%、free-memory、SWAP%;

网络:网卡出/入带宽(kbps)、网卡出/入包量(个/s)、TCP连接状态;

进程:进程端口、Run queue;

Point:上下文切换、运行队列;


640.jpg

 

本篇博客的主要目的是建立一个较为完善的监控知识体系,文中的示意图都是基于grafana搭建的,内容仅供参考。。。

相关实践学习
通过性能测试PTS对云服务器ECS进行规格选择与性能压测
本文为您介绍如何利用性能测试PTS对云服务器ECS进行规格选择与性能压测。
相关文章
|
8月前
|
设计模式 安全 测试技术
【软件设计师备考 专题 】系统实施:程序设计和系统测试
【软件设计师备考 专题 】系统实施:程序设计和系统测试
142 0
|
1月前
|
监控 测试技术 定位技术
探索软件测试中的自动化测试框架选择与实施###
本文不概述传统意义上的摘要内容,而是直接以一段对话形式引入,旨在激发读者兴趣。想象一下,你是一名勇敢的探险家,面前摆满了各式各样的自动化测试工具地图,每张地图都指向未知的宝藏——高效、精准的软件测试领域。我们将一起踏上这段旅程,探讨如何根据项目特性选择合适的自动化测试框架,并分享实施过程中的关键步骤与避坑指南。 ###
50 4
|
8月前
|
敏捷开发 监控 测试技术
深入探索自动化测试框架的设计与实施
【5月更文挑战第23天】 在快速迭代的软件开发周期中,自动化测试已成为提升效率、确保质量的关键手段。本文将深入分析自动化测试框架的设计原则和实施策略,通过具体案例探讨如何构建一个既灵活又稳定的测试框架来支持持续集成和持续部署(CI/CD)的实践。文中不仅涉及框架选择、架构设计,还详细讨论了脚本开发、维护以及性能优化等方面的挑战与解决方案,旨在为读者提供一套系统化的自动化测试实施指南。
|
5月前
|
存储 监控 数据可视化
性能监控之JMeter分布式压测轻量日志解决方案
【8月更文挑战第11天】性能监控之JMeter分布式压测轻量日志解决方案
115 0
性能监控之JMeter分布式压测轻量日志解决方案
|
6月前
|
测试技术
软件测试自动化策略与实施:提升质量与效率的关键
【7月更文挑战第25天】软件测试自动化是提高软件质量和效率的重要手段。通过明确自动化测试目标、选择合适的测试工具、制定详细的测试计划、建立稳定的测试框架以及持续优化与迭代,企业可以构建高效、可靠的自动化测试体系。在实施过程中,注重与项目团队的沟通与协作,确保自动化测试与项目开发的紧密结合,共同推动产品质量的不断提升。
|
6月前
|
Devops jenkins 测试技术
如何在Visual Basic项目中实施单元测试以确保代码健壮性
【7月更文挑战第2天】本文探讨了如何在Visual Basic项目中实施单元测试以确保代码健壮性。单元测试基础包括验证代码单元的功能,促进重构和提高代码质量。MSTest、NUnit和xUnit是VB.NET的单元测试工具。遵循TDD原则,保持测试独立,关注单一功能,并确保快速执行。示例展示了如何为`Calculator`类的加法方法编写MSTest。持续集成与自动化测试工具如Jenkins和Azure DevOps辅助测试运行和代码质量检查。单元测试是提升软件质量和开发效率的关键实践,反映了良好的开发文化。
70 2
|
6月前
|
Prometheus 监控 数据可视化
性能测试:主流性能监控工具介绍
Linux系统中,`vmstat`和`top`提供基本监控;Nmon是实时性能分析工具,轻量且功能丰富;Collectd+InfluxDB+Grafana组合用于系统数据收集、存储和可视化;Prometheus+Grafana则提供灵活的监控和定制化仪表板。这些工具帮助企业监控系统性能,及时发现和解决问题。
|
8月前
|
敏捷开发 监控 Devops
深入理解与实施软件测试中的持续集成策略
【5月更文挑战第29天】 在快速迭代的软件开发过程中,持续集成(CI)策略是确保产品质量和加速市场交付的关键实践。本文将探讨持续集成在软件测试中的应用,分析其对提高测试效率、降低缺陷率以及优化资源分配的影响,并讨论如何在现有的测试框架中有效地实施CI策略。通过案例分析和最佳实践分享,旨在为读者提供一套系统的方法论,以便更好地融入现代敏捷开发流程,实现软件测试工作的自动化和高效化。
|
8月前
|
安全 数据管理 测试技术
网络安全与信息安全:防范漏洞、加强加密与提升安全意识深入探索自动化测试框架的设计原则与实践应用化测试解决方案。文章不仅涵盖了框架选择的标准,还详细阐述了如何根据项目需求定制测试流程,以及如何利用持续集成工具实现测试的自动触发和结果反馈。最后,文中还将讨论测试数据管理、测试用例优化及团队协作等关键问题,为读者提供全面的自动化测试框架设计与实施指南。
【5月更文挑战第27天】 在数字化时代,网络安全与信息安全已成为维护国家安全、企业利益和个人隐私的重要环节。本文旨在分享关于网络安全漏洞的识别与防范、加密技术的应用以及提升安全意识的重要性。通过对这些方面的深入探讨,我们希望能为读者提供一些实用的建议和策略,以应对日益严峻的网络安全挑战。 【5月更文挑战第27天】 在软件开发周期中,自动化测试作为保障软件质量的关键步骤,其重要性日益凸显。本文旨在剖析自动化测试框架设计的核心原则,并结合具体案例探讨其在实际应用中的执行策略。通过对比分析不同测试框架的优缺点,我们提出一套高效、可扩展且易于维护的自动
|
测试技术 UED
如何实施测试用例评审维护与更新?附模板
如何实施测试用例评审维护与更新?附模板
188 0