loadrunner自学以及问题解答2

QQ截图20171031083313.png

视频汇总地址:https://edu.51cto.com/lecturer/4626073.htmlhtml

    46.LR启动controller报错“transaction monitor not available”web

1.可能是OS系统问题,修复试试或升级面试

 

2.或修复LR试试算法

 

    47.Loadrunnber 报错误:Error -- memory violation : Exception ACCESS_VIOLATION received.的一种状况数据库

Posted on 2011-01-05 12:12蝈蝈俊 阅读(433) 评论(0) 编辑收藏 windows

 

最近写的一个Loadrunner脚本,最后一步是点击“退出”按钮退出登陆状态,以下:api

 

web_text_link("[退出]",数组

 

    "Snapshot=t18.inf",浏览器

 

    DESCRIPTION,缓存

 

    "Text=[退出]",

 

    ACTION,

 

    "UserAction=Click",

 

    LAST);

 

return 0;

 

可是会报错误:

 

Action1.c(94): Error: C interpreter run time error: Action1.c (94): Error -- memory violation : Exception ACCESS_VIOLATION received.

 

Action1.c(94): Notify: CCI trace: Action1.c(94): web_text_link(0x02080870, 0x0208085f "Snapshot=t18.inf", 0x02080a42 "DESCRIPTION", 0x02080853, 0x02080a3b "ACTION", 0x020809de "UserAction=Click", 0x02080a6a "LAST")

 

Action1.c(94): Notify: CCI trace: Compiled_code(0): Action1()

 

通过试验,发现是由于 退出后有个自动跳转。

 

若是退出结束代码修改成下面就没有问题了。

 

    web_text_link("[退出]",

 

       "Snapshot=t18.inf",

 

       DESCRIPTION,

 

       "Text=[退出]",

 

       ACTION,

 

       "UserAction=Click",

 

       LAST);

 

    web_browser("Sync",

 

       "Snapshot=t18.inf",

 

       DESCRIPTION,

 

       ACTION,

 

        "Sync",

 

       LAST);

 

     return 0;

 

结论:

 

web_text_link若是有中间跳转,不能放在代码的最后,最后要有一个 Sync 。

 

    48.Step download timeout(sec)设置

     这个默认是120秒,可是常常咱们要设置的更大一些,具体设置方法:Vugen--》Vuser---》Runtime-settings----》Preferences------》option,将Step download timeout(sec)默认值120s改成本身须要的值,其次要改变HTTP-reguest connnect timeout(sec)和HTTP-reguest receive timeout(sec)也为相应的值。

 

    49.修改本机tcp链接数

        由于我的pc机的默认的tcp链接数只有15个(xp),因此咱们在模拟虚拟多个用户时,就会遇到tcp的链接限制,从而报错。修改的方法:windows下运行 Patch.exe

输入C,再输入你要的TCP/IP链接数字(通常为500~2000)回车确认

输入Y 回车确认。

倒计时15秒后结束。

接着再运行下Patch.exe,看链接数是否是由原来的10变成本身改了的数值。

Patch.exe 下载地址:http://www.touchboy.cn/2007/05/% ... %E6%8E%A5%E6%95%B0/

 

    50.关于Error -27791: Error -27790:Error -27740:错误的解决方法:

        错误以下:

Action.c(198): Error -27791: Server "www.zcpx.cn" has shut down the connection prematurely

Action.c(198): Error -27790: Failed to read data from server "www.zcpx.cn": [10053] Software caused connection

abort

Action.c(198): Error -27740: Overlapped transmission of request to "www.zcpx.cn" for URL

 

"http://www.zcpx.cn/userEntry.do" failed: WSA_IO_PENDING

 

解决办法:

在脚本的最前面加上web_set_sockets_option("OVERLAPPED","0");

 

    51. LR中错误代号为27796的一个解决方法

        错误以下:

 

52.

 

1A:注册表不能访问或写致使的,能够恢复注册表或卸载(清除注册表,可使用工具)从新安装程序。

要启支LR自带的实例的服务时,出错了,提示:端口已经被另外一个服务占用,请问一下能不能本身修改这个程序原来设定的端口啊?

