发布新日志

  • Monitor disk activity using sar

    2012-03-27 13:48:56

    We can use sar to monitor disk IO activity on Linux. Sample output:

    sar -b

    05:53:03 PM       LINUX RESTART

    06:00:01 PM       tps      rtps      wtps   bread/s   bwrtn/s
    06:10:01 PM   1421.49    180.84   1240.66  10910.58  28497.24
    06:20:01 PM      4.82      0.35      4.47      8.94     52.26
    06:30:01 PM      3.75      0.02      3.74      0.12     42.17
    06:40:01 PM      5.70      0.07      5.63      0.56     59.60
    06:50:01 PM      3.57      0.01      3.57      0.04     39.61
    07:00:01 PM      5.19      0.16      5.03      2.48     65.62
    07:10:01 PM     68.31     51.25     17.06    532.22    266.63
    07:20:01 PM     64.88     40.02     24.86    353.28    453.28
    07:30:02 PM      3.76      0.01      3.75      0.04     41.58
    07:40:01 PM      6.85      0.06      6.79      0.48     68.28
    07:50:01 PM      3.58      0.01      3.58      0.04     39.77
    08:00:01 PM      5.00      0.00      5.00      0.00     65.03
    08:10:01 PM      6.72      0.29      6.43      3.57     68.12
    08:20:01 PM     52.87     18.09     34.78   1099.17    722.94
    08:30:03 PM   1872.56   1216.01    656.55  32150.18  49787.32
    08:40:03 PM   2868.76   1536.31   1332.45  36736.45  63411.69
    08:50:03 PM   2919.72   1739.57   1180.15  42117.65  57012.38
    09:00:01 PM   1877.46   1153.17    724.29  25919.17  37001.17
    09:10:01 PM     81.93     43.21     38.72    654.82    755.66
    09:20:01 PM     31.93     23.09      8.84    406.96    111.95
    09:30:01 PM     17.74      9.67      8.07    166.11    100.96
    09:40:01 PM     98.92     90.17      8.76   1587.67     97.32
    09:50:01 PM      9.19      2.82      6.37     49.47     77.05
    Average:       467.30    247.95    219.35   6213.88   9749.75

  • GCViewer

    2011-08-25 10:31:22

    启动GCViewer:

    java -jar gcviewer-1.29.jar

    产生GC Log:

    在JVM启动命令中附加选项 -Xloggc:C:\GCLogs\csGC.txt,如下

    set USER_MEM_ARGS=-Xms256m -Xmx256m -XX:PermSize=64m -XX:MaxPermSize=256m -Xss256k -XX:+DisableExplicitGC -Xrs -Xloggc:C:\GCLogs\csGC.txt

  • 【转载】LoadRunner在使用时遇到的问题及解决方法

    2011-03-31 15:12:38

    1.LoadRunner录制脚本时为什么不弹出IE浏览器?
      当一台主机上安装多个浏览器时,LoadRunner录制脚本经常遇到不能打开浏览器的情况,可以用下面的方法来解决

      启动浏览器,打开Internet选项对话框,切换到高级标签,去掉“启用第三方浏览器扩展(需要重启动)”的勾选,然后再次运行VuGen即可解决问题

      提示:通常安装Firefox等浏览器后,都会勾选上面得选项,导致不能正常录制。因此建议运行LoadRunner得主机上保持一个干净的测试环境。

    2.录制Web脚本时,生成的脚本中存在乱码该如何解决?

      录制脚本前,打开录制选项配置对话框Record-Options,进入到Advanced标签,先勾选“Support charset”,然后选择中支持UTF-8。再次录制,就不会出现中文乱码问题了。

    3.HTML-based script与URL-based script的脚本有什么区别?

      使用“HTML-based script”的模式录制脚本,VuGen为用户的每个HTML操作生成单独的步骤,这种脚本看上去比较直观;使用“URL-based script”模式录制脚本时,VuGen可以捕获所有作为用户操作结果而发送到服务器的HTTP请求,然后为用户的每个请求分别生成对应方法。

      通常,基于浏览器的Web应用会使用“HTML-based script”模式来录制脚本;而没有基于浏览器的Web应用、Web应用中包含了与服务器进行交互的JavaApplet、基于浏览器的应用中包含了向服务器进行通信的JavaScript/VBScript代码、基于浏览器的应用中使用了HTTPS安全协议,这时使用“URL-based script”模式进行录制。

    4.为什么脚本中添加了检查方法Web-find,但是脚本回放时却没有执行?

      由于检查点功能会耗费一定的资源,因此LoadRunner默认关闭了对文本及图像的检查。要想开启检查功能,必须修改运行时的配置Run-time Setting。

      进入“Run-time Setting”对话框,依次进入“Internet Protocol→Preferences”,勾选Checks下的“Enable Image and text check”选项即可。

      检查执行结果时推荐使用web_reg_find方法。

    5.运行时的Pacing设置主要影响什么?

      Pacing主要用来设置重复迭代脚本的间隔时间。共有三种方法:上次迭代结束后立刻开始、上次迭代结束后等待固定时间、按固定或随机的时间间隔开始执行新的迭代。

      根据实际需要设置迭代即可。通常,没有时间间隔会产生更大的压力。

    6.运行时设置Log标签中,如果没有勾选“Enable logging”,则手工消息可以发送吗?

      Enable logging选项仅影响自动日志记录和通过lr_log_message发送的消息。即使没有勾选,虚拟用户脚本中如果使用lr_message、lr_output_message、lr_error_message,仍然会记录其发出的消息。

    7.LoadRunner 8.0版本的VuGen在录制Web Services协议的脚本时一切正常,而回放时报出错误提示“Error:server returned an incorrectly formatted SOAP response”。这时说明原因引起的?

      造成这种情况的主要原因是LoadRunner 8.0的VuGen在录制Web Service协议的脚本时存在一个缺陷:如果服务器的操作系统是中文的,VuGen会自动将WSDL文件的头改为,因此会有上面的错误提示。

      解决方法:把“LR80WebservicesFPI_setup.exe”和“lrunner_web_sevices_path_1.exe”两个补丁打上即可解决。
    8.VuGen支持Netscape的客户证书吗?

      不支持。目前的VuGen 8.0版本中仅支持Internet Explorer的客户端证书。录制脚本时可以先从Netscape中导出所需的证书,然后将其导入到Internet Explorer中,并确保以相同的顺序导出和导入这些证书。而且,在每台将要录制或运行需要证书的Web Vuser脚本的计算机上都要重复执行前面的过程。

    9.VuGen会修改录制浏览器中的代理服务器设置吗?

      会修改。在开始录制基于浏览器的Web Vuser脚本时,VuGen首先会启动指定的浏览器。然后,VuGen会指示浏览器访问VuGen代理服务器。为此,VuGen会修改录制浏览器上的代理服务器设置。默认情况下,VuGen会立即将代理服务器设置更改为Localhost:7777。录制之后,VuGen会将原始代理服务器设置还原到该录制浏览器中。因此,在VuGen进行录制的过程中,不可以更改代理服务器设置,否则将无法正常进行。
     
    10.在LoadRunner脚本如何输出当前系统时间?

      LoadRunner提供了char *ctime(const time_t *time)函数,调用参数为一个Long型的整数指针,用于存放返回时间的数值表示。

      调用语句与返回值如下示例:  
    typedef long time_t;
     
      Action()
     
      {
     
      time_t t;
     
      lr_message(“Time in seconds since1/1/70: %ld\n”,time(&t));
     
      lr_message(“System time and date: %s”,ctime(&t));
     
      }
    复制代码
      输出结果为:

      Time in seconds since1/1/70: 1185329968

      System time and date:Wed Jul 25 10:19:28 2007

    11.一些Web虚拟用户脚本录制后立刻回放没有任何问题,但是当设置迭代次数大于1时,如果进行回放则只能成功迭代一次。为什么从第二次迭代开始发生错误?

      这种现象多是由于在“Run-time Setting”的“Browse Emulation”的设置中,勾选了“Simulate a new user on each iteration”及其下面的选项“Clear cache on each iteration”这两个选项的含义是每次迭代时模拟一个新的用户及每次迭代时清除缓存。

      由于脚本迭代时,init和end只能执行一次,如果每次迭代都模拟一个新的用户并清除缓存,
    则用户登录信息将一并清除,因此迭代时可能会发生错误。

    12.虚拟客户脚本“Run-time Setting”中的线程和进程运行方式的区别?

      如果选择“Run Vuser as a process”,则场景运行时会为每一个虚拟用户创建一个进程;选择“Run Vuser as a thread”则将每个虚拟用户作为一个线程来运行,在任务管理器中只看到一个mmdrv.exe,这种方式的运行效率更高,能造成更大的压力,时默认选项。

      另外,如果启用了IP欺骗功能,则先在Controller中选中Tools菜单下的“Expert Mode”,然后将Tools菜单下的“Options>General”标签页中的IP地址分配方式也设置为与Vuser运行方式一致,同为线程或进程方式。

    13.在Controller中运行Web相关测试场景时,经常会有很多超时错误提示,如何处理这类问题?

      这主要有脚本的默认超时设置引起。当回放Web脚本时,有时候由于服务器响应时间较长,会产生超时的错误。这时需要修改脚本的运行时配置。

      进入“Run-time Setting”对话框后,依次进入“Internet Protocol→Preference”。然后点击“Options…”按钮,进入高级设置对话框,可以修改各类超时设置的默认值。

    14.为什么Windows系统中的CPU、内存等资源仍然充足,但是模拟的用户数量却上不去?

      在Windows计算机的标准设置下,操作系统的默认限制只能使用几百个Vuser,这个限制与CPU或内存无关,主要是操作系统本身规定了默认的最大线程数所导致。要想突破Windows这个限制,须修改Windows注册表。以Windows XP Professional为例。

      (1)打开注册表后,进入注册表项HKEY_LOCAL_MACHINE中的下列关键字:System\CurrentControlSet\Control\Session Manager\SubSystems。

      (2)找到Windows关键字,Windows关键字如下所示:

      %SystemRoot%\system32\csrss.exe bjectDirectory=\Windows

      SharedSection=1024,3072,512 Windows=On SubSystemType=Windows ServerDll=basesrv,1

      ServerDll=winsrv:UserServerDllInitialization,3 ServerDll=winsrv:ConServerDllInitialization,2

      ProfileControl=Off MaxRequestThreads=16

      SharedSection=1024,3072,512关键字的格式为xxxx,yyyy,zzz。其中,xxxx定义了系统范围堆的最大值(以KB为单位),yyyy定义每个桌面堆得大小。

      (3)将yyyy的设置从3072更改为8192(即8MB),增加SharedSection参数值。

      通过对注册表的更改,系统将允许运行更多的线程,
    因而可以在计算机上运行更多的Vuser。这意味着能够模拟的最大并发用户数量将不受Windows操作系统的限制,而只受硬件和内部可伸缩性限制的约束。

  • web_reg_save_param的边界是html关键词时应注意转换

    2010-09-02 11:34:18

    使用web_reg_save_param做关联时,如果LB, RB是html的关键词,应注意转换。如:

    Server Response为

    _41"><nobr>00000000129C5BA17900DFF2C3BE2F7686AD411887CE5F8200<

    应将_41"&gt;&lt;nobr&gt; 转换为_41"><nobr>。

    加上escape,正确的写法为:

    web_reg_save_param("EntryID", "LB=_41\"\>\<nobr\>", "RB=\<", "Ord=All", "NOTFOUND=WARNING", LAST);

  • 在LoadRunner中从数组类型的参数随机取值的方法

    2010-09-02 11:25:10

    使用web_reg_save_param做关联后,有时候会有多个匹配值。为了模仿用户行为随机取一个值为后续transcation所用,可以使用lr_paramarr_random函数。例如:

    web_reg_save_param("EntryID", "LB=_41\"\>\<nobr\>", "RB=\<", "Ord=All", "NOTFOUND=WARNING", LAST);

    ...

    lr_save_string(lr_paramarr_random("EntryID"), "EntryID_Preview");

    上例中EntryID有多个值,以array存在。而EntryID_Preview便从中随机地取一个值。

Open Toolbar