SlideShare a Scribd company logo
1 of 122
性能测试技术 中国软件评测中心 http://www.cstc.org.cn Mar 16, 2010
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

More Related Content

Viewers also liked

The future of Slovenia - Katja Lautar, Slovenia
The future of Slovenia - Katja Lautar, SloveniaThe future of Slovenia - Katja Lautar, Slovenia
The future of Slovenia - Katja Lautar, SloveniaOECD Governance
 
11.17.16 vacaciones,progressive,emotions
11.17.16 vacaciones,progressive,emotions11.17.16 vacaciones,progressive,emotions
11.17.16 vacaciones,progressive,emotionsamberglong11
 
横断性脊髄炎 多発性硬化症について
横断性脊髄炎 多発性硬化症について横断性脊髄炎 多発性硬化症について
横断性脊髄炎 多発性硬化症についてKatsushige Takagishi
 
Light Field, Focus-tunable, and Monovision Near-eye Displays | SID 2016
Light Field, Focus-tunable, and Monovision Near-eye Displays | SID 2016Light Field, Focus-tunable, and Monovision Near-eye Displays | SID 2016
Light Field, Focus-tunable, and Monovision Near-eye Displays | SID 2016StanfordComputationalImaging
 
第36回日本肥満学会(2015.10.9名古屋)
第36回日本肥満学会(2015.10.9名古屋)第36回日本肥満学会(2015.10.9名古屋)
第36回日本肥満学会(2015.10.9名古屋)niigatarofuku
 
лиственные и хвойные деревья
лиственные и хвойные деревьялиственные и хвойные деревья
лиственные и хвойные деревьяНадежда Надежда
 
Evaluacion de inteligencias multiples (1)
Evaluacion de inteligencias multiples (1)Evaluacion de inteligencias multiples (1)
Evaluacion de inteligencias multiples (1)José Luis Cabrera
 

Viewers also liked (8)

The future of Slovenia - Katja Lautar, Slovenia
The future of Slovenia - Katja Lautar, SloveniaThe future of Slovenia - Katja Lautar, Slovenia
The future of Slovenia - Katja Lautar, Slovenia
 
11.17.16 vacaciones,progressive,emotions
11.17.16 vacaciones,progressive,emotions11.17.16 vacaciones,progressive,emotions
11.17.16 vacaciones,progressive,emotions
 
横断性脊髄炎 多発性硬化症について
横断性脊髄炎 多発性硬化症について横断性脊髄炎 多発性硬化症について
横断性脊髄炎 多発性硬化症について
 
Light Field, Focus-tunable, and Monovision Near-eye Displays | SID 2016
Light Field, Focus-tunable, and Monovision Near-eye Displays | SID 2016Light Field, Focus-tunable, and Monovision Near-eye Displays | SID 2016
Light Field, Focus-tunable, and Monovision Near-eye Displays | SID 2016
 
第36回日本肥満学会(2015.10.9名古屋)
第36回日本肥満学会(2015.10.9名古屋)第36回日本肥満学会(2015.10.9名古屋)
第36回日本肥満学会(2015.10.9名古屋)
 
лиственные и хвойные деревья
лиственные и хвойные деревьялиственные и хвойные деревья
лиственные и хвойные деревья
 
Evidencia
EvidenciaEvidencia
Evidencia
 
Evaluacion de inteligencias multiples (1)
Evaluacion de inteligencias multiples (1)Evaluacion de inteligencias multiples (1)
Evaluacion de inteligencias multiples (1)
 

More from yiditushe

Spring入门纲要
Spring入门纲要Spring入门纲要
Spring入门纲要yiditushe
 
J Bpm4 1中文用户手册
J Bpm4 1中文用户手册J Bpm4 1中文用户手册
J Bpm4 1中文用户手册yiditushe
 
性能测试实践1
性能测试实践1性能测试实践1
性能测试实践1yiditushe
 
Load runner测试技术
Load runner测试技术Load runner测试技术
Load runner测试技术yiditushe
 
J2 ee性能测试
J2 ee性能测试J2 ee性能测试
J2 ee性能测试yiditushe
 
面向对象的Js培训
面向对象的Js培训面向对象的Js培训
面向对象的Js培训yiditushe
 
Flex3中文教程
Flex3中文教程Flex3中文教程
Flex3中文教程yiditushe
 
