性能测试与故障诊断

简介:
1.认识软件性能测试 
一般说来,软件性能是衡量软件对于用户及时性要求的符合程度,它是软件产品的一种特征,可以用响应时间或效率来度量,如果从广义上来说,软件的性能还包括软件的可扩展性,可靠性等。 
大多数情况下,软件性能往往是通过软件和其它组件一起工作时表现出来,如所涉及的各种硬件设备,网络设备,各种应用中间件,数据库服务器等,特别是在一些大型分布式应用中更是如此,所以我们通常所说的软件性能测试就是考察软件在特定软硬件环境中的整体性能状况。 
通常对软件性能的关注有多个方面,不同的人员关注点不同,从用户角度说,软件性能是软件对用户操作的响应时间,更简单地说,用户更关注于在打开一个链接或按一个按钮时,页面返回所需要多长时间,如果太长,用户无法忍受,他对于此软件所得出的结论就是:性能太差!从系统管理员角度来说,他更关注的可能是整个系统所处的状态,如各个服务器 CPU 、内存、磁盘流量如何?应用服务器 JVM 目前占用为多少?另外管理员还会关注系统具有多大的可扩展性,也就是说系统可能的最大容量是什么,处理并发的能力等等。但对于开发商来讲,如何通过调整系统设置等提高软件的性能表现?如何发现并解决软件设计和开发过程中产生的由于多用户访问引发的软件故障,也就是说,最关注的是使性能表现不佳的因素和由于大量用户访问引发的软件故障。

2.性能测试与故障诊断的关系 
有人把测试比作给病人看病的过程,这个比喻很恰当。如果说性能测试是给人做普通健康体检的话,那么故障诊断就是进一步给人做病理分析、进而确诊的过程。我们知道,人在做体检的话,体检项目不外乎是身高、体重、眼耳口鼻、肝功、血液等一般常规检查,但却很少做 CT 、胃镜等非常规检验。在做软件性能测试时,我们往往关注的是系统所表现出来的整体状况,如系统响应时间、服务器资源占用、系统在可接受时间内所达到的最大并发数等。而故障诊断则是针对系统所表现出的整体性能不佳所进行的进一步的检查。当系统响应时间超长时,我们就查看是什么因素导致了问题的产生,是数据库服务器响应慢,还是应用服务器起主要原因,如果是数据库服务器响应慢,是因为 SQL 语句直接引起,还是数据库参数配置不当等原因,另外诸如内存泄露,短期对象,性能瓶颈,数据库配置, Web Server 配置, J2EE 资源配置等问题,这些深层次的东西才属于故障诊断所要解决的问题。在性能测试的基础上,我们为用户提供性能诊断建议报告。

3.帮助用户解决的问题 
作为软件性能测试的工作者,必须立足于为所有与系统有关的群体服务,解决他们所关心的性能问题,我们通过性能测试和故障诊断,一方面能够告知终端用户在大量用户并发访问系统时响应时间表现如何,同时也可以告知系统管理者在大量用户并发访问系统时,服务器或是网络所处的状态如何,同时通过进一步地进行故障诊断,帮助开发人员找到问题原因,使他们尽快地进行修改。
 
性能调优
在经过性能测试、故障诊断过程之后,接下来要进行的工作就是系统性能调优。 
如果仍以给病人看病比喻软件测试过程,那么性能调优将类似于给病人开药方。开药方的目的是让病人尽快恢复健康,而性能调优的过程是使整个系统性能处于最佳状况。

由于目前大多数应用系统都是基于分布式架构进行布署,系统性能会与所涉及的各个组件有关:操作系统、应用中间件,数据库服务器、硬件设备等,因此性能调优的过程也应围绕这几部分来进行。

(1)操作系统的调优 
因为软件系统各组件运行于操作系统之上,因此首先确保操作系统在硬件环境上处于最优状态。操作系统内有一定的环境参数和设置可以用来调优 Java 性能,比如针对主流中件间有特定的设置参数,需要概据实际情况进行更改。

(2)应用服务器调优: 
目前比较流行的应用服务器有 WEBLOGIC 、 WEBSPHERE 等,应用服务器在 JVM 、线程池等方面的优化可以在一定程度上提高系统的最大并发用户数及系统运行效率。

(3)数据库服务器调优 
目前主流的数据库产品主要有 ORACLE 、 SQL SERVER 、 DB2 、 SYBASE ,不同的应用系统所用的数据库不同,相应的调优策略也不尽同。 
(4)应用程序的调优 
应用程序的调优工作一般是由开发人员来解决,因为只有他们对于系统的内部运行最为熟悉,但是作为系统调优的一部分,性能测试工程师必须考虑到。
 
(5)硬件问题 
在软件层面上的调优策略使用后仍达不到用户性能需求的情况下,可能就需要进行硬件的升级。 还有些时候,硬件故障可以直接导致性能的下降,特别是在压力测试过程中,经常出现由于硬件原因导致无法访问服务器的现象,对于存在负载均衡的应用系统来说,故障虽不致于使系统处于瘫痪状态,但是却使得所有的压力集中于其它服务器上,直接导致系统运行效率低下。 另外,由于系统生成的网络通信业务拥挤或者带宽不足,也无法满足处理正常通信的要求。网络配置和方法会对性能和网络的可用性产生重大影响。应当重视的是,大多数网络问题都有带宽和通信业务限制。换句话说,必须确定网络能够处理期望的网络通信业务。
有时,故障诊断工作结束后,相应的调优方案马上就可以得出,但是有些调优方案却得费些功夫。比如我们发现系统响应时间慢是因为数据库进行了全表扫描而造成,这种情况下,我们只需在一个相应的表上建一个索引即可;但是如果发现分配给数据库的内存大小不合适,我们并不能马上给出一个最佳分配方案,必须经过几次调试后,才能落实调优策略。


