性能测试之常见性能缺陷
一、性能测试定义
性能测试,是结合被测系统应用架构、业务场景和实现细节、逻辑,对软件响应时间、处理速率、容错能力等进行分析测试,找到系统的性能瓶颈,并确认问题得到解决的过程。
二、性能测试缺陷分类
缺陷类型:硬件、网络、应用、配置、数据库、中间件
1.硬件
1)磁盘空间:磁盘空间不足导致系统运行变慢,文件、日志等无法生成存放导致的性能瓶颈。
2)CPU:CPU的核心功能是解释计算机指令以及处理数据,性能主要体现在其运行程序的速度上。影响运行速度的性能指标包括工作频率、Cache容量、指令系统和逻辑结构等参数。
3)IO读写速率:即input和output,输入和输出,主要考虑数据处理时的读写速度,页交换等情况;
4)内存:所有的程序都是运行在内存中的,其作用是用于暂时存放CPU中的运算数据,以及与外部存储器交换的数据,内存不足会限制程序的数据处理速度,因此这也是很重要的一项性能关注指标;
2.网络
1)带宽:高并发情况下,如果带宽不足,可能会导致网络资源竞争,超时等情况;
2)网络波动:这里是从网络的稳定性来描述,即性能测试的环境,需要一个稳定的网络环境;
3)CDN:即内容分发服务,有时候不同的CDN策略也会影响到“用户”感知到的系统性能表现;
4)延时:延时的值越大,对系统性能表现影响越大(比如格斗类的PVP游戏),且性能测试的结果也存在更大的偏差;
5)丢包:数据在网络上是以数据包的形式传输的,如果丢包,则可能造成报错或异常的情况;
3.应用
1)JVM:
堆内存分配:根据系统硬件条件来进行合理的堆内存分配,一般来说JVM的堆内存分配不要超过系统内存的25%较好;
垃圾回收算法:JAVA的动态垃圾回收机制,是基于不同的几种回收算法来进行的,根据具体的情况,选择合适的垃圾回收策略;
OOM:即内存溢出(out of memory),这个算是性能测试中很常见的一个问题,通常是由于代码问题造成的内存泄漏、GC不够彻底、内存被耗尽引起;
2)代码逻辑:常见的情况有不合理的线程引用和内存分配;
4.配置
1)JDK版本:在性能测试过程中,一定要确保被测系统的版本和实际生产保持一致,否则由于版本不同带来的些许差异可能会对性能测试带来很大的偏差和影响;
2)底层配置:涉及到操作系统、服务器等硬件的一些配置方式不合理,带来的性能瓶颈;
3)参数配置:系统架构设计中,各个不同的参数配置带来的性能瓶颈;
5.数据库
1)索引:索引的存在就像一个标签目录一样,在执行数据库操作时提供更为快速的执行效率,减少磁盘IO操作和执行的数据库系统时间;
2)锁:为了保证事务的原子性和隔离性,有了锁的存在,但有时候由于某些原因造成的表锁,也是性能瓶颈的一种表现;
3)表空间:不合理的表空间设计,导致的数据库性能问题;
4)慢SQL:慢SQL会导致数据库操作时间变长,增加IO读写以及引起一些列的资源竞争等问题,常见的慢SQL原因如下(以MySQL为例):
5)数据量:对同一张表来说,1W条数据和1000W条数据,对其进行操作时的性能表现也是不同的,因此在性能测试时对于数据的正确性可用性,以及数据量也是需要重点关注的;
6.中间件
1)超时:设置合理的请求或响应超时时间,是很有必要的,这点要根据具体的业务场景和系统架构来考虑,具体的超时时间,建议进行配置测试来设定;
2)线程池:线程池配置太小,很容易被使用完,太大的话又浪费资源,合理的线程池,建议进行配置测试来确定;
3)缓存策略:缓存的优点是减少请求响应过程中的传输时间,但有时候在高并发情况下,缓存很容易失效而导致缓存穿透,瞬间对服务端带来很大的压力;
4)最大连接数:关于连接数,之前的博客也介绍过,合理的连接数配置是很重要的,否则连接数太少容易导致队列等待、超时,连接数太多则浪费了系统资源;
5)通信实现方式:同步(sync)和异步(Async);
6)负载均衡:现在很多的系统都进行了服务集群,随之而来的就是负载均衡策略的实现,如果负载均衡不够“均衡”,在大数量的冲击下,容易导致某些服务的异常或者挂起;
性能测试之常见性能缺陷相关推荐
- [原创]性能测试之“Windows性能监视器”
[原创]性能测试之"Windows性能监视器" 一 Windows性能监视器 以下用Winxp中的"Windows性能监视器"为例说明: 打开控制面板-> ...
- 性能测试之前端性能优化(前端基础知识,前端性能测试常用工具,前端性能优化常见方法)
目录 1. 前端基础知识 1.1 为什么要关注前端页面的性能,了解页面的加载,渲染方式和顺序? 1.2 一次页面请求会经历哪些步骤? 1.3 页面的展示过程 2. 前端性能测试的常用工具 2.1 Go ...
- 性能测试之Jmeter元件
性能测试之Jmeter元件 1.性能测试的本质 性能测试的定义 基于协议模拟用户发请求,对服务器形成一定的负载,来测试服务器的性能指标是否满足用户(产品&公司)的需求. 关注点 时间性能 空间 ...
- 亿级PV,常见性能优化策略总结与真实案例
作者:晓明 来自:美团技术团队 0 题记 美团网是国内最大的O2O服务平台,虽然经常面临高并发.大流量等问题,但在用户体验优化上美团APP仍被众多IT同行所推崇,他们在性能优化方面积累的宝贵经验尤其值 ...
- 性能测试之性能测试的基础理论
转载于http://www.cnblogs.com/Sweettesting/ ,感谢分享! 随着软件行业的快速发展,现代的软件系统越来越复杂,功能越来越多,测试人员除了需要保证基本的功能测试质量,性 ...
- java常见性能优化_十大最常见的Java性能问题
java常见性能优化 Java性能是所有Java应用程序开发人员都关心的问题,因为快速使应用程序与使其正常运行同等重要. 史蒂文·海恩斯(Steven Haines)使用他在Java性能问题上的个人经 ...
- 影响 oracle 性能的常见事件
影响oracle 性能的常见事件,比其他任何事件都能使速度减慢的事件: db file scattered read:该事件通常与全表扫描有关.因为全表扫描是被放入内存中进行 ...
- SQL性能优化常见措施(Lock wait timeout exceeded)
SQL性能优化常见措施 目 录 1.mysql中explain命令使用 2.mysql中mysqldumpslow的使用 3.mysql中修改my.ini配置文件记录日志 4.mysql中如何加索引 ...
- 老李分享知识:性能测试之TPS和吞吐率
老李分享知识:性能测试之TPS和吞吐率 当增大系统的压力(或添加并发用户数)时,吞吐率和TPS的改变曲线呈大体一致,则系统基本稳定. 若压力增大时,吞吐率的曲线添加到一定程度后出现改变缓慢, ...
最新文章
- 规格选项表管理之删除规格选项表数据
- 怎么把虚拟机清空内存_深入理解java虚拟机1——内存管理机制与回收机制
- div css图片列表实例
- 子网,变长子网及超网(CIDR)
- mysql 优化设计库_数据库优化设计与SQL优化
- 为ie和chrome FF单独设置样式的“条件注释法”、“类内属性前缀法”、“选择器前缀法”、实现方法 案例(推荐)
- NHibernate笔记Ⅲ--关于EF和NH的比较
- 股票的资产重组什么意思?
- [Java] 蓝桥杯ALGO-99 算法训练 薪水计算
- mybatis list为入参_Mybatis进阶学习
- 程序员吐槽:互联网就是高薪富士康,还不如在事业单位混日子
- BUUCTF misc 专题(77)间谍启示录
- 测试显卡游戏里FPS温度性能的软件,求一个在游戏中显示FPS 显卡温度之类的工具...
- 小学生C++趣味编程 视频集
- C/C++经典算法——约瑟夫问题
- Diamond安装步骤
- Android开发者跳槽必备:写给程序员的Flutter详细教程,大厂直通车!
- 零死角玩转Android6.0系统Healthd深入分析
- PTA出现EOFError
- python画k线图_小白学Python(14)——pyecharts 绘制K线图 Kline/Candlestick