开放源代码的全文检索Lucene
开放源代码的全文检索Lucene开放源代码的全文检索Lucene
开放源代码的全文检索Luceneyiditushe
 
基于分词索引的全文检索技术介绍
基于分词索引的全文检索技术介绍基于分词索引的全文检索技术介绍
基于分词索引的全文检索技术介绍yiditushe
 
Lucene In Action
Lucene In ActionLucene In Action
Lucene In Actionyiditushe
 
Lucene2 4学习笔记1
Lucene2 4学习笔记1Lucene2 4学习笔记1
Lucene2 4学习笔记1yiditushe
 
Lucene2 4 Demo
Lucene2 4 DemoLucene2 4 Demo
Lucene2 4 Demoyiditushe
 
Lucene 全文检索实践
Lucene 全文检索实践Lucene 全文检索实践
Lucene 全文检索实践yiditushe
 
Lucene 3[1] 0 原理与代码分析
Lucene 3[1] 0 原理与代码分析Lucene 3[1] 0 原理与代码分析
Lucene 3[1] 0 原理与代码分析yiditushe
 
7 面向对象设计原则
7 面向对象设计原则7 面向对象设计原则
7 面向对象设计原则yiditushe
 
10 团队开发
10  团队开发10  团队开发
10 团队开发yiditushe
 
9 对象持久化与数据建模
9  对象持久化与数据建模9  对象持久化与数据建模
9 对象持久化与数据建模yiditushe
 
8 Uml构架建模
8  Uml构架建模8  Uml构架建模
8 Uml构架建模yiditushe
 
6 架构设计
6  架构设计6  架构设计
6 架构设计yiditushe
 
5 架构分析
5  架构分析5  架构分析
5 架构分析yiditushe
 

More from yiditushe (20)

Spring入门纲要
Spring入门纲要Spring入门纲要
Spring入门纲要
 
J Bpm4 1中文用户手册
J Bpm4 1中文用户手册J Bpm4 1中文用户手册
J Bpm4 1中文用户手册
 
性能测试实践1
性能测试实践1性能测试实践1
性能测试实践1
 
Load runner测试技术
Load runner测试技术Load runner测试技术
Load runner测试技术
 
J2 ee性能测试
J2 ee性能测试J2 ee性能测试
J2 ee性能测试
 
面向对象的Js培训
面向对象的Js培训面向对象的Js培训
面向对象的Js培训
 
Flex3中文教程
Flex3中文教程Flex3中文教程
Flex3中文教程
 
开放源代码的全文检索Lucene
开放源代码的全文检索Lucene开放源代码的全文检索Lucene
开放源代码的全文检索Lucene
 
基于分词索引的全文检索技术介绍
基于分词索引的全文检索技术介绍基于分词索引的全文检索技术介绍
基于分词索引的全文检索技术介绍
 
Lucene In Action
Lucene In ActionLucene In Action
Lucene In Action
 
Lucene2 4学习笔记1
Lucene2 4学习笔记1Lucene2 4学习笔记1
Lucene2 4学习笔记1
 
Lucene2 4 Demo
Lucene2 4 DemoLucene2 4 Demo
Lucene2 4 Demo
 
Lucene 全文检索实践
Lucene 全文检索实践Lucene 全文检索实践
Lucene 全文检索实践
 
Lucene 3[1] 0 原理与代码分析
Lucene 3[1] 0 原理与代码分析Lucene 3[1] 0 原理与代码分析
Lucene 3[1] 0 原理与代码分析
 
7 面向对象设计原则
7 面向对象设计原则7 面向对象设计原则
7 面向对象设计原则
 
10 团队开发
10  团队开发10  团队开发
10 团队开发
 
9 对象持久化与数据建模
9  对象持久化与数据建模9  对象持久化与数据建模
9 对象持久化与数据建模
 
8 Uml构架建模
8  Uml构架建模8  Uml构架建模
8 Uml构架建模
 
6 架构设计
6  架构设计6  架构设计
6 架构设计
 
5 架构分析
5  架构分析5  架构分析
5 架构分析
 

性能测试技术