2A:中止服务以后,在程序的安装目录\WebTours下找到xitami.cfg文件修改portbase值,注意 默认的端口号是portbase+80,portbase值是1000;要把端口号改为8088,就把portbase改成8008,保存以后就是了(8088=8008+80)。而后重启服务 

 

二:LoadRunner面试(笔试)问题整理

1.      什么是负载测试?什么是性能测试?                                                                       

 

     负载测试是经过逐步增长系统负载,测试系统性能的变化,并最终肯定在知足性能指标的状况下,系统所能承受的最大负载量的测试,例如,访问一个页面的响应时间规定不超过1秒,负载测试就是测试在响应时间为1秒时,系统所能承受的最大并发访问用户的数量。

 

压力测试一般是在高负载状况下来对系统的稳定性进行测试,更有效地发现系统稳定性的隐患和系统在负载峰值的条件下功能隐患等。

 

性能测试:指在必定的约束条件下(指定的软件、硬件、网络环境等),肯定系统所能承受的最大负载压力。

 

2.        性能测试包含了哪些测试(至少举出3种)

 

 性能测试包含负载测试、压力测试、大数据量测试、疲劳强度测试等。

 

3.   简述性能测试的步骤

 

 第一,分析产品结构,明确性能测试的需求,包括并发、极限、配置和指标等方面的性能要求,必要时基于LOAD测试的相同测略需同时考虑稳定性测试的需求。

  第二,分析应用场景和用户数据,细分用户行为和相关的数据流,肯定测试点或测试接口,列示系统接口的可能瓶颈,通常是先主干接口再支线接口,并完成初步的测试用例设计。

  第三,依据性能测试需求和肯定的测试点进行测试组网设计,并明确不一样组网方案的重要程度或优先级做为取舍评估的依据,必要时在前期产品设计中提出支持性能测试的可测试性设计方案和对测试工具的需求。

  第四,完成性能测试用例设计、分类选择和依据用户行为分析设计测试规程,并准备好测试用例将用到的测试数据。

    第五,肯定采用的测试工具。

      第六,进行初验测试,以主干接口的可用性为主,根据测试结果分析性能瓶颈,经过迭代保证基本的指标等测试的环境。

      第七,迭代进行全面的性能测试,完成计划中的性能测试用例的执行。

      第八,完成性能测试评估报告。

  在进行性能测试的时候,咱们须要知道一些有效的性能指标,下面咱们来列出一些主要的性能指标:

  一是,通用指标(指Web应用服务器、数据库服务器必需测试项):

      *ProcessorTime:指服务器CPU占用率,通常平均达到70%时,服务就接近饱和;

      *Memory Available Mbyte:可用内存数,若是测试时发现内存有变化状况也要注意,若是是内存泄露则比较严重;

      *Physicsdisk Time :物理磁盘读写时间状况。

      二是,Web服务器指标:

      *Avg Rps:平均每秒钟响应次数=总请求时间/秒数;

      *Avg time to last byte per terstion(mstes):平均每秒业务角本的迭代次数;*Successful Rounds:成功的请求;

      *Failed Rounds:失败的请求;

      *Successful Hits:成功的点击次数;

      *Failed Hits:失败的点击次数;

      *Hits Per Second:每秒点击次数;

      *Successful Hits Per Second:每秒成功的点击次数;

      *Failed Hits Per Second:每秒失败的点击次数;

      *Attempted Connections:尝试连接数。

      三是,数据库服务器指标:

      *User 0 Connections :用户链接数,也就是数据库的链接数量;

      *Number of deadlocks:数据库死锁;

      *Butter Cache hit:数据库Cache的命中状况。

4.         简述使用Loadrunner的步骤

 

  A4:制定性能测试计划—>开发测试脚本—>设计测试场景—>执行测试场景—>监控测试场景—>分析测试结果

 

5.         何时能够开始执行性能测试?

 

  功能测试经过;通常须要进行性能测试的系统,都是用户量比较大、业务使用比较频繁、比较重要的功能模块。

 

6.         LoadRunner由哪些部件组成?

 

  A6:主要有三部分组成:

 

