- 浏览: 456464 次
- 性别:
- 来自: 深圳
文章分类
- 全部博客 (354)
- 面向对象分析设计/系统架构 (12)
- Mysql/Orcal11g (13)
- JSP/Java//Python/Xharbour (66)
- 软件测试 (21)
- 信息安全小知识 (1)
- Android (5)
- IT生活/哲学/兵法 (23)
- 软件工程/UML/需求分析学习与实践 (6)
- 操作系统/网络/组成原理 (9)
- 持续集成Maven/Hudson/自动化测试 (9)
- eBay /Paypal developer (10)
- Hadoop/HBase/Solr (0)
- 重构分析及其思考 (2)
- 企业架构 (7)
- 分析模式/设计模式 (4)
- SSH学习笔记 (1)
- Quartz及其JWatch监控 (0)
- Linux服务器 (0)
- ExtJs学习笔记 (1)
- 重读java编程思想 (3)
- ESB/SOA/WebServices (0)
- SpringMVC/Struts/Hibernate/Spring (7)
- Xharbour/Pelles C/ SQLite3 (0)
- Magento 电商 (1)
- Object C (1)
- note/redis (0)
- SpringBoot (0)
最新评论
-
snow8261:
太粗略了。
企业架构之数据架构 -
haithink:
面试成功没?
JVM 加载Class文件的原理及其机制 -
feisi0003731843:
不好意思我没有重启,重启后好多了,可有的地方回放还是不成功的。 ...
Selenium IDE测试ExtJs一种测试解决办法 -
feisi0003731843:
这个好像不行吧,我试过了不好使啊。还是用id来做的。不能用啊。 ...
Selenium IDE测试ExtJs一种测试解决办法 -
yuchensuifeng:
您好,静态页面是可以的,但是,我指定error-page为js ...
JSP创建错误处理页面
声明:此文章是从网络上转载下来的,至于真实出处无法找到。
在对系统进行测试的时候,通常有一个难点那就是使用LR、JMeter等进行了性能测试,但是很难进行测试后的分析。
以下很大一部分是从网上转载下的一位前辈对性能测试后的分析的见解。
分析原则:
1. 具体问题具体分析(这是由于不同的应用系统,不同的测试目的,不同的性能关注点)
2. 查找瓶颈时按以下顺序,由易到难。
服务器硬件瓶颈 --> 网络瓶颈(对局域网,可以不考虑) --> 服务器操作系统瓶颈(参数配置) --> 中间件瓶颈(参数配置,数据库,Web服务器等) ---> 应用瓶颈(SQL 语句、数据库设计、业务逻辑、算法等等)
注: 以上过程并不是每个分析中都需要的,要根据测试目的和要求来确定分析的深度。对于一些要求低的,我们分析到应用系统在将来的负载压力(并发用户数、数据量)下,系统的硬件瓶颈在哪里就可以了。
分段排除法
分析的信息来源:
1. 根据场景运行过程中的错误提示信息
2. 根据测试结果收集到的监控指标数据
一、 错误提示分析
分析实例:
1、 Error: Failed to connect to server "10.10.10.30:8000":[10060] Connection
2、 Error: timed out Error:Server "10.10.10.30" has shut down the connection prematurely
分析:
A、 应用服务死掉 (小用户时:程序上的问题。程序上处理数据库的问题)
B、 应用服务没死掉(应用服务参数设置问题)
例如:在许多客户端连接WebLogic应用服务器被拒绝,而在服务器端没有错误显示,则可能是WebLogic中的server元素的AcceptBackLog属性设置过低。如果连接时收到Connection refused消息,说明应提高该值,每次增加25%
C、数据库的链接(1、在应用服务器的性能参数可能太小 2、数据库启动的最大连接数(跟硬件的内存有关))
3、 Error: Page download timeout(120 seconds) has expired
分析:可能是以下的原因造成
A、 应用服务参数设置太大导致服务器的瓶颈
B、 页面中图片太多
C、 在程序处理表的时候检查字段太大多
二. 监控指标数据分析
1. 最大并发用户数:
应用系统在当前环境(硬件环境、网络环境、软件环境(参数配置))下能承受的最大并发用户数。
在方案运行中,如果出现了大于3个用户的业务操作失败,或出现了服务器shutdown的情况,则说明在当前环境下,系统承受不了当前并发用户的负载压力,那么最大并发用户数就是前一个没有出现这种现象的并发用户数。
如果测得的最大并发用户数达到了性能要求,且各服务器资源情况良好,业务操作响应时间也达到了用户要求,那么OK。否则,再根据各服务器的资源情况和业务操作响应时间进一步分析原因所在。
2.业务操作响应时间:
• 分析方案运行情况应从平均事务响应时间图和事务性能摘要图开始。使用“事务性能摘要”图,可以确定在方案执行期间响应时间过长的事务。
• 细分事务并分析每个页面组件的性能。查看过长的事务响应时间是由哪些页面组件引起的?问题是否与网络或服务器有关?
• 如果服务器耗时过长,请使用相应的服务器图确定有问题的服务器度量并查明服务器性能下降的原因。如果网络耗时过长,请使用“网络监视器”图确定导致性能瓶颈的网络问题
3.服务器资源监控指标:
内存:
1 UNIX资源监控中指标内存页交换速率(Paging rate),如果该值偶尔走高,表明当时有线程竞争内存。如果持续很高,则内存可能是瓶颈。也可能是内存访问命中率低。
2 Windows资源监控中,如果Process\Private Bytes计数器和Process\Working Set计数器的值在长时间内持续升高,同时Memory\Available bytes计数器的值持续降低,则很可能存在内存泄漏。
内存资源成为系统性能的瓶颈的征兆:
很高的换页率(high pageout rate);
进程进入不活动状态;
交换区所有磁盘的活动次数可高;
可高的全局系统CPU利用率;
内存不够出错(out of memory errors)
处理器:
1 UNIX资源监控(Windows操作系统同理)中指标CPU占用率(CPU utilization),如果该值持续超过95%,表明瓶颈是CPU。可以考虑增加一个处理器或换一个更快的处理器。如果服务器专用于SQL Server,可接受的最大上限是80-85%
合理使用的范围在60%至70%。
2 Windows资源监控中,如果System\Processor Queue Length大于2,而处理器利用率(Processor Time)一直很低,则存在着处理器阻塞。
CPU资源成为系统性能的瓶颈的征兆:
很慢的响应时间(slow response time)
CPU空闲时间为零(zero percent idle CPU)
过高的用户占用CPU时间(high percent user CPU)
过高的系统占用CPU时间(high percent system CPU)
长时间的有很长的运行进程队列(large run queue size sustained over time)
磁盘I/O:
1 UNIX资源监控(Windows操作系统同理)中指标磁盘交换率(Disk rate),如果该参数值一直很高,表明I/O有问题。可考虑更换更快的硬盘系统。
2 Windows资源监控中,如果 Disk Time和Avg.Disk Queue Length的值很高,而Page Reads/sec页面读取操作速率很低,则可能存在磁盘瓶径。
I/O资源成为系统性能的瓶颈的征兆 :
过高的磁盘利用率(high disk utilization)
太长的磁盘等待队列(large disk queue length)
等待磁盘I/O的时间所占的百分率太高(large percentage of time waiting for disk I/O)
太高的物理I/O速率:large physical I/O rate(not sufficient in itself)
过低的缓存命中率(low buffer cache hit ratio(not sufficient in itself))
太长的运行进程队列,但CPU却空闲(large run queue with idle CPU)
4.数据库服务器:
SQL Server数据库:
1 SQLServer资源监控中指标缓存点击率(Cache Hit Ratio),该值越高越好。如果持续低于80%,应考虑增加内存。
2 如果Full Scans/sec(全表扫描/秒)计数器显示的值比1或2高,则应分析你的查询以确定是否确实需要全表扫描,以及SQL查询是否可以被优化。
3 Number of Deadlocks/sec(死锁的数量/秒):死锁对应用程序的可伸缩性非常有害,并且会导致恶劣的用户体验。该计数器的值必须为0。
4 Lock Requests/sec(锁请求/秒),通过优化查询来减少读取次数,可以减少该计数器的值。
Oracle数据库:
1 如果自由内存接近于0而且库快存或数据字典快存的命中率小于0.90,那么需要增加SHARED_POOL_SIZE的大小。
快存(共享SQL区)和数据字典快存的命中率:
select(sum(pins-reloads))/sum(pins) from v$librarycache;
select(sum(gets-getmisses))/sum(gets) from v$rowcache;
自由内存: select * from v$sgastat where name=’free memory’;
2 如果数据的缓存命中率小于0.90,那么需要加大DB_BLOCK_BUFFERS参数的值(单位:块)。
缓冲区高速缓存命中率:
select name,value from v$sysstat where name in (’db block gets’,
‘consistent gets’,'physical reads’) ;
Hit Ratio = 1-(physical reads / ( db block gets + consistent gets))
3 如果日志缓冲区申请的值较大,则应加大LOG_BUFFER参数的值。
日志缓冲区的申请情况 :
select name,value from v$sysstat where name = ‘redo log space requests’ ;
4 如果内存排序命中率小于0.95,则应加大SORT_AREA_SIZE以避免磁盘排序 。
内存排序命中率 :
select round((100*b.value)/decode((a.value+b.value), 0, 1, (a.value+b.value)), 2)from v$sysstat a, v$sysstat b where a.name=’sorts (disk)’ and b.name=’sorts (memory)’
注:上述SQL Server和Oracle数据库分析,只是一些简单、基本的分析,特别是Oracle数据库的分析和优化,是一门专门的技术,进一步的分析可查相关资料。
在对系统进行测试的时候,通常有一个难点那就是使用LR、JMeter等进行了性能测试,但是很难进行测试后的分析。
以下很大一部分是从网上转载下的一位前辈对性能测试后的分析的见解。
分析原则:
1. 具体问题具体分析(这是由于不同的应用系统,不同的测试目的,不同的性能关注点)
2. 查找瓶颈时按以下顺序,由易到难。
引用
服务器硬件瓶颈 --> 网络瓶颈(对局域网,可以不考虑) --> 服务器操作系统瓶颈(参数配置) --> 中间件瓶颈(参数配置,数据库,Web服务器等) ---> 应用瓶颈(SQL 语句、数据库设计、业务逻辑、算法等等)
注: 以上过程并不是每个分析中都需要的,要根据测试目的和要求来确定分析的深度。对于一些要求低的,我们分析到应用系统在将来的负载压力(并发用户数、数据量)下,系统的硬件瓶颈在哪里就可以了。
分段排除法
分析的信息来源:
1. 根据场景运行过程中的错误提示信息
2. 根据测试结果收集到的监控指标数据
一、 错误提示分析
分析实例:
1、 Error: Failed to connect to server "10.10.10.30:8000":[10060] Connection
2、 Error: timed out Error:Server "10.10.10.30" has shut down the connection prematurely
分析:
A、 应用服务死掉 (小用户时:程序上的问题。程序上处理数据库的问题)
B、 应用服务没死掉(应用服务参数设置问题)
引用
例如:在许多客户端连接WebLogic应用服务器被拒绝,而在服务器端没有错误显示,则可能是WebLogic中的server元素的AcceptBackLog属性设置过低。如果连接时收到Connection refused消息,说明应提高该值,每次增加25%
C、数据库的链接(1、在应用服务器的性能参数可能太小 2、数据库启动的最大连接数(跟硬件的内存有关))
3、 Error: Page download timeout(120 seconds) has expired
分析:可能是以下的原因造成
A、 应用服务参数设置太大导致服务器的瓶颈
B、 页面中图片太多
C、 在程序处理表的时候检查字段太大多
二. 监控指标数据分析
1. 最大并发用户数:
应用系统在当前环境(硬件环境、网络环境、软件环境(参数配置))下能承受的最大并发用户数。
引用
在方案运行中,如果出现了大于3个用户的业务操作失败,或出现了服务器shutdown的情况,则说明在当前环境下,系统承受不了当前并发用户的负载压力,那么最大并发用户数就是前一个没有出现这种现象的并发用户数。
如果测得的最大并发用户数达到了性能要求,且各服务器资源情况良好,业务操作响应时间也达到了用户要求,那么OK。否则,再根据各服务器的资源情况和业务操作响应时间进一步分析原因所在。
2.业务操作响应时间:
• 分析方案运行情况应从平均事务响应时间图和事务性能摘要图开始。使用“事务性能摘要”图,可以确定在方案执行期间响应时间过长的事务。
• 细分事务并分析每个页面组件的性能。查看过长的事务响应时间是由哪些页面组件引起的?问题是否与网络或服务器有关?
• 如果服务器耗时过长,请使用相应的服务器图确定有问题的服务器度量并查明服务器性能下降的原因。如果网络耗时过长,请使用“网络监视器”图确定导致性能瓶颈的网络问题
3.服务器资源监控指标:
内存:
1 UNIX资源监控中指标内存页交换速率(Paging rate),如果该值偶尔走高,表明当时有线程竞争内存。如果持续很高,则内存可能是瓶颈。也可能是内存访问命中率低。
2 Windows资源监控中,如果Process\Private Bytes计数器和Process\Working Set计数器的值在长时间内持续升高,同时Memory\Available bytes计数器的值持续降低,则很可能存在内存泄漏。
内存资源成为系统性能的瓶颈的征兆:
很高的换页率(high pageout rate);
进程进入不活动状态;
交换区所有磁盘的活动次数可高;
可高的全局系统CPU利用率;
内存不够出错(out of memory errors)
处理器:
1 UNIX资源监控(Windows操作系统同理)中指标CPU占用率(CPU utilization),如果该值持续超过95%,表明瓶颈是CPU。可以考虑增加一个处理器或换一个更快的处理器。如果服务器专用于SQL Server,可接受的最大上限是80-85%
合理使用的范围在60%至70%。
2 Windows资源监控中,如果System\Processor Queue Length大于2,而处理器利用率(Processor Time)一直很低,则存在着处理器阻塞。
CPU资源成为系统性能的瓶颈的征兆:
很慢的响应时间(slow response time)
CPU空闲时间为零(zero percent idle CPU)
过高的用户占用CPU时间(high percent user CPU)
过高的系统占用CPU时间(high percent system CPU)
长时间的有很长的运行进程队列(large run queue size sustained over time)
磁盘I/O:
1 UNIX资源监控(Windows操作系统同理)中指标磁盘交换率(Disk rate),如果该参数值一直很高,表明I/O有问题。可考虑更换更快的硬盘系统。
2 Windows资源监控中,如果 Disk Time和Avg.Disk Queue Length的值很高,而Page Reads/sec页面读取操作速率很低,则可能存在磁盘瓶径。
I/O资源成为系统性能的瓶颈的征兆 :
过高的磁盘利用率(high disk utilization)
太长的磁盘等待队列(large disk queue length)
等待磁盘I/O的时间所占的百分率太高(large percentage of time waiting for disk I/O)
太高的物理I/O速率:large physical I/O rate(not sufficient in itself)
过低的缓存命中率(low buffer cache hit ratio(not sufficient in itself))
太长的运行进程队列,但CPU却空闲(large run queue with idle CPU)
4.数据库服务器:
SQL Server数据库:
1 SQLServer资源监控中指标缓存点击率(Cache Hit Ratio),该值越高越好。如果持续低于80%,应考虑增加内存。
2 如果Full Scans/sec(全表扫描/秒)计数器显示的值比1或2高,则应分析你的查询以确定是否确实需要全表扫描,以及SQL查询是否可以被优化。
3 Number of Deadlocks/sec(死锁的数量/秒):死锁对应用程序的可伸缩性非常有害,并且会导致恶劣的用户体验。该计数器的值必须为0。
4 Lock Requests/sec(锁请求/秒),通过优化查询来减少读取次数,可以减少该计数器的值。
Oracle数据库:
1 如果自由内存接近于0而且库快存或数据字典快存的命中率小于0.90,那么需要增加SHARED_POOL_SIZE的大小。
快存(共享SQL区)和数据字典快存的命中率:
select(sum(pins-reloads))/sum(pins) from v$librarycache;
select(sum(gets-getmisses))/sum(gets) from v$rowcache;
自由内存: select * from v$sgastat where name=’free memory’;
2 如果数据的缓存命中率小于0.90,那么需要加大DB_BLOCK_BUFFERS参数的值(单位:块)。
缓冲区高速缓存命中率:
select name,value from v$sysstat where name in (’db block gets’,
‘consistent gets’,'physical reads’) ;
Hit Ratio = 1-(physical reads / ( db block gets + consistent gets))
3 如果日志缓冲区申请的值较大,则应加大LOG_BUFFER参数的值。
日志缓冲区的申请情况 :
select name,value from v$sysstat where name = ‘redo log space requests’ ;
4 如果内存排序命中率小于0.95,则应加大SORT_AREA_SIZE以避免磁盘排序 。
内存排序命中率 :
select round((100*b.value)/decode((a.value+b.value), 0, 1, (a.value+b.value)), 2)from v$sysstat a, v$sysstat b where a.name=’sorts (disk)’ and b.name=’sorts (memory)’
注:上述SQL Server和Oracle数据库分析,只是一些简单、基本的分析,特别是Oracle数据库的分析和优化,是一门专门的技术,进一步的分析可查相关资料。
发表评论
-
YourKit Java Profiler 9.5.1 分析思考一
2010-12-10 09:06 2474以下是我对使用YoutKit 对程序分析的一些想法! 程序分 ... -
YourKit Java Profiler 9.5.1 试用总结一
2010-12-06 09:15 3759近日接到学习任务研究下YourKit来解决项目中对内存 ... -
使用JUnit创建TestCase
2009-12-29 22:05 3134在学会了对单个方法、类、接口等进行测试后,接着看看这么创建 ... -
如何防范SQL注入<测试篇>
2009-12-24 11:48 4212前一篇是关于编程防 ... -
Junit---Introduce a Base Test Case
2009-12-21 20:24 1131问题: 如果有一个通用方法的集合并且希望在测试中尽可能多的 ... -
怎么提取一个测试层次结构
2009-12-18 20:29 1120问题: 如果有多个 ... -
怎么抽取一个测试模块?
2009-12-17 20:21 905[/b][b]问题: 当为一个产品类编写了好几个测试,它 ... -
Test an object that instantiates other objects
2009-12-10 20:30 988问题: 你想测试一个 ... -
Junit(Let collections compare themselves)
2009-12-08 19:26 1537问题: 你想验证容器的内容,而你第一个想到的办法是逐个 ... -
测试是否抛出正确的异常(Test throwing the right exception)
2009-12-07 21:28 5314问题: 你是否想 ... -
Test a JavaBean
2009-12-05 18:10 924问题: 如果要测试一 ... -
Test an interface(测试接口)
2009-11-30 22:52 2313问题: 你是否想过怎么测试接口,但是又苦于接口没有办法 ... -
Test a setter(Junit 测试setter方法)
2009-11-29 14:27 1809问题: setter方法怎 ... -
Junit Test a getter
2009-11-28 12:16 1103问题: 怎么测试一个对象的get方法?怎么判断哪些需要 ... -
Junit测试构造函数
2009-11-28 00:22 5112构造函数对于测试者 ... -
测试没有返回值的方法
2009-11-26 22:28 7141在使用JUnit进行单元测试的时候,常会碰到返回值为viod的 ... -
JUnit 测试学习笔记二
2009-11-16 22:43 1461现在看看JUnit怎么测试equals()方法 首先分析下e ... -
JUnit测试学习笔记一
2009-11-09 22:25 2054在软件测试中,最基 ... -
何为软件可测试
2009-10-26 11:04 815软件工程发展了二十多 ... -
自动化测试
2009-10-13 09:34 1060关于自动化测试现在 ...
相关推荐
性能测试与负载测试、压力测试 性能测试是评价系统或组件的性能是否和具体的性能需求一致的测试方法。它关注的是系统性能是否和具体的性能需求相一致,评价系统或组件在规定的时间内和特定的条件下响应用户或系统...
### 性能测试(并发负载压力)测试分析 在IT领域中,性能测试是一项非常重要的工作,特别是对于那些需要处理大量并发用户请求的应用系统来说。本文将基于提供的标题、描述及部分内容来深入探讨并发负载压力测试的...
总的来说,这篇文档详细描述了如何使用BPS测试仪进行防火墙新建并发最大性能的测试流程,从流量模型的创建到测试配置,再到结果分析,涵盖了性能测试的重要环节,为评估防火墙在高并发情况下的性能表现提供了详实的...
JMeter主要用于性能测试、负载测试和压力测试,以评估应用程序在不同负载情况下的性能和稳定性。它可以模拟多种协议(如HTTP、HTTPS、FTP、SOAP、REST等)的请求,并生成大量并发用户以模拟真实世界的使用情况。通过...
在网上看到了一篇很详细的解释,贴在这里和大家分享一下:性能测试(或称多用户并发性能测试)、负载测试、强度测试、容量测试是性能测试软件测试中性能测试,负载测试,压力测试有什么区别对于性能测试,负载测试,...
### 软件测试中的性能测试与负载测试 #### 第一章:软件测试中的性能测试与负载测试 **性能测试**是指对系统或组件在特定工作负载条件下的性能进行评估的过程。它通常涉及模拟多种用户行为和数据访问模式,旨在...
软件软件性能测试(并发负载压力)测试分析性能测试是通过自动化的测试工具模拟多种正常、峰值以及异常负载条件来对系统的各项性能指标进行测试。负载测试和压力测试都属于性能测试,两者可以结合进行。通过负载测试...
### 软件测试中的性能测试与负载测试技巧 #### 第一章:简介 ##### 1.1 什么是性能测试与负载测试? - **性能测试**:旨在评估系统在特定工作负载下的表现,如响应时间、吞吐量、资源利用率等。 - **负载测试**:...
### 软件测试中的性能测试与负载测试技术 #### 第一章:软件测试中的性能测试与负载测试技术 **简介** 性能测试是软件测试的关键组成部分之一,它着重于评估软件系统在各种负载条件下的性能表现。这类测试有助于...
### 软件测试中的性能测试与负载测试技术 #### 第1章 软件测试中的性能测试与负载测试技术 ##### 简介 软件性能测试是软件测试中的一个关键组成部分,它主要关注系统在不同负载条件下的性能表现。性能测试能够...
性能测试(并发负载压力)测试分析-简要篇[2]软件测试二.监控指标数据分析1.最大并发用户数:应用系统在当前环境(硬件环境、网络环境、软件环境(参数配置))下能承受的最大并发用户数。在方案运行中,如果出现了大于3个...
### 软件测试中的性能测试与负载测试技巧 #### 第一章:简介 ##### 1.1 什么是性能测试与负载测试? - **性能测试**:旨在评估系统在特定工作负载下的表现,如响应时间、吞吐量、资源利用率等。 - **负载测试**:...
性能测试(并发负载压力)测试分析-简要篇[4]软件测试select(sum(gets-getmisses))/sum(gets)fromv$rowcache;自由内存:select*fromv$sgastatwherename=’freememory’;2如果数据的缓存命中率小于0.90,那么需要加大DB...
性能测试(并发负载压力)测试分析-简要篇[3]软件测试1UNIX资源监控(Windows操作系统同理)中指标磁盘交换率(Diskrate),如果该参数值一直很高,表明I/O有问题。可考虑更换更快的硬盘系统。2Windows资源监控中,如果...
Avalanche性能测试手册是思博伦仪器性能测试的详细手册,包括硬件连接、软件使用、组网、HTTP并发测试、HTTP吞吐量测试等详细指南。下面是该手册中涉及到的重要知识点: 1. 硬件连接:在进行性能测试之前,需要连接...
JMeter是一款广泛使用的开源性能测试工具,适用于模拟多种负载条件,进行负载测试、压力测试、并发测试和容量测试,以验证系统的性能表现。 1.1 性能测试概念 性能测试包括负载测试和压力测试,前者用于了解系统在...
Web服务的稳定性、负载测试和可靠性测试是保证系统性能和用户体验的关键环节。本文将深入探讨这些测试的概念,方法以及在实际测试过程中的应用。 首先,稳定性测试是衡量系统在长时间运行下保持正常服务的能力,...
这里我们将详细探讨"srs-bench"这一工具,它是针对特定业务性能测试并发推流的专业解决方案。 SRS(Simple RTMP Server)是一款开源的实时媒体服务器,它支持RTMP、HLS、HTTP FLV等多种协议,广泛应用于各种直播...