Editor's Notes

  1. 随着软件系统的规模日益庞大,结构日趋复杂,对软件系统的性能测试已经成为必须和趋势。尤其大型的分布式软件系统更要在正式运行前进行性能测试,因为这样的系统在投入生产之后,往往要接受大批量的业务量,这对应用程序本身,操作系统 , 中心数据库服务器,中间件服务器,网络设备的承受力都是一个严峻的考验。在其中任意一个环节出现的问题都可能给用户带来巨大的商业损失。预见软件系统的并发承受能力以避免商业风险,这是在软件测试阶段就应该解决的。例如中国人民银行的现代化支付系统和上海外汇交易中心的本币交易系统都在投入生产之前进行了多轮的第三方性能测试,起到了很好的作用。
  2. 感性认识
  3. 并发用户数:同一时刻与服务器有交互的在线用户数量 详细可以分为广义的和狭义的并发,同时做一项业务、同时做一项操作 客户端的响应时间实际可分解为客户端呈现的响应时间+系统处理的时间 吞吐量:单位时间内系统处理的客户请求的数量 ( 对于非交互式系统更多考查的内容 ) 网络的角度,单位时间内网络上的流量,对于 web 系统,可以看望请求数 /s
  4. Jmeter 可以完成针对静态资源和动态资源( Servlets, Perl 脚本 , Java 对象 , 数据查询 s, FTP 服务等)的性能测试。
  5. 实现:模拟大量并发用户,测试环境一般包括主控台、代理机以及被测服务器,各部分采用网络连接。
  6. 由于网络应用中越来越多的用到多媒体、视频以及图像传输等技术,所以网络的带宽需求非常紧张。当网络负载很轻时,信息传输的效率会比较高,当流量增长的很快时,碰撞就增加很多并使网络性能下降。网络路径的延时特性和传输速率越来越受到人们的重视。网络延时和有效带宽直接反映了路径的性能和对端主机提供的服务等级水平。
  7. 在不同的网段部署探针,它们的数据收集到管理控制台进行分析,管理控制台除了对探针进行管理,还负责各探针节点的时间同步,提供可视化界面与管理员交互。 捕捉点即“ Agent” ,利用主控台“ Agent Manager” 进行分析, Agent 被动监听数据包来实现实时数据采集, Agent Manager 完成对所跟踪到的数据的分析,可以自由将捕捉代理放在不同的平台,例如, Windows 、 Unix
  8. procs r 列表示运行和等待 cpu 时间片的进程数,如果长期大于 1 ,说明 cpu 不足,需要增加 cpu 。 b 列表示在等待资源的进程数,比如正在等待 I/O 、或者内存交换等。 cpu 表示 cpu 的使用状态 us 列显示了用户方式下所花费 CPU 时间的百分比。 us 的值比较高时,说明用户进程消耗的 cpu 时间多,但是如果长期大于 50% ,需要考虑优化用户的程序。 sy 列显示了内核进程所花费的 cpu 时间的百分比。这里 us + sy 的参考值为 80% ,如果 us+sy 大于 80% 说明可能存在 CPU 不足。 wa 列显示了 IO 等待所占用的 CPU 时间的百分比。这里 wa 的参考值为 30% ,如果 wa 超过 30% ,说明 IO 等待严重,这可能是磁盘大量随机访问造成的,也可能磁盘或者磁盘访问控制器的带宽瓶颈造成的 ( 主要是块操作 ) 。 id 列显示了 cpu 处在空闲状态的时间百分比 system 显示采集间隔内发生的中断数 in 列表示在某一时间间隔中观测到的每秒设备中断数。 cs 列表示每秒产生的上下文切换次数,如当 cs 比磁盘 I/O 和网络信息包速率高得多,都应进行进一步调查。 memory swpd 切换到内存交换区的内存数量 (k 表示 ) 。如果 swpd 的值不为 0 ,或者比较大,比如超过了 100m ,只要 si 、 so 的值长期为 0 ,系统性能还是正常 free 当前的空闲页面列表中内存数量 (k 表示 ) buff 作为 buffer cache 的内存数量,一般对块设备的读写才需要缓冲。 cache: 作为 page cache 的内存数量,一般作为文件系统的 cache ,如果 cache 较大,说明用到 cache 的文件较多,如果此时 IO 中 bi 比较小,说明文件系统效率比较好。 swap si 由内存进入内存交换区数量。 so 由内存交换区进入内存数量。 IO bi 从块设备读入数据的总量(读磁盘)(每秒 kb )。 bo 块设备写入数据的总量(写磁盘)(每秒 kb ) 这里我们设置的 bi+bo 参考值为 1000 ,如果超过 1000 ,而且 wa 值较大应该考虑均衡磁盘负载,可以结合 iostat 输出来分析。 vmstat 中 CPU 的度量是百分比的。当 us + sy 的值接近 100 的时候,表示 CPU 正在接近满负荷工作。但要注意的是, CPU 满负荷工作并不能说明什么, UNIX 总是试图要 CPU 尽可能的繁忙,使得任务的吞吐量最大化。唯一能够确定 CPU 瓶颈的还是 r (运行队列)的值。 当内存的需求大于 RAM 的数量,服务器启动了虚拟内存机制,通过虚拟内存,可以将 RAM 段移到 SWAP DISK 的特殊磁盘段上,这样会出现虚拟内存的页导出和页导入现象,页导出并不能说明 RAM 瓶颈,虚拟内存系统经常会对内存段进行页导出,但页导入操作就表明了服务器需要更多的内存了,页导入需要从 SWAP DISK 上将内存段复制回 RAM ,导致服务器速度变慢。 Iostat r/s 表示每秒钟读的次数 w/s 表示每秒钟写的次数 kr/s 表示每秒钟读的 K 字节数 kw/s 表示每秒钟写的 K 字节数 wait 表示平均多少个传输等待被处理,相当于读写等待队列长度 actv 表示平均多少个传输从读写等待队列中移出做处理 svc_t 表示每次硬盘传输平均耗费的时间,以毫秒为单位,这里我们设置的参考值为 30ms ,超过说明硬盘负载太多 %w 表示每次传输所消耗时间里面,等待所占的百分比 %b 表示硬盘忙的时间所占百分比,这里我们设置参考值为 5% ,超过 5% 说明硬盘负载太多,最好采取以下步骤: 1.) 调整应用,令其使用磁盘 i/o 更加有效率,可以通过修改磁盘队列、使用应用服务器的 cache 2.) 将文件系统分布到 2 个或多个磁盘上,并使用 volume manager/disksuite 的条带化特点 3.) 增加系统参数值,如 inode cache , ufs_ninode 。
  9. 如果日志写满,会导致数据库不可用,操作全部失败 表空间 数据库死锁 热块问题,会导致性能大大降低    latch 是一种低级排队机制,用于保护 SGA 中共享内存结构。 latch 就像是一种快速地被获取和释放的内存锁。用于防止共享内存结构被多个用户同时访问。如果 latch 不可用,就会记录 latch 释放失败 (latch free miss ) 。
  10. 比如,测试计划应该包括测试目标、范围、测试工作划分、测试实施时间表
  11. 比如,测试计划应该包括测试目标、范围、测试工作划分、测试实施时间表
  12. 比如,测试计划应该包括测试目标、范围、测试工作划分、测试实施时间表
  13. 比如,测试计划应该包括测试目标、范围、测试工作划分、测试实施时间表
  14. 比如,测试计划应该包括测试目标、范围、测试工作划分、测试实施时间表
  15. 操作系统经常会利用磁盘交换的方式提高系统可用的内存量或内存的使用效率。 对多处理器, %Total Processor Time 反应了所有处理器的平均繁忙程度。
  16. JVM 的一个关键特征是它的 GC Heap 。 Heap 保存了 Java 运行期的所有对象,数组。 GC 可以动态释放 Heap 中不再使用的空间。在 Java 程序里,一个对象可以通过关键字 new 来创建,“创建”对于 JVM 来说就是在 Heap 里分配一块空间保存新对象。 GC ,也就是 Garbage collection ,既清除 Heap 里不再使用的对象。为了清除这些对象, GC 必须调用这些对象的 Finalizer 。另为 GC 还可以合并 Heap 中的空间碎片。 Heap 空间碎片是由于不断分配和释放造成的。如果不合并这些碎片,即使有足够的空间,由于没有足够大的连续空间而不得不扩大 Heap 空间,扩大空间会降低运行性能。
  17. 操作系统经常会利用磁盘交换的方式提高系统可用的内存量或内存的使用效率。 对多处理器, %Total Processor Time 反应了所有处理器的平均繁忙程度。
  18. 操作系统经常会利用磁盘交换的方式提高系统可用的内存量或内存的使用效率。 对多处理器, %Total Processor Time 反应了所有处理器的平均繁忙程度。