7.         你使用LoadRunner的哪一个部件来录制脚本?

 

     使用Virtual User Generator录制测试脚本

 

8.         LoadRunner的哪一个部件能够模拟多用户并发下回放脚本?

 

  LoadRunner的Controller组件。

 

9.         什么是集合点?设置集合点有什么意义?Loadrunner中设置集合点的函数是哪一个?

 

     在性能测试过程当中,须要模拟大量用户在同一时刻,访问系统并同时操做某一任务,能够经过配置集合点来实现,多个用户同时进行某操做;

 

    集合点能够在服务器上建立密集的用户负载,使LoadRunner可以测试服务器在负载状态下的性能。

 

     设置集合点函数:lr_rendezvous("Meeting");  // Meeting是集合点名称

 

10.     什么是场景?场景的重要性有哪些?如何设置场景?

 

   场景用于模拟用户实际业务操做;

 

     LoadRunner中场景有手工场景和面向目标的场景。

 

设置场景:选择场景类型、设置运行时设置、模拟用户数、加减压方式、持续时间,配置负载生成

 

1.选择场景中须要的脚本

     2.选择为目标场景,仍是指定的手工场景

     3.设置用户数、设置产生负载的设备

     4.设置执行策略

 

11.     请解释一下如何录制web脚本?

 

LR经过转发请求,来捕获数据包,来造成脚本

 

解释:1.基于浏览器的应用程序推荐使用HTML-based Script, 脚本中采用

HTML页面的形式来表示,这种方式的Script脚本容易维护,容易理解,使用该选项中的advance中的第一个选项,若是单纯的HTML方式,是不容许使用关联的。

2.不是基于浏览器的应用程序推荐使用URL-based Script,脚本中的表示采用基于URL 的方式,不是很好阅读。

解释:1.是否记录录制过程当中的ThinkTime,若是记录,还能够设置最大值,通常我不记录这个值。

2.通知Vugen去从新设置每一个action之间的Http context,缺省是须要的。

3.完整记录录制过程的log,

4.保存一个本地的snapshot,能够加速显示

5.把html的title放到web_reg_find函数里面

6.支持的字符集标准

7.Http header的录制,咱们采用缺省便可,不须要用web_add_header去录制非标准的header信息。

对录制的content的内容进行filter,不做为resource处理的。

 

解释:这个就是我前面提到的关联,系统已经预先设置好了一些常见的关联rules,咱们录制脚本以前,能够把系统的

 

12.    为何要建立参数?如何建立参数?

  参数:在环境变化时必须时脚本具备环境变化的能力,就须要参数化(客户端发送到服务器端)

  1.肯定要参数话的数据

  2.设定规则形式来取值

 

13.    什么是关联?请解释一下自动关联和手动关联的不一样。

 

关联:不少构架用sessionid等方法标识不一样任务和数据,应用在每次运行时方式发送数据不彻底相同,须要利用的机制对录制的脚本进行处理,这种机制叫作关联(服务端发送到客户端)

 

14.    场景设置有哪几种方法?

 

目标场景,手工场景

 

15.    你如何找出哪里须要关联?请给一些你所在项目的实例。

用户登录,

客户端发送请求后,服务端验证正确性后,发送给客户端sessionid,是某种规则产生。

 

16.    你在哪里设置自动关联选项?

两地方能够设置

1.设置容许录制时进行自动关联,能够自定义规则

 

2.录制完成后,vuser-scan action for correlations

 

17.    哪一个函数是用来截取虚拟用户脚本中的动态值?(手工关联)

 

web_reg_save_param()函数主要根据须要作关联的动态数据前面和后面的固定字符串来识别、提取动态数据,因此在作关联时,须要找出动态数据的左、右边界字符串。

 

18.    你在VUGen中什么时候选择关闭日志?什么时候选择标准和扩展日志?

Run-time,log,

当调试脚本时,能够只输出错误日志,当在场景找你管加载脚本时,日志自动变为不可用。

Standard Log Option:选择标准日志时,就会在脚本执行过程当中,生成函数的标准日志而且输出信息,供调试用。大型负载测试场景不用启用这个选项。

