1。录制:Resordingamp;gt;httphtmllevel Htmlbasedscript:同一地址下集合多个数据或文档信息 weburl(survey。jsp, URLhttp:108。88。3。247:8806servicesurvey。jsp?catid221239, TargetFrame, Resource0, RecContentTypetexthtml, Referer, Snapshott5。inf, ModeHTML, EXTRARES, Url。。imagesbg01。jpg,Refererhttp:108。88。3。247:8806servicesurvey。jsp?catid221239,ENDITEM, Url。。imagesmainbg01。jpg,Refererhttp:108。88。3。247:8806servicesurvey。jsp?catid221239,ENDITEM, Url。。imagesleftsearchinput。jpg,Refererhttp:108。88。3。247:8806servicesurvey。jsp?catid221239,ENDITEM, LAST); Urlbasedscript:只录制单一数据或文档信息 weburl(base。css7, URLhttp:108。88。3。247:8806stylesbase。css, Resource1, Refererhttp:108。88。3。247:8806flashmenu。swf, LAST); 2。录制完成的脚本,必须备份好一份原始数据 3。思考时间与事务处理:在优化脚本过程中,把事务中的思考时间全部删除掉,并且在事务开始之前,添加一个思考时间来代替事务中被删除的思考时间 4。文本检查点:大多数在录制脚本过程,一同设置检查点(这样比较方便,也同时不会把检查点的位址放错地方);当然检查点也可以是后期添加,但要对脚本需要设置检查点的位置要相当清楚 5。运行设置: 大容量测试:设置GlobalScheduleamp;gt;Duration 压力测试:预测压力测试的最大值,才可以进行压力测试 负载测试:累加客户数量,进行负载测试 6。参数化设置、关联 7。使用编写语言方式实现:RunLogic 概率30 ction() { introwNum; rowNumrand()1001; if(rowNumamp;lt;30) Vuserinit(); Return0; } 8。参数化Sequential )SequentialEachiteration按迭代次数顺序读取参数化列表数据 )SequentialEachoccurrence按参数化列表的数据,每个参化都会对应参数化列表唯一的一个数据(参数化值只读取一次) )SequentialOnce按迭代或循环都只会读取参数化的一个值 9。参数化Unique取值 )AbortVuser当取数超过参数化列表,脚本停止 )Continueinacyclicmanner当取数超过参数化,会循环方式读取参数化列表 )Continuewithlastvalue当取数超过数化,会以参数化列表最后一个值来运行脚本 备注:为了保证参数化使用Unique取值方式,必需以下公式成立: Param参数记录条数amp;gt;迭代次数Vuser数目 10。参数化Samelineas(中文:按名称) 设置参数化在参数化列表中的选项列;简单就是说,同一个参数化列表,设置多个参数化,并且单独分配给参数项 11。函数 webaddcookie:vuser脚本添加一个cookie信息 weblink:摸拟用户单击一个超链接的操作 weburl:模拟用户请求 websubmitform:自动检测在当前页面上是否存在form,然后将后面Itemdata数据进行传送 websubmitdata:无须前面的页面支持,直接发送给对应页面相关数据 12。IE需要去掉第三方浏览器扩展;不去掉的话,会造成录制时自动关闭IE浏览器 实际应用: 1。替换原有脚本的地址 2。在测试本机,设置资源计数器,并设置为手动监控amp;amp; 文件起名:年月日性能测试名称20121120xinge 脚本起名:VU性能测试名称年月日vuxingye20111228 录制脚本: 1。录制好的脚本,进行备份 2。脚本的思考时间全部注释 3。事务之前都必须思考时间约为5秒lrthinktime(5); 4。录制脚本过程中,可以加插检查点,一般针对数字或英文进行,主要为了减少运行脚本所出现的错误 5。如果单单想知道哪个页面的事务加载时间,可以单独添加一个事务 6。每个事务的排序,必须在事务名前面加上排序号码,方便分析报告时,防止各个事务随机排序 lrstarttransaction(101首页); lrstarttransaction(201楼盘展示); 7。开始录制前,不要添加测试地址,这是为了更好的不相关联的地址进行测试 8。runtimesettingamp;gt;InternetProtocolamp;gt;Preferences设置检查点:EnableImageandtextcheck 9。每个性能测试点,都需要单独设立一个Action进行录制,除了子类相同可以同一个Action 10。显示运行页面Toolsamp;gt;GeneralOptionsamp;gt;Displayamp;gt;勾上ShowBrowsserduringreplayamp;amp;Autoarrangewindo 运行场景: 1。测试出最大用户数 startvusers:设置较在用户数 直接运行场景 ScenarioGroups手动启动用户执行 打开计算机的任务管理器amp;gt;性能查看CPU是否已经满载 场景出现失败事务或出错也差不多可以确定最大用户数 重第3,4,5可以快速找到服务器的最大用户数 2。压力测试、负载测试,基于已经找出来的最大用户数,在场景设置中正常设置运行的环境 监控资源windows 1。开始amp;gt;运行amp;gt;输入perfmon,启动性能监控器 2。性能日志和警报amp;gt;计数器日志amp;gt;新建日志(新的性能日志) 3。新的性能日志窗体: amp;gt;常规添加计数器、数据采样最好设置为5到10秒 amp;gt;日志文件设置文件名结尾例:设mmddhhmm:月日时分 amp;gt;计划启动日志(手动amp;amp;自动,看情况需要) 停止日志(日志最好为1至2天的文件大小,如果需要继续监控系统可以设置:当日志文件关闭时,启动一个新的日志文件) 4。查看日志文件:C:PerfLogs 5。打开性能监控器amp;gt;系统监视器amp;gt;查看日志数据amp;gt;来源amp;gt;日志文件amp;gt;选取生成的日志文件amp;gt;时间范围,设置需要的时间范围amp;gt;点击确定,就会显示日志文件监控资源情况 6。生成CSV文件提供给LR分析报告amp;gt;右键数据图表,选择数据另存为amp;gt;格式:文本文件CSVamp;gt;点击保存 名称:性能测试名年月日号码排序 perfmon ProcessorTime(ProcessorTotal,应用服务进程,数据库服务进程,如java,sqlservr等)(90以下) Process ID(监控Process ID是否变化,判断是否进程崩溃重启了) Processamp;amp;Processor:UserTime Process:WorkingSet(ProcessTotal) Process:PrivateBytes(ProcessTotal,应用服务进程,数据库服务进程,如java,sqlservr等) Process:VirtualBytes(ProcessTotal,应用服务进程,数据库服务进程,如java,sqlservr等) Memory:AvailableMbytes(memory)(5MB以上) Memory:CommittedBytes(memory) Memory:Pagessec(020,不能超过20) System:ContextSwitchsec(system) System:ProcessorQueueLength(不能高于CPU数的2倍) ExceptionDispatchessec(physicalDisk) FileDataOperationssec(physicalDisk) Avg。DiskQueueLength(PhysicalDiskTotal)(不能高于磁盘数的2倍) Diskreadssec(physicalDisk) Diskwritessec(physicalDisk) DiskTime(PhysicalDiskTotal)(55以下) Threads(Objects) disktime超过100的解析 现象: 在LR上我们可以看到disktime超过100的现象。 如果机器处在很忙的状态,这个值有可能会超过100, 比如,复制大量的文件。 原因: 出现这种现象的原因是处理器允许操作系统使用重叠的IO, 磁盘性能计数器使用一个100纳秒精度的计数器来度量磁盘时间, 再按照采样频率显示出来。采样后的时间可能会超过100, 比如:在2毫秒内有10个请求,采样时间为10毫秒。如果是raid磁盘, 因为操作系统可以读写到多到磁盘上,从而产生重叠IO, 这会使disktime大于100。 其实: 要度量磁盘时间及磁盘延迟的问题, 可以用以下几个计数器来看, 通常情况下,如果以下几个计数器之一的值有大于20毫秒的话,磁盘就是超负荷了。 Avg。DisksecReadavg。DisksecWriteAvg。DisksecTransfer DiskTime(PhysicalDiskTotal)(55以下) 55是指平均到单个磁盘,但是很多时候我们不知道他有多少个磁盘做阵列, 所以就可以用Avg。DisksecReadavg。DisksecWriteAvg。DisksecTransfer 监控数据库的相关计数器: Loginsec Fullscanssec(全表扫描秒) BufferManager(缓冲器管理器) Buffercachehitratio() cachehitratio(高速缓存命中率) LatchesWaitssec(闩等待秒) Locks(锁) Lockblocks(服务器上锁定块的数量) NumberofDeadlockssec(死锁的数量秒) AverageWaittime(ms)(平均等待时间(毫秒)) LockRequestssec(锁请求秒) MemoryManager SQLServerGeneral:UserConnections(要比MaximumWorkerThreads的配置值(缺省值255)低) LR使用监控数据的文件 1。启动LRAnalysisamp;gt;Toolsamp;gt;EcternalMonitorsamp;gt;ImportDataamp;gt;添加生成的CSV文件amp;gt;FileFormat(选取性能服务器系统)amp;gt;点击确定amp;gt;SelectMonitorTypeamp;gt;选择外部性能服务器系统,点击确定,OK了 LR报告分析 1。LR报告的平均事务响应时间:每秒执行事务的平均时间 2。吞吐量(网络方面):场景运行过程中服务器的每秒的吞吐量 环境网络为10MB但实际网络环境为10MB81。25MB左右 如果用户数增加,吞吐量不变(范围值:1。25MB),说明吞吐量为瓶颈 21。吞吐量图与每秒事务数图 如果用户数增加,点击率不变。看是否为吞吐量为瓶颈,如果不是,可能是系统资源问题; 如果点击的次数增加而吞吐量持续不变或减少,就说明服务器无法执行增加的请求(每秒点击率),结果就是事务反应时间的增加; 3。windows资源(CPU队列:核数2): ProcessorTime:CPU使用率超过90表时CPU为瓶颈 ProcessorQueueLength:队列长度持续大于2(核心数),利用率ProcessorTime一直很低,表示可能出现处理器拥塞 UserTime:表示耗费CPU进行数据库操作;可考虑增加索引,尽用使用简单的表连接 DPCTime:越低越好;在多处理器系统中,加入一个网卡可能会提高性能,如果值大于50并且ProcessorTime非常高,说明网络已经不饱和 4。windows资源(硬盘队列:盘数2): DiskTime:如果DiskTime数值较大,表明硬盘可能会是瓶颈;如果数值持续超过80,可能是内存漏泄 Avg。DiskQueueLength:较高的值表时磁盘控制器由于失败而不断重试磁盘;值应不超过磁盘数的1。5倍,要提高性能,可增加磁盘;备注:一个RaidDisk实际有多个磁盘 AverageDiskReadWriteQueueLength:指读取写入请求列队的平均数 AverageDisksecTransfer:写入数据所需的平均时间;值控制在小于15ms为最佳,介于1530ms之间为良好,3060ms之间为可以接受,超过60ms需要考虑更换硬盘或硬盘的RAID方式 DiskTime和Avg。DiskQueueLength的值很高,而pageReads。sec页面读取操作速率很低,可能存在磁盘瓶颈 5。windows资源(内存): AvailableMbytes:可用物理内存数;如果值小于100MB,说明计算机总的内存不足,或程序没有释放内存 CommittedBytes:是指有多少虚拟内存正在被使用,虚拟内存是占用硬盘空间的内存,不占用物理内存 Pagesec:如果值很大,表明内存有问题,或运行使用内存映射文件的程序所致 CacheBytes:文件系统缓存,默认情况下为可用物理内存的50; 内存漏泄:监控MemoryAvailableByteramp;amp;CommittedBytes 内存漏泄的进程:监控ProcessPrivateBytesamp;amp;Workingsetamp;amp;HandleCount 内核模式进程导致漏泄:监控MemoryPoolNonpagedByteramp;amp;PoolNonpagedAllocsamp;amp;Processprocessnameamp;amp;PoolNonpagedBytes 6。windows资源(数据库事务总数) MercuryVirtualUser 第一步:录制需要进行性能测试的业务流程 Init:包含登录过程 Action:包含实际业务流程(BP) End:包含注销和清理程序 Vusers只重复Action中的步骤 第二步:回放脚本 第三步:编辑脚本 添加事务:度量一个或多个步骤 参数化值:为更真实模似环境,参数化用户或其他数据 添加内容检查:插入amp;gt;新建步骤:webregfind,输入检查的内容;例如:需要检查用户名:root,直接在搜索特定文本:root,确定后生成: webregfind(Textroot, LAST); 第四步:准备回载 常规其他:需要按线程运行Vuser; 迭代次数:循环次数 迭代的时间间隔:循环一次后,多久才继续模拟业务 并发用户:同一物理时间运行的用户数量 关注:业务并发用户、服务端承受最大并发 思考时间:每个请求之间的间隔时间 关注:如何模拟正式环境? 网络:速度模拟 关注:如何模拟真实的网络环境? sitescope培训 1。了解sitescope:为专门监控Unixamp;amp;Linux的软件;以前的如果要监控Linux就必须在Linux服务器里面安装软件才能监控,监控的效果也不如理想; 11监控Oracle LoadRunner除了可以用本地监控器来收集Oracle的性能数据外,还可以整合SiteScope对Oracle进行监控。 根据SiteScope帮助文档,需要把OracleJDBCdatabasedriver文件(classes12。zip)放到lt;sitescopeinstallpathgt;SiteScopejavalibext,之后重启SiteScope才能对Oracle进行监控。lt;sitescopegt; (classes12。zip文件可以在oracle安装目录下得到lt;oracleinstallpathgt;oraclejdbclibclasses12。zip)lt;oraclegt; 数据库连接URL:jdbc:oracle:thin:108。88。3。223:1521:test 数据库驱动程序:oracle。jdbc。driver。OracleDriver 重启SiteScope服务 lt;sitescoperootdirectorygt;WebINFlib和lt;sitescoperootdirectorygt;javalibextlt;sitescopegt;lt;sitescopegt; 如出现ErrorCode:31008。ErrorDescription:Errorgettingcounters:unabletoretrievethecounters:请设置监控的计算机远程桌面设置为允许使用amp;amp;禁用防火墙 另外需注意的是:连接Oracle的数据库用户必须是DBA权限的用户。 12监控Mysql 1。下载java版的mysql驱动程序(JDBC驱动程序,最后是5版本以上的) 下载后进行解压缩,将解压缩的mysqlconnectorjava5。1。14bin。jar文件复制 C:SiteScopejavalibext目录下(以你的安装目录为准) 2。添加mysql计数器 进入监控器界面,选中sitescope点击右键,选择新建组,输入组的信息,如组名称为mysql。 右击组mysql,选择新建监控器,在新建监控器界面选择数据库计数器 数据库连接:输入jdbc:mysql:mysql服务器IP:端口号数据库名称(端口默认是3306可以不写出来) 查询:showstatus(表示把所有参数显示出来,然后进行选择)或是showstatuswherevariablenamelike其中的参数’(表示直接选择要监控的参数) 数据库驱动程序:org。gjt。mm。mysql。Driver 数据库的用户名和密码:root密码 上述信息填写完毕后,点击获取计数器,在显示出来的计数器中勾选要监控的计数器,点击确定,添加计数器结束。 查询:showstatus 数据库驱动程序:org。gjt。mm。mysql。Driver 数据库的用户名和密码:root密码 数据库连接:jdbc:mysql:108。88。3。223:tf