为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

高级性能测试

2012-01-10 50页 ppt 2MB 17阅读

用户头像

is_471594

暂无简介

举报
高级性能测试null高级性能测试 高级性能测试 中国软件评测中心 WWW.CSTC.ORG.CN *课程内容介绍 课程内容介绍 测试策略制定 测试结果指标分析 性能故障定位实例分析 性能典型案例分析 测试技术与测试工具使用技巧 测试策略制定测试策略制定测试的基础概念 测试计划 测试流程包括哪些步骤 测试要达到什么目的 选择什么协议进行测试 如何编写一个完整的测试方案 测试指标包括哪些内容 自动化负载压力测试策略 系统性能故障定位的四个关键点测试结果指标分析测试结果指标分析 客户端负载压力指标 服务器资源使用指标 网络监控指标 测...
高级性能测试
null高级性能测试 高级性能测试 中国软件评测中心 WWW.CSTC.ORG.CN *课程内容介绍 课程内容介绍 测试策略制定 测试结果指标分析 性能故障定位实例分析 性能典型案例分析 测试技术与测试工具使用技巧 测试策略制定测试策略制定测试的基础概念 测试计划 测试流程包括哪些步骤 测试要达到什么目的 选择什么协议进行测试 如何编写一个完整的测试 测试指标包括哪些内容 自动化负载压力测试策略 系统性能故障定位的四个关键点测试结果指标分析测试结果指标分析 客户端负载压力指标 服务器资源使用指标 网络监控指标 测试典型案例分析测试典型案例分析 系统故障定位与分析实例 数据库服务器典型性能调优与评估 Oracle数据库性能调优 性能典型案例分析 测试经验交流测试技术与测试工具使用技巧测试技术与测试工具使用技巧负载压力测试工具:LoadRunner8.0 功能回归测试工具:WinRunner7.6 测试管理工具:TestDirector8 .0 自动化工具的集成 性能测试性能测试 系统的性能是一个很大的概念,覆盖面非常广泛,对一个软件系统而言包括执行效率、资源占用、稳定性、安全性、兼容性、可扩展性、可靠性等等,我们这里重点讨论的负载压力是系统性能的一个重要方面。 性能测试用来保证产品发布后系统的性能满足用户需求。性能测试在软件质量保证中起重要作用。 负载测试负载测试负载测试是确定在各种工作负载下系统的性能,目标是测试当负载逐渐增加时,系统组成部分的相应输出项,例如通过量、响应时间、CPU负载、内存使用等如何决定系统的性能,例如稳定性和响应等。 负载测试通常描述一种特定类型的压力测试,即增加用户数量以对应用程序进行压力测试。 压力测试压力测试 压力测试通过确定一个系统的瓶颈或者不能接收的性能点,来获得系统能提供的最大的服务级别的测试。通俗地讲,压力测试是为了发现在什么条件下您的应用程序的性能会变得不可接受。 负载压力测试负载压力测试负载压力测试是性能测试的重要组成部分,负载压力测试包括: 并发性能测试(重点) 疲劳强度测试 大数据量测试 负载压力测试负载压力测试负载压力测试负载压力测试并发性能测试 考察客户端应用的性能,测试的入口是客户端 并发性能测试的过程,是一个负载测试和压力测试的过程。即逐渐增加并发虚拟用户数负载,直到系统的瓶颈或者不能接收的性能点,通过综合分析交易执行指标、资源监控指标等来确定系统并发性能的过程。并发性能测试是负载压力测试中的重要内容。 负载压力测试负载压力测试疲劳强度测试 通常是采用系统稳定运行情况下能够支持的最大并发用户数或 者日常运行用户数,持续执行一段时间业务,通过综合分析交易执行指标和资源监控指标来确定系统处理最大工作量强度性能的过程。 疲劳强度测试案例制定的原则是保证系统长期不间断运行的业务量,并且应该尽量去满足该条件。 负载压力测试负载压力测试大数据量测试 大数据量测试的两种类型 独立的数据量测试 针对某些系统存储、传输、统计、查询等业务进行大数据量测试 综合数据量测试 和压力性能测试、负载性能测试、并发性能测试、疲劳性能测试相结合的综合测试方案 测试计划 测试计划 分析应用程序 定义测试目标 计划方案实施 检查测试目标 制定测试计划的目的制定测试计划的目的构建能够精确地模拟您的工作环境的测试方案。 了解测试需要的资源。 以可度量的指标定义测试成功条件。 分析应用程序分析应用程序确定系统组件 描述系统配置 分析使用模型 任务分布 确定系统组件确定系统组件客户机、网络、中间件和服务器 描述系统配置描述系统配置连接到系统的用户数 应用程序客户端计算机的配置情况(硬件、内存、操作系统、软件、开发工具等) 使用的数据库和Web 服务器的类型(硬件、数据库类型、操作系统、文件服务器等) 服务器与应用程序客户端之间的通信方式 前端客户端与后端服务器之间的中间件配置和应用程序服务器 可能影响响应时间的其他网络组件(调制解调器等)分析使用模型分析使用模型 考虑哪些用户使用系统 每种类型用户的数量 每个用户的典型任务 任务分布任务分布 确定数据库活动峰值期的发生时间 负载峰值期间的典型活动 定义测试目标定义测试目标定义测试目标定义测试目标 以可度量的指标制定目标 确定测试的时间 确定测试的时间确定测试的时间一个有趣的故事-郎中治病一个有趣的故事-郎中治病 在古代中国,有一家三兄弟全是郎中。其中有一人是名医,人们问他:“你们兄弟三人谁的医术最高?” 他回答说:“我常用猛药给病危者医治,偶尔有些病危者被我救活,于是我的医术远近闻名。 我二哥通常在人们刚刚生病的时候马上就治愈他们,临近村庄的人都知道他的医术。 我大哥深知人们生病的原因,所以能够防止家里人生病,他的医术只有我们家里才知道。软件测试-名医郎中软件测试-名医郎中 当软件交付给用户后,使用时出错了,赶紧请开发者来补救,这种方式的代价最高。那些现场补救成功的人就是测试中的名医。 损失不可挽回!!!软件测试-二哥郎中软件测试-二哥郎中 当工作成果刚刚产生时马上进行质量检查,及时找出并消除工作成果中的缺陷。这种方式效果比较好,国内企业广泛采用。 无法修改存在的隐患!!! 软件测试-大哥郎中软件测试-大哥郎中 在开发过程中有效地防止工作成果产生缺陷,将高质量内建于开发过程之中。无疑是最佳方式!!!计划方案实施计划方案实施 定义性能度量的范围 定义用户活动 选择用户 选择测试硬件和软件定义性能度量的范围定义性能度量的范围 度量应用程序中不同点的响应时间。 根据测试目标确定在哪里运行虚拟用户 运行哪些虚拟用户应用程序中不同点的响应时间应用程序中不同点的响应时间度量端到端的响应时间:应用程序中不同点的响应时间应用程序中不同点的响应时间度量网络和服务器响应时间: 应用程序中不同点的响应时间应用程序中不同点的响应时间度量GUI 响应时间: GUI 响应时间= 端到端响应时间- 网络和服务器响应时间 应用程序中不同点的响应时间应用程序中不同点的响应时间度量服务器响应时间:应用程序中不同点的响应时间应用程序中不同点的响应时间度量中间件到服务器的响应时间:选择用户选择用户选择测试硬件和软件选择测试硬件和软件硬件和软件应该具有强大的性能和 足够快的运行速度,以模拟所需数 量的虚拟用户 。检查测试目标检查测试目标 度量最终用户响应时间 定义最优的硬件配置 检查可靠性 确定瓶颈 度量系统容量 定义最优的硬件配置举例定义最优的硬件配置举例 例如,您可以设置三种不同的服务器配置,并针对各个配置运行相同的测试,以确定性能上的差异: . 配置1:200MHz、64MB RAM . 配置2:200MHz、128MB RAM . 配置3:266MHz、128MB RAM检查可靠性举例检查可靠性举例 确定系统在连续的高工作负载下的稳定性级别。 强制系统在短时间内处理大量任务,以模拟系统在数周或数月的时间内通常会遇到的活动类型。确定瓶颈举例确定瓶颈举例您可以运行测试以确定系统的瓶颈,并确定哪些因素导致性能下降,例如,文件锁定、资源争用和网络过载。度量系统容量举例度量系统容量举例查看现有系统中性能与负载间的关系,并确定出现响应时间显著延长的位置 “拐点”。可以确定是否需要增加资源以支持额外的用户。测试流程步骤测试流程步骤测试需求分析 测试案例制定 测试环境、工具、数据准备 测试脚本录制、编写与调试 负载压力场景制定 测试执行 结果分析与定位问题 测试报告与测试评估 测试目的测试目的在真实环境下检测系统性能,评估系统性能以及服务等级的满足情况 预见系统负载压力承受力,在应用实际部署之前,评估系统性能 帮助软件厂商或用户分析系统瓶颈、优化系统 测试目的测试目的实现目的的测试方法: 性能检测 性能调优 性能检测性能检测在真实生产环境下,检测系统性能,评估并报告整个系统的性能和健壮情况 检查服务等级的满足情况 对系统的未来容量作出预测和规划 性能调优性能调优查找系统瓶颈的根本原因 评估性能调整的效果 在测试环境下再现性能问题 选择测试协议选择测试协议 客户端与直接压力承受的服务器之间的通讯协议是选择测试协议的唯一 测试协议测试协议 ŸClient/Server: MS SQL, ODBC, Oracle (2-tier), DB2 CLI, Sybase Ctlib, Sybase Dblib,infomix,Windows Sockets及DNS Ÿ定制: C templates, Visual Basic templates, Java templates, Javascript 及 VBscript. Ÿ分布式组件: COM/DCOM, Corba-Java, 及Rmi -Java. ŸE-business: FTP, LDAP, Palm, SOAP, Web (HTTP/HTML), 及the dual Web/Winsocket. ŸEnterprise Java Beans: EJB Testing及Rmi-Java. ŸLegacy: Terminal Emulation (RTE). ŸMailing Services: Internet Messaging (IMAP), MS Exchange (MAPI), POP3, 及SMTP. ŸMiddleware: Jacada及Tuxedo (6, 7). ŸStreaming: MediaPlayer及RealPlayer. ŸWireless: i-Mode, VoiceXML, 及WAP 编写一个完整的测试方案编写一个完整的测试方案 应用在客户端性能的测试 应用在网络上性能的测试 应用在服务器上性能的测试 一个测试方案的例子 一个测试计划的例子 测试指标测试指标客户端交易处理性能指标,例如响应时间 服务器资源监控,例如: UNIX 数据库资源监控,例如: Oracle Web服务器监控,例如: Apache 中间件监控,例如: TUXEDO 网络监控,例如:带宽利用率等等自动化负载压力测试自动化负载压力测试 利用或开发负载压力测试的 自动化测试方法,包括:程序、工具、流程等等。 自动化负载压力测试优势自动化负载压力测试优势选择自动化负载压力测试方法选择自动化负载压力测试方法 利用自动化负载压力测试工具 开放资源(OpenSource)测试 自主开发代码测试 自动化负载压力测试概念自动化负载压力测试概念通过在一台或几台PC机上模拟成百或上千的虚拟用户同时执行业务的情景,对应用程序进行测试,通过可重复的、真实的测试能够彻底地度量应用的性能,确定问题所在。工程项目实践证明,其测试结果与实际情况完全符合。 自动化负载压力测试实现机制自动化负载压力测试实现机制自动化负载压力测试工具自动化负载压力测试工具LoadRunner-美国Mercury Interactive公司 QALoad-美国Compuware(康博)公司 Rational Robot -美国IBM公司 SILK PERFORMER V -美国Segue 公司 Benchmark Factory-美国Quest软件公司 WAS-美国Mcrosoft 公司 自动化负载压力测试工具自动化负载压力测试工具 自动化负载压力测试工具对比自动化负载压力测试工具选择依据自动化负载压力测试工具选择依据 模拟您的客户机 运行多个模拟的客户机 脚本化执行并能编辑脚本 支持会话 可配置的用户数量 报告成功、错误和失败 自动化负载压力测试工具缺陷自动化负载压力测试工具缺陷 缺乏功能点的校验 对有些控件支持得不好 不能达到真实模拟负载 脚本的支持不够灵活 报错定位不够详细 自动化负载压力测试工具盲点自动化负载压力测试工具盲点在负载测试中,不进行功能校验,就是当功能错误发生时,测试工具不能够记录产生的功能性错误,这就忽略了负载压力情况下的功能不稳定问题。 在负载压力测试过程中记录所有虚拟用户的操作及服务器的响应是当前负载压力测试技术发展的最大挑战。 但测试过程中的附加记录会导致资源消耗、操作行为增加以及产生大量日志等问题。 开放资源(OpenSource)测试开放资源(OpenSource)测试 开放系统测试体系-OpenSTA http://portal.opensta.org/) TestMaker(http://www.pushtotest.com/) Apache JMeter (http://jakarta.apache.org/jmeter/) 开发测试工具举例开发测试工具举例Web服务器通用性能测试系统的设计与实现 实际系统由四部分组成: 模板文件 数据文件 性能测试程序 结果处理程序开发测试工具举例开发测试工具举例系统结构示意图 开发测试工具举例开发测试工具举例主流程图 开发测试工具举例开发测试工具举例通用应用系统性能评测环境设计开发测试工具举例开发测试工具举例通用应用系统性能评测环境设计开发测试工具举例开发测试工具举例通用应用系统性能评测环境设计开发测试工具举例开发测试工具举例通用应用系统性能评测环境设计系统性能故障定位的四个关键点系统性能故障定位的四个关键点 1 测试与信息收集 2 关键点性能诊断 3 性能瓶颈分析 4 调优解决方案 测试结果指标分析测试结果指标分析客户端负载压力指标 为了完成一个任务,用户对应用程序执行的一组操作,例如登陆一个Web站点、搜索一个飞机票信息、在网上买一本书等等。 虚拟并发用户数(Total Virtual Users) 交易响应时间(Response Time) 每分钟交易数(Trans Rate) 测试结果指标分析测试结果指标分析客户端负载压力指标-交易处理指标 . 平均事务响应时间图 . 每秒事务数图 . 每秒事务总数 . 事务摘要图 . 事务性能摘要图 . 事务响应时间(负载下)图 . 事务响应时间(百分比)图 . 事务响应时间(分布)图 测试结果指标分析测试结果指标分析客户端负载压力指标-Web请求指标 . 每秒点击次数图 . 点击次数摘要图 . 吞吐量图 . 吞吐量摘要图 . HTTP 状态代码摘要图 . 每秒HTTP 响应数图 . 每秒下载页面数图 . 每秒重试次数图 . 重试次数摘要图 . 连接数图 . 每秒连接数图 . 每秒SSL 连接数图测试结果指标分析测试结果指标分析客户端负载压力指标-Web页面组件指标 . 激活网页细分图 . 页面组件细分图 . 页面组件细分(随时间变化)图 . 页面下载时间细分图 . 页面下载时间细分(随时间变化)图 . 第一次缓冲细分时间图 . 第一次缓冲时间细分(随时间变化)图 . 已下载组件大小图测试结果指标分析测试结果指标分析服务器资源使用指标-UNIX 测试结果指标分析测试结果指标分析服务器资源使用指标-Windows2000 Server 测试结果指标分析测试结果指标分析服务器资源使用指标-Windows2000 Server(续) 测试结果指标分析测试结果指标分析服务器资源使用指标-Windows2000 Server(续) 看一个例子 测试结果指标分析测试结果指标分析服务器资源使用指标-数据库SQLServer 测试结果指标分析测试结果指标分析服务器资源使用指标-中间件Tuxedo 测试结果指标分析测试结果指标分析网络监控指标: 吞吐量 容量(信道容量或带宽) 利用率 最优利用率 可提供负载 有效率 延迟 延迟变化量 响应时间 测试指标分析案例测试指标分析案例 指标体现系统的性能 与指标关联的要素是什么?测试典型案例分析测试典型案例分析系统故障定位与分析 最难的问题!系统瓶颈分析举例系统瓶颈分析举例经验举例1 交易的响应时间如果很长,远远超过系统性能需求,表示耗费CPU的数据库操作,例如排序,执行aggregate functions(例如sum、min、max、count)等较多,可考虑是否有索引以及索引建立的是否合理;尽量使用简单的表联接;水平分割大表格等方法来降低该值。 系统瓶颈分析举例系统瓶颈分析举例经验举例2 分段排除错误。测试工具可以模拟不同的虚拟用户来单独访问Web服务器、应用服务器和数据库服务器,这样,就可以在Web端测出的响应时间减去以上各个分段测出的时间就可以知道瓶颈在哪并着手调优。 系统瓶颈分析举例系统瓶颈分析举例经验举例3 UNIX资源监控(NT操作系统同理)中指标内存页交换速率(Paging rate),如果该值偶尔走高,表明当时有线程竞争内存。如果持续很高,则内存可能是瓶颈。也可能是内存访问命中率低。“Swap in rate”和“Swap out rate”也有类似的解释。 系统瓶颈分析举例系统瓶颈分析举例经验举例4 UNIX资源监控(NT操作系统同理)中指标CPU占用率(CPU utilization),如果该值持续超过95%,表明瓶颈是CPU。可以考虑增加一个处理器或换一个更快的处理器 。合理使用的范围在60%至70%。系统瓶颈分析举例系统瓶颈分析举例经验举例5 UNIX资源监控(NT操作系统同理)中指标磁盘交换率(Disk rate),如果该参数值一直很高,表明I/O有问题。可考虑更换更快的硬盘系统、重新部署业务逻辑等,另外设置Tempdb in RAM,减低"max async IO","max lazy writer IO"等措施都会降低该值。 系统瓶颈分析举例系统瓶颈分析举例经验举例6 Tuxedo资源监控中指标队列中的字节数(Bytes on queue),队列长度应不超过磁盘数的1.5~2倍。要提高性能,可增加磁盘。注意:一个Raid Disk实际有多个磁盘。系统瓶颈分析举例系统瓶颈分析举例经验举例7 SQLServer资源监控中指标缓存点击率(Cache Hit Ratio),该值越高越好。如果持续低于80%,应考虑增加内存。 注意该参数值是从SQL Server启动后,就一直累加记数,所以运行经过一段时间后,该值将不能反映系统当前值。 优化调整设置 优化调整设置 CPU问题: 考虑使用更高级的CPU代替目前的CPU 对于多CPU,考虑CPU之间的负载分配 考虑在其它体系上设计系统,例如增加前置机、设置并行服务器等。优化调整设置 优化调整设置 内存和高速缓存 内存的优化包括操作系统、数据库、应用程序的内存优化。 过多的分页与交换可能降低系统的性能 内存分配也是影响系统性能的主要原因 保证保留列表具有较大的邻接内存块 调整数据块缓冲区大小(用数据块的个数表示)是一个重要内容 将最频繁使用的数据保存在存储区中优化调整设置 优化调整设置 磁盘(I/O)资源问题 磁盘读写进度对数据库系统是至关重要的,数据库对象在物理设备上的合理分布能改善性能 磁盘镜像会减慢磁盘写的速度 通过把日志和数据库对象分布在独立的设备上可以提高系统的性能 把不同的数据库放在不同的硬盘上,可以提高读写速度。经常把数据库、回滚段、日志放在不同的设备上 把表放在一块硬盘上,把非簇的索引放在另一块硬盘上,保证物理读写更快优化调整设置 优化调整设置 调整配置参数 包括操作系统和数据库的参数配置 并行操作资源限制的参数(并发用户的数目、会话数) 影响资源开销的参数 与I/O有关的参数优化调整设置 优化调整设置 优化应用系统网络设置 可以通过数组接口来减少网络呼叫。不是一次提取一行,而是在单个往来往返中提取10行,这样做效率较高 调整会话数据单元的缓冲区大小 共享服务进程比专用服务进程提供较好的性能案例交流案例交流例1:某电信计费帐务系统 测试类型:并发、疲劳 系统运行模式:三层结构,中间件TUXEDO、数据库服务器操作系统UNIX、数据库Oracle 并发用户数:50 测试工具: LoadRunner 解决的问题:业务执行平均响应时间在100秒左右,经过调优后,平均响应时间降为10秒 案例交流案例交流销帐,并发用户数50,平均响应时间案例交流案例交流例2:某加油IC卡试点工程核心软件 测试类型:并发 系统运行模式:发卡网点子系统采用三层结构的运行模式,零管子系统采用C/S运行模式。中间件TUXEDO、数据库服务器操作系统UNIX、数据库Sybase 并发用户数:销售信息查询100,单用户卡充值170 测试工具: QALoad、 LoadRunner 问题:销售信息查询,当记录条数达到1000000时,系统在15分钟内无任何响应 。经分析确定为系统数据库的架构存在问题。案例交流案例交流1.100用户 2.50用户 3.30用户 4.20用户 5.10用户 案例交流案例交流例3:某高速公路联网收费系统 测试类型:并发、疲劳 系统运行模式:三层结构,数据库服务器操作系统AIX、数据库Informix 、中间件自主开发(Winsock) 并发用户数:100 测试工具: QALoad、 LoadRunner 问题:疲劳测试丢失数据763条,中间件的稳定性有待进一步提高 案例交流案例交流0309100_05F:虚拟用户数100 0309100_060:虚拟用户数10 0309100_061:虚拟用户数30 0309100_062:虚拟用户数50 案例交流案例交流例4:某多媒体数据库系统 测试类型:并发、疲劳 系统运行模式: B/S运行模式,三层结构, web服务器为Apache, 应用服务器Oracle9iAS、数据库服务器操作系统UNIX或Linux、数据库Oracle9i 并发用户数:200 测试工具: LoadRunner 问题:当并发用户数超过200时,监控到HTTP 500、connect以及超时错误,且web服务器报内存溢出错误,系统应进一步提高性能,以支持更大并发用户数。 案例交流案例交流 案例交流案例交流例5:某业务流程管理平台 测试类型:并发、疲劳 系统运行模式: B/S运行模式,三层结构, web服务器为WebSphere, 数据库服务器操作系统Win2000、数据库DB2 并发用户数:500 测试工具: QALoad、 LoadRunner 问题:并发用户数为500时的系统交易响应时间在不可接受的范围内,数据库服务器的资源占用预计会成为系统运行瓶颈。 案例交流案例交流1. 业务:wokflow,总并发用户数:100; 2. 业务:wokflow,总并发用户数:300; 3. 业务:wokflow,总并发用户数:500; 4. 业务:homepage,总并发用户数:100; 5. 业务:homepage,总并发用户数:300; 6. 业务:homepage,总并发用户数:500; 7. 业务:mail,总并发用户数:100; 8. 业务:mail,总并发用户数:300; 9. 业务:mail,总并发用户数:500; 10. 业务:mailsend,总并发用户数:100; 11. 业务:mailsend,总并发用户数:300; 12. 业务:mailsend,总并发用户数:500 故障定位与分析 故障定位与分析 性能检测与故障定位 -中石化项目管理项目故障定位与分析 故障定位与分析 性能检测与故障定位 -人民银行国库系统 测试典型案例分析测试典型案例分析 数据库服务器典型性能调优与评估数据库服务器典型性能问题数据库服务器典型性能问题数据库服务器性能问题及原因分析 单一类型事务响应时间过长 数据库服务器负载 糟糕的数据库设计 事务粒度过大 批任务对普通用户性能的影响 并发处理能力差 锁冲突严重 资源锁定造成的数据库事务超时 数据库死锁 数据库服务器典型性能问题数据库服务器典型性能问题数据库性能问题的一般解决办法 监视性能相关数据; 定位资源占用较大的事务并做出必要的优化或调整; 定位锁冲突,修改锁冲突发生严重的应用逻辑; 对规模较大的数据或者无法通过一般优化解决的锁冲突进行分布。 Oracle与提高性能有关的特性 Oracle与提高性能有关的特性 索引 并行执行 簇与散列簇 分区 多线程服务器 同时读取多块数据 Oracle配置的关键参数 Oracle配置的关键参数 MAX_DSPATCHERS:这个参数指定了系统允许同时进行的调度进程的最大数量。 MAX_SHARED_SERVERS:这个参数指定了系统允许同时进行的共享服务器进程的最大数量。如果系统中出现的人为死锁过于频繁,那么管理员应该增大这个参数的值。 PARALLEL_ADAPTIVE_MULTI_USER:当这个参数的值为TRUE时,系统将启动一个能提高使用并行执行的多用户系统性能的自适应算法。这个算法将根据查询开始时的系统负载自动降低查询请求的并行度。Oracle配置的关键参数 Oracle配置的关键参数 PARLLEL_MIN_SERVERS:这个参数指定了实例并行执行进程的最小数量。其值就是实例启动时Oracle创建的并行执行进程数。 PARLLEL_THREADS_PER_CPU:这个参数指定了实例默认的并行度和并行自适应以及负载平衡算法。它指明了并行执行过程中一个CPU能处理的进程或线程数。 PARTITION_VIEW_ENABLED:这个参数指定了优化器是否使用分区视图。Oracle推荐用户使用分区表(这是在Oracle8之后引入的)而不是分区视图。分区视图只是为了提供Oracle的后向兼容性。 REVOVERY_PARALLELISM:这个参数指定了恢复数据库系统时使用的进程数。 Oracle的索引 Oracle的索引 索引和降低系统处理的数据量 索引和更新 在字段选择性很低的情况下适用索引Oracle的并行执行特性 Oracle的并行执行特性 RDBMS的绝大多数操作都可分为以下3类: 被CPU限制的操作:这类操作的速度和单CPU运行速度一样。通过并行化操作,多个CPU可并行处理系统负载,因此可以更快完成该操作。 被I/O限制的操作:这类操作花了绝大部分时间等待系统完成I/O操作。当系统中同时出现多个I/O请求时,绝大多数RAID控制器将很好工作。另外,当一个线程需要等待完成I/O操作时,可充分利用CPU来处理另一线程的CPU部分。 被竞争限制的操作:并行处理不能改善由资源竞争所限制的操作。 Oracle的并行执行特性 Oracle的并行执行特性 应当首先根据如下一些因素考虑并行度 : 计算机的CPU能力:CPU的数量和能力将影响系统能运行的查询进程数量。 系统处理大量进程的能力:一些操作系统能处理很多并发进程,而另一些操作系统则没有这方面的能力。 系统负载:如果系统现在的运行已经达到了极限,那么对并行度的调整不会有太大效果。如果系统运行已达其能力极限的90%,那么太多的查询进程将使系统不堪重负。 系统处理的查询数量:如果系统的大部分操作是更新操作,但仍有少量的重要查询存在,那么开发人员可能希望系统运行多个查询进程。 系统的I/O能力:如果磁盘上的数据是分片或是使用磁盘阵列存储的,那么系统能够处理多个并行查询。 操作类型:系统是否需要处理很多的全表扫描或排序?并行查询服务器非常有助于这类操作。 Oracle的并行执行特性 Oracle的并行执行特性 并行查询处理 并行创建索引 并行加载数据 并行恢复 Oracle的并行执行特性 Oracle的并行执行特性 关于并行度的一些建议 : 诸如排序之类的需要大量CPU资源的操作应当采用较低的并行度。其原因是这类受限于CPU的操作已经充分利用了CPU,而不需等待系统的I/O操作。 诸如全表扫描之类的需要大量磁盘I/O的操作应当采用较高的并行度。需要等待磁盘I/O的操作越多,系统就越能受益于并行操作。 如果系统中有大量的并发进程,那么应当采用较低的并行度。因为太多的进程将使系统不堪重负。 Oracle的簇与散列簇 Oracle的簇与散列簇 有利 不利Oracle的同时读取多块数据 Oracle的同时读取多块数据 当系统执行表扫描时,Oracle具备同时读取多个数据块的能力,这种能力提高了系统的I/O速度。通过同时读取多块数据,Oracle能够从磁盘上读取更大的数据块,从而避免了对磁盘上数据进行搜索的操作。通过降低磁盘搜索和读取更大的数据块,可以降低系统的I/O开销和CPU开销。 Oracle的分区 Oracle的分区 分区方案: Range Partitioning:这种方案根据数据的范围,比如月、年等等对表中的数据进行分区。 List Partitioning:这种方案和Range Partitioning分区方案很类似,但这种方案是按照数据的值而不是数据的范围来进行分区划分的。 Hash Partitioning:这种分区方案使用散列数来实现对数据的自动分区。 Sub- Partitioning:这种方法就是开发人员熟悉的复合分区方法。这种方法允许开发人员同时使用多种分区方案。Oracle的分区 Oracle的分区 分区有以下几方面的好处 : 对能被分区的大尺寸表进行扫描时,分区可降低I/O操作和CPU的使用率。 可在分区的层次上而不是表的层次上加载数据。 能以删除分区的方式删除数据,而不必使用SELECT语句来删除大量数据。 对用户和应用程序而言,分区是完全透明的。 可在分区层次上而不是在表层次上维护数据。 Oracle的多线程服务器 Oracle的多线程服务器 用户可通过专用服务器进程连接到Oracle实例,也可以通过多线程服务器进程连接到Oracle实例。因为每一个专用服务器进程都将占用大量内存资源和系统资源,所以有必要对多用户连接采用多线程服务器进程。 多线程服务器进程允许多个用户使用一定数量的共享服务器进程。共享服务器进程使用共享缓冲池对用户请求进行排队并返回数据,从而大大减少CPU和内存的使用。 Oracle故障诊断Oracle故障诊断 数据库故障诊断通过获得系统SQL语句执行性能数据,例如每一条SQL语句在Oracle数据库中执行的平均时间,来识别问题发生位置。 Oracle故障诊断Oracle故障诊断 为了分析故障位置,将故障诊断数据(Oracle Diagnostics)与交易执行响应时间(Transaction Response Time)数据关联起来。 例如:某交易 “enter”的平均响应时间高,使用故障诊断(Oracle diagnostics),就可以查找到是什么原因导致了这个问题。 Oracle故障诊断Oracle故障诊断 利用故障诊断的方法(Oracle DB Side Transactions by SQL Stage)可以将SQL语句执行过程中的时间划分为四部分: 解析时间(Parse Time) 执行时间(Execute Time) 读取时间(Fetch Time) 其他时间(Other Time),例如绑定时间(bind time)。 Oracle故障诊断Oracle故障诊断SQL执行时间分解系统组件的调优系统组件的调优 WebLogical调优报告 Oracle调优报告测试典型案例分析测试典型案例分析 硬件配置与系统性能 测试实例 测试典型案例分析测试典型案例分析 服务器集群与系统性能 测试实例 测试典型案例分析测试典型案例分析 负载均衡与系统性能 测试实例 测试典型案例分析测试典型案例分析负载均衡基础知识 负载均衡策略:静态方式、动态方式 负载均衡针对的应用 负载均衡记录文件-用户表 回话保持概念 回话保持方式 负载均衡器布置测试典型案例分析测试典型案例分析 瓶颈在哪里 网络?服务器? 测试实例 测试典型案例分析测试典型案例分析 测试需求分析 测试典型案例分析测试典型案例分析 解决一个实际问题 系统故障诊断案例测试经验交流案例测试经验交流一个文档、邮件接收与发送系统: 业务“下传文档”录制不全,本地保存与打开不能够录制上 Weblogic监控需要做的准备工作 在录制的时候系统不能登陆,IE问题 Unix资源监控,如果无法使用LoadRunner监控 在结果文件analysis中直接可以得到excel的结果 案例测试经验交流案例测试经验交流一个多媒体处理系统: 出现业务“登陆”无法并发的现象,并不影响后面交易的并发执行 采用correlation技术实现Web服务器承受不同的压力 对于“查询”操作验证检查结果是否正确 案例测试经验交流案例测试经验交流一个打扫码信息处理系统: Winsock连接要考虑是否有必要做并发性能测试?还是需要做疲劳测试? 分析中thinktime时间屏蔽掉 加压前系统的性能指标应该关注,否则没有参考依据,例如CPU、内存、Disk I/O等。 指标Disk Time在磁盘阵列时失效,其值大于100%,应注意监控“idle time”指标。 案例测试经验交流案例测试经验交流一个税务测试: 关闭视图降低系统的交易平均响应时间 被测试系统为weblogic应用服务器,并发测试过程中,当大规模并发时候,出现服务器拒绝连接的情况,报错为connection refused(10061),调整配置参数backlog的值,可以克服该问题 索引使用不当 代理的吞吐能力影响并发用户数 案例测试经验交流案例测试经验交流一个IC卡处理系统: 中间件客户端连接数 队列阻塞问题 数据库优化选项问题 负载均衡问题 案例测试经验交流案例测试经验交流 系统配置参数与性能案例测试经验交流案例测试经验交流工具不能支持的被测对象: Oracle Form 加密的HTTP通讯 SMTP+SSL NC 举例: 看看:加密的HTTP通讯怎样解决? 案例测试经验交流案例测试经验交流后台资源指标的不同监控方式: LoadRunner 专用资源监控工具,例如nmon、Watchquene Vmstat命令 Iostat命令 Mpstat命令 Top命令 案例测试经验交流案例测试经验交流不同类型的用户数: 最大并发用户数 最大连接数 最大在线用户数 最大注册用户数 测试工具的使用技巧测试工具的使用技巧面向目标的测试方案 参数池技术 将检查点插入到Vuser脚本 将集合点插入到Vuser脚本 动态数据关联 交易执行结果检查 IP数据池 脚本调试技术 测试工具配置技巧 在LoadRunner中加载WinRunner脚本 Oracle故障诊断 特殊的测试类型 面向目标的测试方案面向目标的测试方案虚拟用户目标类型 每秒点击次数、每分钟页面数或每秒事务数 事务响应时间目标类型 参数池技术(1)参数池技术(1)参数池技术(2)参数池技术(2)将检查点插入到Vuser脚本将检查点插入到Vuser脚本 在脚本中用lr_start_transaction和 lr_end_transaction来成对处理。在两个函数之间的脚本执行所花费的响应时间会记录在结果文件中。 例如:用户关心“查询”操作的响应时间,即可将查询的有关操作脚本放在上述两个函数之间。 将集合点插入到Vuser脚本将集合点插入到Vuser脚本 通过创建集合点,可以确保多个Vuser 同步操作,在服务器上创建密集的用户负载。 假设有10个Vuser 同时检查帐户信息时,需要估量某个基于Web 的银行系统如何执行操作。为了模拟服务器上要求的用户负载,可以指示所有的Vuser 完全在同一时刻检查帐户信息。动态数据关联动态数据关联 提问:系统的输出值需要为后续操作提供输入,并且这些值只对当前会话有效: 系统产生的SessionID; 每次访问Web页面的动态URL; 表单提交期间录制的Field(有时会隐藏) 解决办法: 从一个操作步骤中扑捉输出值 该值用于另一个步骤的输入 动态数据关联动态数据关联几种关联数据的方法: 手工关联 录制结束后自动关联 录制过程中自动关联动态数据关联动态数据关联在Vuser脚本中手工关联动态数据步骤: 确定需要扑捉的值 找到所扑捉值的左右边界标识符 决定应该使用哪个边界 将函数web_reg_save_param加入脚本 在函数中加入参数名称、左边界标识符、右边界标识符以及函数事件 在每次脚本运行时参数化动态数据 校验执行结果IP数据池IP数据池运行负载生成器上的“IP 向导”添加指定数量的IP 地址 重新启动计算机 如有必要,用新地址来更新服务器的路由表 在Controller 中启用这项功能 脚本调试技术脚本调试技术Winsock并发性能测试 关键技术 : 在脚本中如何用变量来代替定值,即处理Winsock应用程序数据流。 null 原始脚本 PLAYER_INFO *s_info; { /* Declare Variables */ SET_ABORT_FUNCTION(abort_function); DEFINE_TRANS_TYPE("wsk-AdvancedTech_1.c"); // Checkpoints have been included by the convert process DefaultCheckpointsOn(); DO_WSK_Init(s_info); SetTimeout(20); /* Wait up to 20 seconds for each expected pattern */ SYNCHRONIZE(); BEGIN_TRANSACTION(); DO_WSK_Socket(S1, AF_INET, SOCK_STREAM, IPPROTO_IP); DO_WSK_Bind(S1, ANY_ADDR, ANY_PORT); DO_WSK_Connect(S1, "172.22.24.125", 2100, AF_INET); ///////////////////////////////////////////////////// // The session id returned by the server is // unique to each connection ///////////////////////////////////////////////////// * 21bytes: SessionID=jrt90847\r\n */ DO_WSK_Expect(S1, "\n"); ////////////////////////////////////////////////////// // This unique id is then used for subsequent // requests ////////////////////////////////////////////////////// /* 34 bytes */ DO_WSK_Send(S1, "SessionID=jrt90847\r\n:^B^@^@^@^B^@^@^@^A^@^@^@"); /* 15 bytes: ID Accepted#^@\r\n */ DO_WSK_Expect(S1, "\n"); DO_WSK_Closesocket(S1); END_TRANSACTION(); REPORT(SUCCESS); EXIT(); return(0); } null 修改后的脚本 PLAYER_INFO *s_info; { /* Declare Variables */ char Buffer[64]; char SendBuffer[64]; int nBytesReceived = 0; SET_ABORT_FUNCTION(abort_function); DEFINE_TRANS_TYPE("wsk-AdvancedTech_1.c"); // Checkpoints have been included by the convert process DefaultCheckpointsOn(); DO_WSK_Init(s_info); SetTimeout(20); /* Wait up to 20 seconds for each expected pattern */ SYNCHRONIZE(); BEGIN_TRANSACTION(); DO_WSK_Socket(S1, AF_INET, SOCK_STREAM, IPPROTO_IP); DO_WSK_Bind(S1, ANY_ADDR, ANY_PORT); DO_WSK_Connect(S1, "172.22.24.125", 2100, AF_INET); ////////////////////////////////////////////////////// // The reply from the server is read into // the Buffer variable. We will then have // the unique Session ID for this connection. // Also need to null terminate the buffer // after receiving. ////////////////////////////////////////////////////// DO_WSK_Recv(S1, Buffer, 64, 0, &nBytesReceived); Buffer[nBytesRecieved] = '\0'; /* 21bytes: SessionID=jrt90847\r\n */ //DO_WSK_Expect(S1, "\n"); ////////////////////////////////////////////////////// // Finally, substitute the Session ID received from // the server with the one coded in the script. ////////////////////////////////////////////////////// sprintf(SendBuffer, "%s:^B^@^@^@^B^@^@^@^A^@^@^@", Buffer); DO_WSK_Send(S1, SendBuffer); /* 34 bytes */ //DO_WSK_Send(S1, "SessionID=jrt90847:^B^@^@^@^B^@^@^@^A^@^@^@"); /* 15 bytes: ID Accepted#^@\r\n */ DO_WSK_Expect(S1, "\n"); Advanced Scripting Techniques for WinSock 7-5 DO_WSK_Closesocket(S1); END_TRANSACTION(); REPORT(SUCCESS); EXIT(); return(0); }脚本调试技术脚本调试技术SQLServer并发性能测试 关键技术 : 从存储过程中扑获一个值 利用检索到的值作为一个参数传递给存储过程 脚本调试技术脚本调试技术存储过程定义如下 create procedure inc_test_sp ( @first_param int ) as begin select second_param = @first_param + 1 end null脚本代码如下: strcpy(sql_statement, /* >> 1 << */ "execute inc_test_sp @sample_param ='{01}' "); DO_substr(sql_statement, 1, "100" ); BEGIN_CHECKPOINT(); /* #1: Stored Procedure */ DO_dbcmd(0, sql_statement); DO_dbsqlexec( 0 ); while (DO_dbGetResults(0)); END_CHECKPOINT(25); /* #25: Stored Procedure */ 第一步: 加入必要的变量说明 在QALoad脚本的开始部分说明下面的变量 int rhobot_script(s_info) PLAYER_INFO *s_info; { int rhobot_script(s_info) PLAYER_INFO *s_info; { char szSecondParam[20]; /* 假设数字长度 < 20!! */ long iSecondParam; 第二步: 调用存储过程 调用存储过程,然后修改其提取返回值(粗体部分) strcpy(sql_statement, /* >> 1 << */ "execute inc_test_sp @sample_param ='{01}' "); DO_substr(sql_statement, 1, "100" ); BEGIN_CHECKPOINT(); /* #1: Stored Procedure */ DO_dbcmd(0, sql_statement); DO_dbsqlexec( 0 ); DO_addResultVar( "second_param" ); /* Add THIS line HERE !!!*/ while (DO_dbGetResults(0)); END_CHECKPOINT(25); /* #1: Stored Procedure */ strcpy( szSecondParam, DO_getResultVar( "second_param" ) ); iOutputReqID = atoi( szSecondParam ); RR__printf("Second Param (string): %s", szSecondParam ); RR__printf("Second Param (int): %d", iSecondParam ); null原始QALoad 脚本代码 strcpy(sql_statement,/* >> 2 << */ "execute use_inc_value_sp @inc_value ={01}"); DO_substr(sql_statement, 1, "101" ); BEGIN_CHECKPOINT(); /* #2: Stored Procedure */ DO_dbcmd(0, sql_statement); DO_dbsqlexec( 0 ); while (DO_dbGetResults(0)); 修改后的QALoad 代码(使用字符串值) strcpy(sql_statement, /* >> 2 << */ "execute use_inc_value_sp @inc_value ={01}"); /* Note that szSecondParam was declared and received the value in the steps in Part 1 */ DO_substr(sql_stat
/
本文档为【高级性能测试】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索