扩展日志包括警告和其余信息。大型负载测试不要启用该选项。用扩展日志选项,能够指定哪些附加信息须要加到扩展日志中

 

19.    你如何调试LoadRunner脚本?

VuGen有两个选项帮助调试Vuser脚本。Run Step by Step命令和断点(breakpoints)。Option对话框中的调试设置(Debug setting)项,能够肯定在场景执行过程当中执行轨迹范围。调试信息写在output窗口。能够用 

lr_set_debug_messag函数在脚本中手工设置信息类型。若是咱们只想接收到一小段脚本的调式信息。

 

20.    你在LR中如何编写自定义函数?请给出一些你在之前进行的项目中编写的函数。

在建立用户自定义函数前咱们须要和建立DLL(external libary)。把库放在VuGen bin目录下。一旦加了库,把自定义函数分配作一个参数。该函数应该具备一下格式:__declspec (dllexport) char* (char*, char*)。

Milan

 

21.    什么是逐步递增?你如何来设置?

Ramp up这个选项用于逐渐增长服务器的虚拟用户数或负载量。设置一个初始值并且能够在两个迭代之间设置一个值等待。设置Ramp up,请到‘Scenario Scheduling Options’。

 

22.    以线程方式运行的虚拟用户有哪些优势?

VuGen提供了用多线程的便利。这使得在每一个生成器上能够跑更多的虚拟用户。若是是以进程的方式跑虚拟用户,为每一个用户加载相同的驱动程序到内存中,所以占用了大量的内存。这就限制了在单个生成器上能跑的虚拟用户数。若是按线程运行,给定的全部虚拟用户数(好比100)只是加载一个驱动程序实例到内存里。每一个线程共用父驱动程序的内存,所以在每一个生成器上能够跑更多的虚拟用户。

 

23.    当你须要在出错时中止执行脚本,你怎么作?

lr_abort函数放弃虚拟用户脚本的执行。说明虚拟用户中止Action的执行,直接执行vuser_end而后结束执行。在出现错误状况下想手工放弃脚本的执行,这个函数是有用的。用这个函数中止脚本时,Vuser被指定为“Stopped”状态。为了这个函数起做用,开始时候就不能选择Run-Time Settings中的Continue on error选项。

 

24.    响应时间和吞吐量之间的关系是什么?

吞吐量图显示的是虚拟用户每秒钟从服务器接收到的字节数。当和响应时间比较时,能够发现随着吞吐量的下降,响应时间也下降,一样的,吞吐量的峰值和最大响应时间差很少在同时出现。

 

25.    说明一下如何在LR中配置系统计数器?

经过Web资源监视器,利用这些监控器能够分析web服务器的吞吐量、点击率、每秒http响应数以及每秒下载的页面数。

 

26.    什么是think time?think_time有什么用?

思考时间是真实用户在action之间等待的时间。例如:当一个用户从服务器接收到数据时,用户可能须要在响应以前等待几分钟回顾数据,这种推迟被称为思考时间。

 

27.    标准日志和扩展日志的区别是什么?

Standard Log Option:选择标准日志时,就会在脚本执行过程当中,生成函数的标准日志而且输出信息,供调试用。大型负载测试场景不用启用这个选项。

扩展日志包括警告和其余信息。大型负载测试不要启用该选项。用扩展日志选项,能够指定哪些附加信息须要加到扩展日志中

 

28.    解释如下函数及他们的不一样之处。

Lr_debug_message

lr_debug_message 函数在指定的消息级别

// 处于活动状态时发送一条调试消息。若是指定的

// 消息级别未处于活动状态,则不发出消息。

Lr_output_message

要发送不是特定错误消息的特殊通知,

Lr_error_message

函数将错误消息发送到

// 输出窗口和 Vuser日志文件

Lrd_stmt lrd_exec 函数执行 lrd_stmt设置的 SQL 语句。

Lrd_fetch  函数从结果集中提取后续若干行

result set. 

函数准备用于

// 经过光标输出字符串(一般为 SQL语句)

// 的下一结果集。对于 CtLib,它发出 ct_result

// 命令,而且在 ODBC中它运行用于当前数据库

 

29.    什么是吞吐量?

