已阅读5页,还剩24页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
一、脚本问题问题1.1、无法弹出IE浏览器或者录制中出现0事件l 原因:一般是由于电脑安装多个浏览器导致l 解决:修改IE选项设置,去掉勾选“启用第三方浏览器扩展”问题1.2、Windows 2003无法录制IE6/7l 原因:可能是Windows server 2003默认对IE加载DEP(数据执行保护)特性,而Vugen.exe刚好跟DEP冲突所导致l 解决:修改我的电脑属性高级性能(设置)数据执行保护添加将Loadrunner安装目录bin下的Vugen.exe添加进去确定。重启Loadrunner问题1.3、录制正常但是脚本中无数据显示l 原因:有可能是协议或者是捕获数据的方式导致l 解决:在录制中打开Options(选项)Port Mapping(端口映射)选择捕获数据的方式或者选择识别协议内容问题1.4、录制时出现Visual Studio调试器l 原因:Windows对数据的保护设置l 解决:打开“我的电脑”属性高级性能-设置数据执行保护勾选“除所选之外”“添加”选择“iexplore.exe”即可问题1.5、录制时修改参数保存的方式l 原因:.net协议录制时,参数默认保存为(Binary)格式l 解决:录制时进入OptionsMRecordingSerialzation中将Serialzation format的Value值更改为XML格式问题1.6、脚本回放正常,未通过l 原因:可能是缺少包头。默认情况下是不录制HTTP Header(请求包头),如果有些数据存放在Header中,导致脚本无法正常通过l 解决: 利用抓包工具(如HttpWatch),进行抓包分析,找到报头,在请求前添加该报头。如:web_add_auto_header(x-requested-with, XMLHttpRequest) 查找缺少的报头名,添加包头。在录制中打开Options(选项)Advanced(高级)Headers(标题)Recourd headers in list添加包头问题1.7、脚本回放无法正常通过l 原因:录制时请求方式l 解决:在录制中打开Options(选项)Recording(高级)URL Advanced选择Use web_custom_request only方式录制问题1.8、脚本出现26601错误l 原因:缺少压缩包头l 解决:web_add_auto_header(“Accept_Encoding”,“gzip,deflate”);二、其他问题问题2.1、Java执行场景时并发数上不去l 原因:Spring框架重定向问题l 解决:将修改为scope=”prototype”问题2.2、在场景设置中监控不到服务器l 原因:服务没有开启l 解决:打开服务开启相关服务(首先检查Remote Registry服务,然后在开启computer browser,如果computer browser无法开启,检查server、workstation服务)问题2.3、在生成结果中采集的数据不一致l 原因:由于采样的时间u 在摘要中,时间是根据整个场景执行的过程进行采样u 在平均事务响应时间主要是按照Loadrunner分析出来的采样频率来获取l 解决:可通过“set granularity”来修改平均事务响应时间的采样频率,设为场景执行时间,结果会一致。问题2.4、SilverLight中脚本回放错误l 原因:缺少SOAPAtion包头l 解决:在录制中打开Options(选项)Advanced(高级)Headers(标题)Recourd headers in list添加包头问题2.5、协议中无法查看数据文件l 原因:默认次方式离职脚本中生成的数据文件类型为Binary,需修改为XML格式l 解决:在录制中打开Options(选项)MRecordingserializatioformat改为XML即可三、脚本优化3.1、检查点函数:web_reg_find、web_image_check和web_findl web_reg_find(文本检查点)函数的使用方法和技巧web_reg_find(“Search=查找的范围”, “Save Count=记录缓冲出现的次数”,“Test=查找的参数”,LAST);If (atoi(lr_eval_string(“N_count”) 0 )用法:在缓冲中查找,所以要放在查找内容之前l web_image_check(图片检查点)函数的使用方法和技巧web_image_check(“函数标题”,“ALTSRC=图片的全路径”,LAST);用法:在HTML中使用,要放在查找内容之前,必须勾选run-timePerferencesEnable Image and Test Check3.2、关联函数:web_reg_save_param、web_reg_save_param_exl web_reg_save_param(_ex)函数的使用方法和技巧web_reg_save_param(_ex)(“关联函数名”, “LB=左边界”,“RB=右边界”,“Ord(Ordinal)= 出现的次数”,“Search = 查找的范围”,“SaveOffset = 偏移的量”,“SaveLen = 保存的长度”,“LAST”); u 技巧:在关联参数中随机选值; 方法一:定义变量,使用LR_paramarr_random函数取值,如下:Char*param;Param=lr_paramarr_random(“关联函数名”);Lr_save_string(“Param”,“新参数名”); 方法二:定义随机参数,在Ord(Ordinal)中利用参数随机参数取值,如下:在参数列表中定义参数random_num将Ord(Ordinal)=random_num3.3、参数Parameter List界面介绍l File format中Column选项如下: Comma:以逗号分隔 Tab:以Tab分隔 Space:以空格分隔l Select next row中选项如下: Sequential:顺序取值 Random:随即取值 Unique:唯一取值l Update value on中选项如下: Each iteration:每次迭代更新 Each occurrence:每次取值更新 Once:只更新一次l When out of values中选项如下: Abort Vuser:参数超出后退出 Continue in a cyclic value:参数超出后循环 Continue with last value:参数超出后使用最后一个值u 技巧1:如果所需参数中存在空格(逗号),需要在File format中选择以Comma(Tab)分隔,否则参数不可用。或者在参数中的将逗号用“”u 技巧2:在Date/Time中可以设置自增自减。在offset标签中勾选Offset parameter自增:勾选Working days onl自减:勾选prior to currentu 技巧3:如果参数过多时,可以将多个参数放到一个参数表中。如下图:3.4、思考时间lr_think_time(3);u 技巧:如果模拟用户的操作可适当添加思考时间。如果想获取TPS的值,则不能加思考时间和集合点。3.5、小技巧3.5.1、 LR中浮点数相加double atof( const char *string);/申明float UpPrice1;float UpPrice2;float i=0.1;char * UpPrice3=(char*)calloc(100,sizeof(char);lr_save_string( lr_eval_string(CorrelationParameter_2),UpPrice1 );/lr_error_message(打印结果%s, lr_eval_string(UpPrice1);UpPrice2=atof(lr_eval_string (UpPrice1)+i;atof( lr_eval_string(UpPrice1) );sprintf( UpPrice3,%.2f,UpPrice2 );lr_save_string( UpPrice3,UpPrice );lr_error_message(打印结果:%s, lr_eval_string(UpPrice);使用参数取值用UpPrice3.5.2、 URL编码与解码URL=/s?wd=%E6%B5%B7%E6%B7中要对%E6%B5%B7%E6%B7进行参数化,但是由“值”进行URL编码过来的,无法直接用中文参数化,由于LR提供了方法,现在要将中文进行URL编码。解决方法如下: URL编码:lr_convert_string_encoding(值,LR_ENC_SYSTEM_LOCALE, LR_ENC_UTF8 , UnicodeString); lr_save_string (lr_eval_string(UnicodeString),nURLencoder );web_convert_param(nURLencoder,SourceEncoding=PLAIN, TargetEncoding=URL,LAST ); lr_output_message(Url编码 = %s,lr_eval_string(nURLencoder);URL解码:lr_save_string (lr_eval_string(nURLencoder),URLencoder );web_convert_param(URLencoder,SourceEncoding=URL, TargetEncoding=PLAIN,LAST );lr_convert_string_encoding(lr_eval_string(URLencoder),LR_ENC_UTF8 ,LR_ENC_SYSTEM_LOCALE, UnicodeString1); lr_output_message(Url解码 = %s,lr_eval_string(UnicodeString1);3.5.3、 Base64加密与解密base64加密:参数化GUID=97FD2AD5-1C5E-43F6-8314-FC980CE54FBCvoid GetBase64Encode(const char* in_str,char* out_str)/加密方法static unsigned char base64 =ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/; int curr_out_len = 0;int i = 0;int in_len = strlen(in_str);unsigned char a, b, c;out_str0 = 0;if (in_len 0)while (i = in_len) ? 0 : in_stri + 1;c = (i + 2 = in_len) ? 0 : in_stri + 2;if (i + 2 2) & 0x3F); out_strcurr_out_len+ = (base64(a 4) & 0xf); out_strcurr_out_len+ = (base64(b 6) & 0x3); out_strcurr_out_len+ = (base64c & 0x3F); else if (i + 1 2) & 0x3F); out_strcurr_out_len+ = (base64(a 4) & 0xf); out_strcurr_out_len+ = (base64(b 6) & 0x3); out_strcurr_out_len+ = =;else out_strcurr_out_len+ = (base64(a 2) & 0x3F); out_strcurr_out_len+ = (base64(a 4) & 0xf); out_strcurr_out_len+ = =; out_strcurr_out_len+ = =;i += 3; out_strcurr_out_len = 0;Action() char * take; char * toke; char res512; take=(char *)strtok(lr_eval_string(GUID),);/格式化“”字符串 toke=(char *)strtok(take,);/格式化“”字符串,并将值存入toke中 lr_error_message(GUID: %s,toke); GetBase64Encode(toke,res);/调用base64函数 lr_output_message(res); return 0;四、运行设置(Run-time Settings)4.1、General(常规)l Run Logic(运行逻辑)l Pacing(迭代) Start new Lteration:开始新迭代l As soon as the previous iteration ends:在前一次迭代结束后立即开始l After the previous iteration ends:在前一次迭代结束后延迟l Log(日志) Enable logging:启动日志 Send messages only when an error occurs:仅在出错时发送消息 Always send messages:始终发送消息l Standard log:标准日志l Extended log:扩展日志n Parameter substitution:参数替换n Data returned by server:服务器返回的数据n Advanced trace:高级跟踪l Think Time(思考时间) Lgnore think time:忽略思考时间 Replay think time:使用思考时间l As recorded:按录制时记录时间l Multiply recorded think time by_:将录制思考时间乘以_l Use random percentage of recorded think time:使用录制思考时间的随机百分比l Limit think time to _seconds:将思考时间限制为多少秒l Additional attributes(其他属性):略l Miscellaneous(其他) Error Handing:错误处理l Continue on error:出现错误时仍继续l Fail open transactions on lr_error_message:在lr_error_message上打开失败事务l Generate snapshot on error:出现错误时生成快照 Multithreadingl Run Vuser as a process:按进程运行Vuserl Run Vuser as a thread:按线程运行Vuser Automatic Transactionsl Define each action as a transaction:将每个Action定义为一个事务l Define each step as a transaction:将每步定义为一个事务4.2、Network(网络)l Speed Emulation(速度模拟):略4.3、Browser(浏览器)l Browser Emulation(浏览器仿真) Simulate browser cache:模拟浏览器缓存l Cache URLs requiring content(HTMLs):缓存网址需要的内容(HTMLs)l Check for newer versions of stored pages every visit to the page:每次访问该页时检查已存储页的较新版本 Download non-HTML resources:下载非HTML资源 Simulate a new user on each iteration:每次迭代模拟一个新用户l Clear cache on each iteration:在每一次迭代中清除缓存4.4、InternetProtocol(Internet协议)l Proxy(代理服务器):略l Preferences(首选项) Enable Image and text check:启用图像和文本检查点 Hits per second and HTTP codes:每秒点击次数和HTTP代码 Pages per second (HTML Mode only):每秒页数(仅HTML模式) Response bytes per second:每秒响应字节数 Winlnet replay instead of Sockets(Windows only):WinInet重播,而不是套接字 File and line in automatic transaction names:自动事务名中的文件和行号 Non-critical resource errors as warnings:非关键资源错误 Save snapshot resources locally:在本地保存快照资源l Download Filters(下载筛选器):略l ContenCheck(内容检查):略4.5、Date Format Extension(日期格式的扩展)l Configuration(组态):略五、场景设置(手工场景)5.1、手工场景5.1.1、集合点策略l Scenario(场景)Rendezvous(集合点)Policy(策略),内容如下: Release when _% fo all Vuser arrive at the rendezvous:所有用户中X%到达集合点时,释放 Release when _% fo running Vuser arrive at the rendezvous:所有正在运行的用户中X%到达集合点时,释放 Release when _ Vuser arrive at the rendezvous:当X个用户到达集合点时,释放 Timeout between Vuser _ Sec:每个用户到达集合点后等待下一个用户的最长时间5.1.2、Run-time Settings(此略)l 主要关注:思考时间、迭代时间、缓存的设置5.1.3、用户数l 选择Scenarioconvert scenario to the percentage mode(转换场景的百分比模式)设置每个脚本所需要的用户数5.1.4、日志l 选择ResultsResults Setting,打开Set Results Directory设置:选择日志存放的目录 Automatically create a results directory for each scenario execution:自动创建每个方案的执行结果目录 Automatically overwrite existing results directory without prompting for confirmation:自动而不提示确认,覆盖现有结果目录5.1.5、负载机l 开启需关闭防火墙,启动Agent(程序LoadrunnerToolLoadrunner Agent Running Setting Configuration),查看80端口是否被占用。同时开启Network DDE和Network DDE DSDM服务5.1.6、IP欺骗l 使用IP欺骗时,本机的网卡需要处于非DHCP模式下l IP欺骗操作步骤: 首先打开Loadrunner中Tool菜单下的IP Wizard工具,输入服务器IP 然后添加IP(一般采用B类地址,C类区域下只有255) 再使用IP Wizard工具将IP地址写入网卡,重启网卡完成生效l 设置IP的运行模式:选中Controller中Tool菜单下的Expert mode模式,然后打开Tool菜单下的Options对话框,在General标签中设置IP的运行模式(进程或线程)l 在使用时,将Enable IP Spoofer选中:在Controller中Scenario菜单下的选中Enable IP Spoofer即可5.2、目标场景5.1.1、提供的5种目标1、Virtual Users(虚拟用户数)2、Hits per Second(每秒点击率)3、Transaction per Second(每秒事务数)4、Transaction Response Time(事务的响应时间)5、Pages per Minute(每分钟页面的刷新次数)5.1.2、ScenarioSettings(场景设置)1、Run Time是指当前目标达到后,需要运行的时间2、Stop scenario and save results:未达到目标,场景停止运行3、Continue scenario without reaching:未达到目标,场景继续运行4、Receive notification出现目标未达到时,提示信息5.1.3、LoadBehavior(负载生成)1、Automatic:自动(每2秒运行50个用户)2、选择Controller达到目标之前,场景运行的时间3、选择Controller达到定义的目标的速度(用户数/点击率/页面数)5.3、监控以及指标5.3.1、服务器资源监控指标l CPU监控指标指标分析% Processor TimeCPU的使用率,一般不超过80% Privileged Time指CPU内核时间在特权模式下处理线程执行代码所花时间的百分比(如果该值和Physical Disk值一直很高,表明I/O有问题。通过设置Tempdb in RAW、减低“max async IO”和“max lazy write IO”都会降低该值)% User Time消耗CPU的数据库操作。若为应用服务器,该值较大,通过算法优化等方法降低该值;若为数据库服务器,该值较大,通过对数据库进行优化增加索引、使用简单的表连接、水平分割大表格来降低该值Processor Queue Length就绪的线程数,一般为2,超过说明处理器存在问题l 内存监控指标指标分析Available Mbytes可用物理内存,不小于15%(如果该值很小,说明内存可能不足,没有释放)Committed Byte内存泄露监控,一般不超过物理内存的75%Page Faults/sec页面错误,表明数据不能再内存中立即使用Page Read/sec越低越好,此值过大表明是磁盘读而不是缓冲读,一般小于5正常Pages/sec从磁盘读取或写入的页面数,正常值小于20.如果服务器没有足够的内存处理其工作负荷,这值一直很高,大于80就有问题l 磁盘监控指标指标分析%Free Space指没有占用的磁盘占整个逻辑磁盘的百分比,一般大于15正常%Idle Time指一段观察时间间隔内,磁盘空闲的时间,一般大于20正常%Disk Time指磁盘执行读和写服务所用时间,一般小于80正常Avg.Disk Sec/Read指每次从磁盘读取数据所花费的时间,一般小于25正常Current Disk Queue Length磁盘上当前请求的数量,一般小于2正常Avg.Disk Queue Length指读和写请求的平均数,一般在23之间正常Avg.Disk sec/Transfer计数器反映磁盘完成请求所用的时间。较高的值表明磁盘控制器由于失败而不断重试该磁盘。这些故障会增加平均磁盘传送时间。对于大多数磁盘,较高的磁盘平均传送时间是大于0.3 秒Avg.Disk Bytes/Transfer该值大于 20 KB,表示该磁盘驱动器通常运行良好;如果应用程序正在访问磁盘,则会产生较低的值。例如,随机访问磁盘的应用程序会增加平均 Disk sec/Transfer 时间,因为随机传送需要增加搜索时间l 系统监控指标指标分析Context Switches/sec指计算机上的所有处理器全都从一个线程转换到另一个线程的综合速率(上下文切换次数)l 进程 监控指标指标分析Working Set处理器线程最近使用的内存页,反映了每个进程使用的内存页的数量Private Byte指进程所分配的无法与其他进程共享的当前字节数量。该计数器主要用来判断进程在性能测试过程中有无内存泄露,该值持续增加则说明内存泄露l 网络监控指标指标分析Bytes Total/sec发送和接受字节的速度,和目前网络带宽相除应小于50%Request/sec每秒执行的请求数和当前执行的请求数,如果该值比较小,Web程序可能是瓶颈5.3.2、数据库监控指标l SQL Server监控指标指标分析Processor%Processor TimeCPU使用率Access MethodsFull Scans/sec全表扫描,一般小于2LatchesLatch Waits/sec每秒锁等待的数量LocksNumber of Deadlocks/sec死锁的请求数量,一般为0LocksLock Waits/sec当前进程完成之前强制其他进程等待的每秒锁定请求的数量Buffer ManagerBuffer Cache Hit Ratio缓存命中中总次数与缓存查找总次数之比,一般90%以上Cache ManagerCache Hit Ratio高速缓存命中率,一般小于85%,可能内存问题GeneralStatisticsLogins/sec每秒登录到SQL Server的计数GeneralStatisticsUser Connestions显示当前SQL的用户数SQL statisticsBatch Requests/sec每秒收到的Transact-SQL命令批数,该值高说明吞吐量很好(I/O、用户数、高速缓存大小、请求的复杂程度)l Oracle监控指标指标分析Buffer Nowait%缓存区获取Buffer未等待比率,一般接近100%,如果该值较低,则可能要增加Buffer CacheRedo Nowait%Redo缓存区获取Buffer未等待比率,一般接近100%,如果该值较低,则出现2种情况:1、online redo log没有足够的空间;2、log切换速度较慢Buffer Hit%缓存命中率,一般90%以上,否则需要调整。如果持续小于90%,可能要加大db_cache_size,也有可能是潜在的全表扫描导致命中率低IN-memory Sort%内存排序率,一般接近100%,如果该值较低,说明出现了大量排序时的磁盘I/O操作,则可能要加大sort_area_size参数的值Db file scattered read(cs)文件分散读取,该等待事件通常与全表扫描有关。如果这个等待事件比较显著,可能说明对于某些全表扫描的表,没有创建合适的索引。尽管在特定条件下执行全表扫描可能比索引扫描更有效,但如果出现这种等待时,最好检查一下这些全表扫描是否有必要Db file seqiemtial read(cs)文件顺序读取,该等待事件通常与单个数据块祥光的读取操作有关。如果这个等待事件比较显著,可能表示在多表连接中,表的顺序存在问题,或可能不合适地使用了索引。如果出现问题,首先检查索引扫描,以保证每个扫描都是必要的,并检查多表连接的顺序Monory Usage%共享池内存使用率,该指标是在采集点时刻,共享池内存被使用的比例。一般为75%-90%,如果值太低,就会造成内存浪费;如果值太高,会使共享池的组件老化。如果SQL语句被再次执行,则发生硬分析Logons current当前登录的总数Total file opens由实例执行的文件打开总数。每个进程需要许多文件(控制文件、日志文件、数据库文件)以便针对数据库进行工作Bytes received via SQL * Net from cline通过Net8从客户端接受的总字节数SQL *Net roundtrips to/from client发送到客户端和客户端接收的Net8小心的总数Bytes sent via SQL *Net to client从前台进程中发送到客户端的总字节数l Mysql(MONyog、LR sitescope)监控指标指标分析Threads_connected当前客户端已连接Mysql的用户数。Threads_running如果数据库超负荷了,将会得到一个正在增长的数值。一般该值超过限定值时,若在5s内有回落,说明没有问题Aborted_clients客户端被异常中断的数值。异常中断可能表面一些应用程序有问题Questions每秒获得的查询数量,也可以使全部查询的数量Opened_tables值表缓存没有命中的数量。如果该值大,需要增加Table_cache的数值Slow_queries没有使用索引查询数量。该值长表面系统有性能问题Threads_created该值较高可能需要增加Table_cache的数值。持续增加存在潜在问题Pending normal aio reads该值是innodb io请求查询的大小(size)。如果该值大到超过了1020,你可能有一些瓶颈reads/s, avg bytes/read, writes/s, fsyncs/s这些值是io统计。对于reads/writes大值意味着io子系统正在被装载。适当的值取决于你系统的配置Buffer pool hit rate这个命中率非常依赖于你的应用程序。当你觉得有问题时请检查你的命中率inserts/s, updates/s, deletes/s, reads/s有一些Innodb的底层操作。你可以用这些值检查你的负载情况查看是否是期待的数值范围Select_full_join没有主键(key)联合(Join)的执行。一般是零。捕捉开发错误的好办法Select_scan执行全表搜索查询的数量。如果持续增长说明需要优化,缺乏必要的索引或其他问题5.3.3、应用服务监控指标l IIS监控指标指标分析Not Found Error服务器无法回应的请求数Bytes Sent/Sec服务器送出数据字节的比率Bytes Received/Sec服务器接收数据字节的比率Maximum ConnectionsWeb服务同时建立的最大连接数Total Connections Attempts服务器利用Web服务尝试连接的总数GET Request/Sec使用GET方法请求的速率POST Request/Sec使用POST方法请求的速率Current File Cache Memory Usage当前用户模式文件缓存使用的字节数l Apache监控指标指标分析#Busy Servers处于繁忙状态下服务器的数量#Ldle Servers处于空闲状态下服务器的数量Apache CPU UsageApache服务所使用的CPU百分比Hit/secHttp的请求速率KBytes Sent/sec从 Web 服务器发送数据字节的速率l WebLogic监控指标指标分析JVMRuntimeHeapSizeCurrent返回当前JVM堆中内存数HeapFreeCurrent返回当前JVM堆中空闲内存数JMSRuntimeConnectionsCurrentCount返回JMS服务器上当前的连接数JMSServerCurrentCount返回当前JMS服务的连接数JMSSServerHighCount返回自服务器启动后JMS服务的最大连接数ConnectionsHighCount返回本JMS服务器自上次重置后的最大连接数ExecuteQueueRuntimeExecuteThreadCurrentldleCount返回队列中当前空闲线程数PendingRequestOldestTime返回队列中最长的等待时间PendingRequestCurrentCount返回队列中等待的请求数Queue Length队列长度JDBCConnectionsPoolRuntimeWaitingForConnectionHighCount返回JDBCConnectionsPoolRuntimeMBean最大等待连接数WaitingForConnectionCurrentCount返回当前等待连接的总数MaxCapacity返回JDBC池的最大能力WaitSecondHighCount返回等待连接中的最长时间等待者的秒数ActiveConnectionsCurrentCount返回当前活动连接总数ActiveConnectionsHighCount返回本JDBCConnectionsPoolRuntimeMBean上最大活动练级数六、结果分析6.1、应用服务器出现瓶颈的原因1) 应用服务器配置不当。比如缓存、超时时间、保持连接等各种属性的设置等。2) 系统资源。比如内存、CPU、磁盘性能不足。6.1.1、内存不足监控Available Mbytes、Page read/sec、Page Faults/sec以及%Disk Time1. MemoryPage Reads/Sec:持续大于5,可能存在内存不足2. MemoryPage/sec:大于80,内存可能存在问题3. PhysicalDisk%Disk Time:大于80,内存可能存在问题。当内存不足时,有点进程会转移到硬盘上去运行,造成性能急剧下降,而且一个缺少内存的系统常常表现出很高的CPU利用率,因为它需要不断的扫描内存,将内存中的页面移到硬盘上。6.1.2、内存泄露监控Available bytes、Private Bytes、Working Set以及%Disk Time1. 如果ProcessPrivate Bytes计数器和ProcessWorking Set计数器的值在长时间内持续升高,同时MemoryAvailable bytes计数器的值持续降低,则很可能存在内存泄漏。6.1.3、CPU瓶颈监控Processor Queue Length、%Processor Time以及Context Switches/sec1. 如果System/Processor Queue Length显示的队列长度持续=2,并且处理器的利用率Processor /%Processor Time大于80%(95%),可能处理器存在瓶颈(一定是CPU瓶颈)。如果此时Processor /%Processor Time一直很低,可能是由于处理器阻塞引起。6.1.4、磁盘问题监控Disk Reads/sec、Disk Writes/sec、Current Disk Queue Length、% Disk Time以及LogicalDisk % Free Space1. Disk Time和Avg.Disk Queue Length的值很高,而Page Reads/sec页面读取操作速率很低,可能存在磁盘瓶颈。2. Current Disk Queue Length 和 % Disk Time 的值始终较高,可能磁盘存在瓶颈。可以考虑升级磁盘驱动器或将某些文件移动到其他磁盘或服务器。6.2、程序代码出现瓶颈的原因1. 服务器资源的不合理使用。如内存的申请和释放等。2. 采用了不合理的数据结构或者陈旧的调用。3. 数据库查询语句编写上的不合理。4. 网页文件尺度过大。5. 代码逻辑的缺陷。6.2.1、程序问题监控throughout、%Processor Time以及context switches/sec1. 如果系统由于应用程序代码效率低下或者系统结构设计有缺陷而导致大量的上下文切换(context switches/sec显示的上下文切换次数太高),那么就会占用大量的系统资源,如果系统的吞吐量降低并且CPU的使用率很高,并且此现象发生时切换水平在15000以上,那么意味着上下文切换次数过高6.2.2、利用VS_Profiler分析程序n 安装配置VS_Profiler 1. 安装(略)2. 配置环境变量:PATH:/安装路径n VS_Profiler的操作步骤1. 打开DOC命令窗口,进入Profiler.exe程序安装的目录2. 启动Profiler环境:VSPerfCLREnv /sampleon3. 输入VSPerfCmd/start:sample/output:PeopleTraxReport.vsp/launch:PeopleTrax.exe通过VSPerfCmd开始分析PeopleTrax.exe程序,并探查器过程开始把收集的分析数据写入报告peopleTraxReport.vsp文件。注:如果要测试代码级的性能问题,需开发提供PDB类型文件,如果不能提供,只能定位到API接口,而不能精确到具体函数方法的代码级的情况4. 测试完毕后。关闭分析程序:VSPerfCmd/shutdown或VSPerfCLREnv/sampleoff或VSPerfCLREnv/globaloff5. 查看文件是否生成:dir 文件名6. 启动Visual Studio 2010,将生成文件PeopleTraxReport.vsp直接导入。原理:通过Visual Studio的IDE打开文件并分析. 打开PeopleTraxReport.sdp命令如下:VSPerfReport PeopleTraxReport.vsp /output: /summary:all七、资源调优方法7.1、CPU问题1. 考虑使用更高级的CPU代替目前的CPU2. 对于多个CPU,考虑CPU之间的负载分配3. 考虑在其他体系上设计系统,例如增加前置机、设置并行服务器等7.2、内存和高速缓存1. 内存的优化包括操作系统、数据库、应用程序的内存优化2. 过多的分页与交换可能降低系统的性能3. 内存分配也是影响系统性能的主要原因4. 保证保留列表具有较大的邻接内存块5. 调整数据块缓存区大小(用数据块的个数表示)是一个重要内容6. 将最频繁使用的数据保存在存储区中7.3、磁盘(I/O)资源问题1. 磁盘读写进度对数据库系统是至关重要的,数据库对象在物理设备上的合理分布能改善性能磁盘镜像会减慢磁盘写的速度2. 通过把日志和数据库对象分布在独立的设备上,可以提高系统的性能3. 把不同的数据库放在不同的硬盘上,可以提高读写速度。建议把数据库、回滚段、日志放在不同的设备上4. 把表放在一块硬盘上,把非簇的索引放在
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 幼儿园教师游戏指导策略对幼儿深度学习-基于2024年游戏视频指导行为编码分析
- 电力电子技术
- 福建省龙岩市2025-2026学年高二下学期4月期中联考英语试卷
- 会计档案管理实施细则(2026年)
- 2025年全国广播电视编辑记者资格考试(广播电视业务)全真模拟试题及答案
- 【广东】2025年高考广东卷化学高考真题文档版(含答案)-A4答案卷尾
- 停车场共享模式下的风险管理
- 2025-2030年在线社群运营与管理行业深度调研及发展战略咨询报告
- 手机外屏玻璃行业商业模式创新分析报告
- 2025-2030年美发沙龙预约企业制定与实施新质生产力战略分析研究报告
- 2025年贵州省贵阳市初二地理生物会考考试试题及答案
- 2026年宁波市九年级中考语文一模试卷附答案解析
- 第13课 每个人都有梦想 课件(内嵌视频)2025-2026学年道德与法治二年级下册统编版
- 【完整版】施工现场群体性事件应急预案
- 2026年中考历史考前冲刺:小论文 满分方法指导讲义
- 2026首创证券股份有限公司校园招聘备考题库附答案详解ab卷
- 2025广东省低空经济产业发展有限公司招聘13人笔试历年典型考点题库附带答案详解
- 2025年公共卫生监测与防控指南
- 钢铁企业节能降耗培训
- 2025四川成都经济技术开发区(龙泉驿区)“蓉漂人才荟”考核招聘事业单位人员(第二批)10人考试笔试备考题库及答案解析
- 雨课堂在线学堂《生活中的生物学》单元考核测试答案
评论
0/150
提交评论