本文转自elbertchen 51CTO博客,原文链接:http://blog.51cto.com/linkyou/282623,如需转载请自行联系原作者
相关文章
|
人工智能 前端开发 JavaScript
【AI】命令行调用大模型
通过命令行调用AI大模型以提高效率,文章介绍了一个使用前端npm的方法。首先创建npm包项目,初始化配置,然后编写`constant.js`、`kiwi.js`和`main.js`三个文件,分别存放API密钥、调用接口和主逻辑。在`kiwi.js`中使用axios与大模型API交互,`main.js`接收命令行参数并输出结果。通过修改`package.json`设置入口文件,并使用`npm link`全局安装,实现命令行调用,如`moon 你好`。
843 0
|
5月前
|
人工智能 自然语言处理 安全
MCP化:从特征提炼到封装实践
MCP作为连接大模型与外部世界的桥梁,已悄然重塑开发者生态。它不是简单的API包装,而是标准化协议,让服务“AI-ready”,从而释放代理的潜力。本文将深度剖析适合MCP化的服务特征、封装过程中的核心技巧,以及如何定义一个优秀的MCP服务器,并通过业界标杆案例剖析其实践路径。
528 12
|
3月前
|
JSON 监控 API
打造智能通知中心:利用n8n的HTTP Request节点聚合多平台消息
在信息碎片化时代,n8n助力高效整合多平台消息。本文教你利用其HTTP Request节点,聚合GitHub、天气、新闻等数据,构建智能通知中心,通过Slack统一推送,实现自动化信息管理,提升工作效率。
|
10月前
|
人工智能 Java 数据库
飞算 JavaAI:革新电商订单系统 Spring Boot 微服务开发
在电商订单系统开发中,传统方式耗时约30天,需应对复杂代码、调试与测试。飞算JavaAI作为一款AI代码生成工具,专注于简化Spring Boot微服务开发。它能根据业务需求自动生成RESTful API、数据库交互及事务管理代码,将开发时间缩短至1小时,效率提升80%。通过减少样板代码编写,提供规范且准确的代码,飞算JavaAI显著降低了开发成本,为软件开发带来革新动力。
|
10月前
|
存储 安全 算法
鸿蒙NEXT如何保证应用安全:详解鸿蒙NEXT数字签名和证书机制
本文对鸿蒙NEXT公开资料进行了深入分析和解读,梳理了鸿蒙单框架应用的签名机制,拆解每一步的实操过程和背后的实现原理,并对源码分析整理签名的校验机制。从中管中窥豹,探究鸿蒙系统的安全设计思路,给从事鸿蒙研发的同学提供一些借鉴。
1114 3
|
11月前
|
缓存 Dubbo Java
理解的Java中SPI机制
本文深入解析了JDK提供的Java SPI(Service Provider Interface)机制,这是一种基于接口编程、策略模式与配置文件组合实现的动态加载机制,核心在于解耦。文章通过具体示例介绍了SPI的使用方法,包括定义接口、创建配置文件及加载实现类的过程,并分析了其原理与优缺点。SPI适用于框架扩展或替换场景,如JDBC驱动加载、SLF4J日志实现等,但存在加载效率低和线程安全问题。
586 7
理解的Java中SPI机制
|
编解码 人工智能 文件存储
轻量级网络论文精度笔记(二):《YOLOv7: Trainable bag-of-freebies sets new state-of-the-art for real-time object ..》
YOLOv7是一种新的实时目标检测器,通过引入可训练的免费技术包和优化的网络架构,显著提高了检测精度,同时减少了参数和计算量。该研究还提出了新的模型重参数化和标签分配策略,有效提升了模型性能。实验结果显示,YOLOv7在速度和准确性上超越了其他目标检测器。
477 0
轻量级网络论文精度笔记(二):《YOLOv7: Trainable bag-of-freebies sets new state-of-the-art for real-time object ..》
|
SQL 弹性计算 安全
阿里云服务器租用价格:包年包月收费标准与最新活动价格参考
本文为大家分享阿里云服务器包年包月收费标准,云服务器最新活动价格,以及后续费挂载数据盘、设置密码和安全组等操作教程,以供参考。
|
消息中间件 缓存 Java
亿级流量电商平台微服务架构详解
【10月更文挑战第2天】构建一个能够处理亿级流量的电商平台微服务架构是一个庞大且复杂的任务,这通常涉及到多个微服务、数据库分库分表、缓存策略、消息队列、负载均衡、熔断降级、分布式事务等一系列高级技术和架构模式。
379 3
|
存储 NoSQL 分布式数据库
数据库的演进之路:从传统到现代,技术的飞跃与应用
一、引言 数据库作为数据存储和管理的核心工具,随着信息技术的快速发展,经历了从简单到复杂、从单机到分布式的演进过程

热门文章

最新文章