单位时间内系统处理客户端的请求数。

 

30.    action和init、end除了迭代的区别还有其余吗?

 

在init、end中不能使用集合点、事务等, init、end只执行一次。

 

31.    在什么地方设置HTTP页面filter?

 

       在runtime_settings中download filter里面进行设置。

 

32.    pot mapping的原理是什么?

 

       就是代理服务器

 

33.    HTTP的超时有哪三种?

 

HTTP-request connect timeout、HTTP-request receive timeout、step download timeout

 

34.    什么是contentcheck?如何来用?

 

ContentCheck的设置是为了让VuGen检测何种页面为错误页面。若是被测的Web 应用没有使用自定义的错误页面,那么这里不用做更改;若是被测的Web应用使用了自定义的错误页面,那么这里须要定义,以便让VuGen 在运行过程当中检测,服务器返回的页面是否包含预约义的字符串,进而判断该页面是否为错误页

 

面。若是是,VuGen就中止运行,指示运行失败。

 

使用方法:点击在runtime settings中点击“contentcheck”,而后新创建一个符合要求的应用程序和规则,设定须要查找的文本和前缀后缀便可使用。

 

35.    network中的speed simulation是模拟的什么带宽?

 

模拟用户访问速度的带宽。

 

36.    生成WEB性能图有什么意义?大概描述便可。

 

能够很直观的看到,在负载下系统的运行状况以及各类资源的使用状况,能够对系统的性能瓶颈定位、性能调优等起到想要的辅助做用。

 

37.    若是刷新controller里的脚本?

 

在controller中,点击detailis-Refresh-script便可。

 

38.    进程和线程有什么区别?

 

线程有本身的全局数据。线程存在于进程中,所以一个进程的全局变量由全部的线程共享。因为线程共享一样的系统区域,操做系统分配给一个进程的资源对该进程的全部线程都是可用的,正如全局数据可供全部线程使用同样。在Controller中将使用驱动程序(如mdrv.exe、r3vuser.exe)运行vuser。若是按进程运行每一个vuser,则对于每一个vuser实例,都将反复启动同一驱动程序并将其加载到内存中。将同一驱动程序加载到内存中会占用大量的RAM(随机存储器)及其余系统资源。这就限制了能够在任一负载生成器上运行的vuser数量。若是按线程运行每一个vuser,Controller为每50个vuser(默认状况下)仅启动驱动程序(如mdrv.exe)的一个实例。该驱动程序将启动几个vuser,每一个vuser都按线程运行。这些线程vuser将共享父驱动进程的内存段。这就消除了屡次从新加载驱动程序/进程的须要,节省了大量内存空间,从而能够在一个负载生成器上运行更多的Vuser.

 

39.    如何把脚本和结果放到load generator的机器上?

 

    在controller中,点击Results-Results settings,在里面进行相应的设置便可。

 

40.    如何设置才能让集合点只对一半的用户生效?

 

   对集合点策略进行相应的设置便可。即在controller中,点击Scenario-Rendezvous-policy进行相应的设置便可,因为题目中“一半的用户”没有说明白具体指什么样的用户,如今很差肯定具体对里面的哪一个选项进行设置。

 

41.    LRd的API分为几类

 

A:通用的API:,就是跟具体的协议无关,在任何协议的脚本里都能用的;

 

B:针对协议的:像lrs前缀是winsock的;lrd的是针对database;

 

C:自定义的:这个范围就比较广了;好比至少有Java Vuser API、lrapi、XML API。还能够添加WindowsAPI和自定义函数库。

 

42.    LR几种日志函数的区别?

 

【lr_message】 int lr_message (const char *format, exp1, exp2,…expn.);中文解释:lr_message函数将信息发送到日志文件和输入窗口。在VuGen中运行时,输入文件为output.txt。

 

【lr_log_message】 int lr_log_message (const char *format, exp1, exp2,…expn.);中文解释:lr_log_message函数将消息发送到Vuser或代理日志文件(取决于应用程序),而不是发送到输出窗口。经过向日志文件发送错误消息或其余信息性消息,能够将该函数用于调试。                   【lr_error_message】 int lr_error_message (const char *format, exp1, exp2,…expn. );中文解释:lr_error_message函数将错误消息发送到输出窗口和Vuser日志文件。要发送不是特定错误消息的特殊通知,请使用lr_output_message。

 

【lr_output_message】 int lr_output_message (const char *format, exp1, exp2,…expn.);中文解释:lr_output_message函数将带有脚本部分的行号的消息发送到输出窗口和日志文件。

 

【lr_debug_message函数组】 int lr_debug_message (unsigned int message_level, const char *format, … );中文解释:lr_debug_message函数在指定的消息级别处于活动状态时发送一条调试信息。若是指定的消息级别未出于活动状态,则不发送消息。您能够从用户界面或者使用lr_set_debug_message,将处于活动状态的消息级别设置为MSG_CLASS_BRIEF_LOG或MSG_CLASSS_EXTENDED_LOG。要肯定当前级别,

 

请使用lr_get_debug_message。 unsigned int lr_get_debug_message ( );中文解释:lr_get_debug_message函数返回当前的日志运行时设置。该设置肯定发送到输出端的信息。日志设置是使用运行时设置对话框或经过使用lr_set_debug_message函数指定的。 int lr_set_debug_message (unsigned int message_level, unsigned int on_off); 中文解释:lr_set_debug_message函数设置脚本执行的调试消息级别message_lvl。经过设置消息级别,能够肯定发送哪些信息。启动设置的方法是将LR_SWITCH_ON做为on_off传递,禁用设置的方法是传递LR_SWITCH_OFF。

 

【lrd_stmt】:将SQL语句与光标关联

 

【lrd_fetch】:提取结果集中得下一条记录

 

43.    性能瓶颈分析方法?

 

 同一场景

1.小用户量的状况下测试

2.大用户量状况下的测试

分析的方法:

整个系统架构分析,系统响应时间消耗,利用图表分析

查看事务响应时间,经过事务摘要图分析事务响应时间,那个消耗最大(经过小用户量和大用户量的响应时间分析,查看那个事务响应时间最高),肯定哪部分功能是性能的瓶颈,分析window resource图表,查看cpu

使用下列计数器标识cpu瓶颈

Processor\ Interrupts/sec

Processor\ % Processor Time

Process(process)\ % Processor Time

System\ Processor Queue Length

经过它来肯定是否硬件自己出现瓶颈,或者进一步肯定应该怎么去判断性能产生瓶颈的地方!

下一步去判断进程,那个进程消耗cpu最高

下边就有不少种状况须要你本身去判断,有多是进程调用了的函数消耗了系统资源造成上边的问题,也有多是后台数据库出现的问题(这个就要看你的系统配置是什么样的,好比你的db服务器和应用服务器都配置在一台机器上)

性能产生瓶颈有不少地方,因此须要进一判断,是不是后台数据库的问题还有待分析,是那条语句致使的问题须要进一步分析判断。

分析原则:

 具体问题具体分析(这是因为不一样的应用系统,不一样的测试目的,不一样的性能关注点)

 查找瓶颈时按如下顺序,由易到难。

服务器硬件瓶颈-〉网络瓶颈(对局域网,能够不考虑)-〉服务器操做系统瓶颈(参数配置)-〉中间件瓶颈(参数配置,数据库,web服务器等)-〉应用瓶颈(SQL语句、数据库设计、业务逻辑、算法等)

注:以上过程并非每一个分析中都须要的,要根据测试目的和要求来肯定分析的深度。对一些要求低的,咱们分析到应用系统在未来大的负载压力(并发用户数、数据量)下,系统的硬件瓶颈在哪儿就够了。

 分段排除法颇有效

分析的信息来源:

1 根据场景运行过程当中的错误提示信息

2 根据测试结果收集到的监控指标数据

一.错误提示分析

分析实例:

1 Error: Failed to connect to server “10.10.10.30:8080″: [10060] Connection

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、数据库的链接

(一、在应用服务的性能参数可能过小了 二、数据库启动的最大链接数(跟硬件的内存有关))

2  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以免磁盘排序。

QQ截图20171031083313.png

相关文章
相关标签/搜索