﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>IT博客-游闲子-随笔分类-性能测试</title><link>http://www.cnitblog.com/andycai/category/8355.html</link><description>        ------尽自己的努力，做到最好...</description><language>zh-cn</language><lastBuildDate>Mon, 26 Sep 2011 13:08:50 GMT</lastBuildDate><pubDate>Mon, 26 Sep 2011 13:08:50 GMT</pubDate><ttl>60</ttl><item><title>LoadRunner监控服务器</title><link>http://www.cnitblog.com/andycai/archive/2009/08/07/60602.html</link><dc:creator>枫晰落扬</dc:creator><author>枫晰落扬</author><pubDate>Fri, 07 Aug 2009 03:43:00 GMT</pubDate><guid>http://www.cnitblog.com/andycai/archive/2009/08/07/60602.html</guid><wfw:comment>http://www.cnitblog.com/andycai/comments/60602.html</wfw:comment><comments>http://www.cnitblog.com/andycai/archive/2009/08/07/60602.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/andycai/comments/commentRss/60602.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/andycai/services/trackbacks/60602.html</trackback:ping><description><![CDATA[<p>************************本文非原创 **************转贴 51test********************</p>
<p>一、监控windows系统：<br>1、监视连接前的准备工作<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1）进入被监视windows系统，开启以下二个服务Remote Procedure Call(RPC) 和Remote Registry Service (开始—)运行中输入services.msc，开启对应服务即可)。<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2）在被监视的WINDOWS机器上:右击我的电脑,选择管理-&gt;共享文件夹-&gt;共享在这里面要有C$这个共享文件夹 (要是没有自己手动加上)。<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 3）在安装LR的机器上，开始—》运行，输入 \\被监视机器IP\C$ 然后输入管理员帐号和密码,如果能看到被监视机器的C盘了,就说明你得到了那台机器的管理员权限,可以使用LR去连接了。（LR要连接WINDOWS机器进行监视要有管理员帐号和密码才行。）<br>&nbsp;&nbsp;&nbsp; 问题：在执行步骤3）时，输入 \\被监视机器IP\C$，出现不能以administrator身份访问被监控系统（若采用这种方式用LR对其监控的话，会提示：&#8220;找不到网络路径&#8221;）的情况，现象就是用户名输入框是灰色的，并且默认用户是guest。<br>&nbsp;&nbsp;&nbsp; 解决办法：这是安全策略的设置问题（管理工具 -&gt; 本地安全策略 -&gt; 安全选项 -&gt; "网络访问：本地帐户的共享和安全模式"）。默认情况下，XP的访问方式是"仅来宾"的方式，如果你访问它，当然就固定为Guest来访问，而guest账户没有监控的权限，所以要把访问方式改为&#8220;经典&#8221;模式，这样就可以以administrator的身份登陆了。修改后，再次执行步骤3），输入管理员用户名和密码，就可以访问被监控机器C盘了<br>&nbsp;&nbsp;&nbsp; 若这样都不行的话（可能是其它问题引起的），那只好采取别的方法了。在服务器的机子上，通过windows自带的&#8220;性能日志和警报&#8221;下的&#8220;计数器日志&#8221;中新增加一个监控日志（管理工具—）性能—）性能日志和警报），配置好日志，也能监控服务器的cpu、memory、disk等计数器。当然，这种方法就不是用LR来监控了。</p>
<p>2、用LR监视windows的步骤<br>&nbsp;&nbsp;&nbsp; 在controller 中，Windows Resources窗口中右击鼠标选择Add Measurements，添加被监控windows的IP地址，选择所属系统，然后选择需要监控的指标就可以开始监控了。</p>
<p>二、监控linux<br>1 准备工作<br>&nbsp;&nbsp; 可以通过两种方法验证服务器上是否配置了rstatd守护程序：<br>&nbsp;&nbsp;&nbsp; ①使用rup命令，它用于报告计算机的各种统计信息，其中就包括rstatd的配置信息。使用命令rup 10.130.61.203,此处10.130.61.203是要监视的linux/Unix服务器的Ip，如果该命令返回相关的统计信息。则表示已经配置并且激活了rstatd守护进程；若未返回有意义的统计信息，或者出现一条错误报告，则表示rstatd守护进程尚未被配置或有问题。<br>&nbsp;&nbsp;&nbsp; ②使用find命令<br>#find / -name rpc.rstatd,该命令用于查找系统中是否存在rpc.rstatd文件，如果没有，说明系统没有安装rstatd守护程序。<br>&nbsp;&nbsp;&nbsp; 如果服务器上没有安装rstatd程序（一般来说LINUX都没有安装），需要下载一个包才有这个服务,包名字是rpc.rstatd-4.0.1.tar.gz. 这是一个源码,需要编译,下载并安装rstatd（可以在<a href="http://sourceforge.net/projects/rstatd">http://sourceforge.net/projects/rstatd</a>这个地址下载）<br>下载后，开始安装，安装步骤如下：<br>tar -xzvf&nbsp; rpc.rstatd-4.0.1.tar.gz<br>cd&nbsp; rpc.rstatd-4.0.1/<br>./configure&nbsp; —配置操作<br>make —进行编译<br>make install —开始安装<br>rpc.rstatd —启动rstatd进程</p>
<p>2）安装完成后配置rstatd 目标守护进程xinetd,它的主配置文件是/etc/xinetd.conf ,它里面内容是一些如下的基本信息：<br>#<br># xinetd.conf<br>#<br># Copyright (c) 1998-2001 SuSE GmbH Nuernberg, Germany.<br># Copyright (c) 2002 SuSE Linux AG, Nuernberg, Germany.<br>#<br>defaults<br>{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; log_type&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; = FILE /var/log/xinetd.log<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; log_on_success&nbsp; = HOST EXIT DURATION<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; log_on_failure&nbsp; = HOST ATTEMPT<br>#&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; only_from&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; = localhost<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; instances&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; = 30<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; cps&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; = 50 10<br>#<br># The specification of an interface is interesting, if we are on a firewall.<br># For example, if you only want to provide services from an internal<br># network interface, you may specify your internal interfaces IP-Address.<br>#<br>#&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; interface&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; = 127.0.0.1<br>}<br>includedir /etc/xinetd.d</p>
<p>我们这里需要修改的是/etc/xinetd.d/下的三个conf文件 rlogin ,rsh,rexec 这三个配置文件,打这三个文件里的disable = yes都改成 disable = no ( disabled 用在默认的 {} 中禁止服务)或是把# default: off都设置成 on 这个的意思就是在xinetd启动的时候默认都启动上面的三个服务!<br>&nbsp; 说明：我自己在配置时，没有disable = yes这项，我就将# default: off改为：default: on，重启后(cd /etc/init.d/&nbsp;&nbsp;&nbsp;&nbsp; ./xinetd restart）通过netstat -an |grep 514查看，没有返回。然后，我就手动在三个文件中最后一行加入disable = no，再重启xinetd，再使用netstat -an |grep 514查看，得到tcp 0 0 0.0.0.0:514 0.0.0.0:* LISTEN结果，表明rsh服务器已经启动。</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp; 只要保证Linux机器上的进程里有rstatd和xinetd这二个服务就可以用LR去监视了<br>两点小的技巧:<br>①检查是否启动: rsh server 监听的TCP 是514。<br>[root@mg04 root]# netstat -an |grep 514<br>tcp 0 0 0.0.0.0:514 0.0.0.0:* LISTEN<br>如果能看到514在监听说明rsh服务器已经启动。<br>②检查是否启动: rstatd<br>输入命令: rpcinfo -p<br>如果能看到类似如下信息：<br>程序 版本 协议 端口<br>100001&nbsp;&nbsp;&nbsp; 5&nbsp;&nbsp; udp&nbsp;&nbsp;&nbsp; 937&nbsp; rstatd<br>100001&nbsp;&nbsp;&nbsp; 4&nbsp;&nbsp; udp&nbsp;&nbsp;&nbsp; 937&nbsp; rstatd<br>100001&nbsp;&nbsp;&nbsp; 3&nbsp;&nbsp; udp&nbsp;&nbsp;&nbsp; 937&nbsp; rstatd<br>100001&nbsp;&nbsp;&nbsp; 2&nbsp;&nbsp; udp&nbsp;&nbsp;&nbsp; 937&nbsp; rstatd<br>100001&nbsp;&nbsp;&nbsp; 1&nbsp;&nbsp; udp&nbsp;&nbsp;&nbsp; 937&nbsp; rstatd<br>那就说明rstatd服务启动了,(当然这里也可以用ps ax代替)<br>③重起xinetd方法：<br>在suse linux如下操作：<br>cd /etc/init.d/<br>./xinetd restart<br>看到网上有的地方说使用如下命令：<br># service xinetd reload<br># /sbin/service xinetd rstart<br>不知道是在什么系统用的。<br>④安装rsh，和rsh-server两个服务包方法<br>a. 卸载rsh<br># rpm &#8211;q rsh----------查看版本号<br># rpm -e 版本号---------卸载该版本。<br>b．安装<br># rpm &#8211;ivh rsh-0.17-14.i386.rpm rsh-server-0.17-14.i386.rpm<br>⑤在启动rpc.rstatd时，会报错&#8220;Cannot register service: RPC: Unable to receive; errno = Ction refused&#8221;。<br>解决方法如下：<br># /etc/init.d ./portmap start<br># /etc/init.d ./nfs start<br>然后再次启动rpc.rstatd就好了。</p>
<p>最后，在controller中，将UNIX resources拖放到右边窗口里面，右击鼠标选择Add Measurements，添加被监控linux的IP地址，然后选择需要监控的指标就可以了。</p>
<p>三、监控UNIX<br>lr监控UNIX ，UNIX先启动一rstatd服务<br>&nbsp;&nbsp; 以下是在IBM AIX系统中启动rstatd服务的方法：<br>1、&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 使用telnet以root用户的身份登录入AIX系统<br>2、&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 在命令行提示符下输入：vi /etc/inetd.conf<br>3、&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 查找rstatd，找到<br>#rstatd&nbsp;&nbsp; sunrpc_udp&nbsp;&nbsp;&nbsp;&nbsp; udp&nbsp;&nbsp;&nbsp;&nbsp; wait&nbsp;&nbsp;&nbsp; root&nbsp;&nbsp;&nbsp; /usr/sbin/rpc.rstatd rstatd 100001 1-3<br>4、将#去掉<br>5、:wq保存修改结果<br>6、命令提示符下输入：refresh &#8211;s inetd 重新启动服务。<br>这样使用loadrunner就可以监视AIX系统的性能情况了。</p>
<p>注：在HP UNIX系统上编辑完inetd.conf后，重启inetd服务需要输入inetd -c<br>UNIX上也可以用rup命令查看rstatd程序是否被配置并激活<br>若rstatd程序已经运行，重启时，先查看进程ps -ef |grep inet，然后杀掉进程，再refresh &#8211;s inetd进行重启</p>
<p>&nbsp;</p>
<p>本文来自CSDN博客，转载请标明出处：<a href="http://blog.csdn.net/oobibigo/archive/2008/12/16/3529361.aspx">http://blog.csdn.net/oobibigo/archive/2008/12/16/3529361.aspx</a></p>
<img src ="http://www.cnitblog.com/andycai/aggbug/60602.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/andycai/" target="_blank">枫晰落扬</a> 2009-08-07 11:43 <a href="http://www.cnitblog.com/andycai/archive/2009/08/07/60602.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>LoadRunner9.0动态访问Oracle数据库</title><link>http://www.cnitblog.com/andycai/archive/2009/07/30/60462.html</link><dc:creator>枫晰落扬</dc:creator><author>枫晰落扬</author><pubDate>Thu, 30 Jul 2009 08:20:00 GMT</pubDate><guid>http://www.cnitblog.com/andycai/archive/2009/07/30/60462.html</guid><wfw:comment>http://www.cnitblog.com/andycai/comments/60462.html</wfw:comment><comments>http://www.cnitblog.com/andycai/archive/2009/07/30/60462.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.cnitblog.com/andycai/comments/commentRss/60462.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/andycai/services/trackbacks/60462.html</trackback:ping><description><![CDATA[最近在公司搞<a onclick="javascript:tagshow(event, 'loadrunner');" href="javascript:;" target=_self><u><strong><font color=#0000ff>loadrunner</font></strong></u></a>脚本，需要访问<a onclick="javascript:tagshow(event, '%CA%FD%BE%DD%BF%E2');" href="javascript:;" target=_self><u><strong><font color=#0000ff>数据库</font></strong></u></a>取一个动态值，在网上看到的一个是通过loadrunner的parameters自动生成一个表格，但这个东西是静态的，不会随着脚本的运行而变化，还有就是大神kernzhang流传的getdata.dll，但是执行sql无法获得结果，他的个人主页也打不开了-_-!!!无法得到源码，根本不知道咋用。
<p>
<table style="BORDER-RIGHT: #999 1px solid; BORDER-TOP: #999 1px solid; FONT-SIZE: 12px; BORDER-LEFT: #999 1px solid; WIDTH: 90%; BORDER-BOTTOM: #999 1px solid; BACKGROUND-COLOR: #dddddd" align=center>
    <tbody>
        <tr>
            <td>
            <p>　　#include&lt;lrd.h&gt;<br>　　static LRD_INIT_INFO InitInfo={LRD_INIT_INFO_EYECAT};<br>　　static LRD_DEFAULT_DB_VERSION DBTypeVersion[]={{LRD_DBTYPE_NONE,LRD_DBVERSION_NONE}};</p>
            <p>　　//这里的LRD_VAR_DESC数据结构声明是很重要的，他是用来存储sql结果数据集的结构体，第一个参数头文件中就是这么写的，第二个参数是最大行数，第三个参数是每一行的最大长度，如果获得的查询结果比定义的长，运行时就会报错，提示列被截断，最后一个参数是查询结果的类型，可以再帮助中的索引输入data types, database，列出的表格中是各种变量类型的名称<br>　　static LRD_VAR_DESC NUM ={LRD_VAR_DESC_EYECAT, 10, 32, LRD_DBTYPE_ORACLE, {1, 1, 0},DT_LONG_VARCHAR};</p>
            <p>　　//下面这些句柄等变量的申请都可以照着帮助中的例子写<br>　　static void FAR * OraEnv1;<br>　　static void FAR * OraSvc1;<br>　　static void FAR * OraSrv1;<br>　　static void FAR * OraSes1;<br>　　static void FAR * OraStm1;<br>　　static void FAR * OraDef1;<br>　　unsigned long rownum;</p>
            <p>　　vuser_init()<br>　　{<br>　　//初始化数据库&nbsp;&nbsp;<br>　　lrd_init(&amp;InitInfo,DBTypeVersion);<br>　　lrd_initialize_db(LRD_DBTYPE_ORACLE,3,0);<br>　　lrd_env_init(LRD_DBTYPE_ORACLE,&amp;OraEnv1,0,0);<br>　　lrd_ora8_handle_alloc(OraEnv1,SVCCTX,&amp;OraSvc1,0);<br>　　lrd_ora8_handle_alloc(OraEnv1,SERVER,&amp;OraSrv1,0);<br>　　lrd_ora8_handle_alloc(OraEnv1,SESSION,&amp;OraSes1,0);</p>
            <p>　　//设置数据库名称，我的是oracle，odbc中连接数据库名称就是这个<br>　　lrd_server_attach(OraSrv1,"db_192.168.0.101",-1,0,0);<br>　　lrd_ora8_attr_set_from_handle(OraSvc1,SERVER,OraSrv1,0,0);</p>
            <p>　　//用户名和密码<br>　　lrd_ora8_attr_set(OraSes1,USERNAME,"eeim2",-1,0);<br>　　lrd_ora8_attr_set(OraSes1,PASSWORD,"eeim2",-1,0);<br>　　lrd_ora8_attr_set_from_handle(OraSvc1,SESSION,OraSes1,0,0);<br>　　lrd_session_begin(OraSvc1,OraSes1,1,0,0);<br>　　lrd_ora8_handle_alloc(OraEnv1,STMT,&amp;OraStm1,0);<br>　　return 0;<br>　　}</p>
            <p>　　Action()<br>　　{<br>　　//这里写上你的sql语句（我主要是需要查询的结果，如果你是插入或修改记录就不用往后看了）<br>　　lrd_ora8_stmt(OraStm1,"select R_V from ce_receviablecharge where user_no = 2009070901",1,0,0);</p>
            <p>　　//执行定义的sql，并且将结果行数返回到rownum中<br>　　lrd_ora8_exec(OraSvc1,OraStm1,0,0,&amp;rownum,0,0,0,0,1);</p>
            <p>　　//绑定该列<br>　　lrd_ora8_bind_col(OraStm1,&amp;OraDef1,1,&amp;NUM,0,0);</p>
            <p>　　//设定保存列中的某个数据到row中，第二个参数为第几列，第三个参数为第几行（只能保存一个值），最后一个参数就是你想要保存到的parameter名称<br>　　lrd_ora8_save_col(OraStm1, 1, 1, 0, "result");</p>
            <p>　　//这个遍历刚才查询的结果，第二个参数0表示就1行，负号表示遍历所有结果，绝对值表示实际有多少行，第三个参数表示一次遍历最大进行多少行（不能大于LRD_VAR_DESC中定义的第二个参数，即最大行数）<br>　　lrd_ora8_fetch(OraStm1, -2, 2 &amp;rownum, 0, 2, 0, 0);</p>
            <p>　　//这里我用error是为了看得醒目，不要认为是出错了<br>　　lr_error_message("sql result: %s", lr_eval_string("{result}"));<br>　　return 0;<br>　　}</p>
            <p>　　vuser_end()<br>　　{<br>　　lrd_session_end(OraSvc1, OraSes1, 0, 0);<br>　　lrd_server_detach(OraSrv1, 0, 0);<br>　　lrd_handle_free(&amp;OraEnv1, 0);<br>　　return 0;<br>　　}</p>
            </td>
        </tr>
    </tbody>
</table>
</p>
<p>　　最后通过lrd系列的函数解决了这个问题，现在跟大家分享一下！！！它是基于odbc访问数据库的原理，主要的东西除了在帮助中，还有就是看看lrd.h中的定义说明。</p>
<p>　　到此就结束了，但是这个东西目前我只是支持取出一个结果放到parameter中，还搞不懂如和将所有数据放入parameter中，来作为自动化时多用户使用的参数。在此抛砖引玉，希望有达人能够解决！！！</p>
<p>　　另外要注意的是，如果你是录制了一个http协议的脚本，那么编译时无法通过的，需要创建一个odbc和http协议的混合脚本写入这些代码，然后再创建一个http脚本进行录制，然后将http中录制的脚本内容拷贝过来。俺也不知道为什么，如果我先录制脚本再插入这些代码总是提示lrd_init()未知错误：</p>
<p>　　vuser_init.c(19): Error: C interpreter run time error: vuser_init.c (19):&nbsp; Error -- Unresolved symbol : lrdfnc_init.</p>
<p>　　vuser_init.c(19): Notify: CCI trace: Compiled_code(0): vuser_init()</p>
<p>　　这个东西后来我将sql语句进行了参数化，这样可以保证每个模拟的用户得到不同的值（别忘了在参数中选择Unique）。关联也可以取得这些参数，但是我那个录制的脚本中无法自动关联，手动关联只有调出所有<a onclick="javascript:tagshow(event, '%C8%D5%D6%BE');" href="javascript:;" target=_self><u><strong><font color=#0000ff>日志</font></strong></u></a>，才能找到服务器发送的参数，一次20分钟&#8230;&#8230;而且长时间运行有时候会偶尔出现找不到参数信息，怀疑是由于发送消息超时的原因。</p>
<p>　　使用数据库会造成数据库服务器的负荷，如果进行数据库<a onclick="javascript:tagshow(event, '%B2%E2%CA%D4');" href="javascript:;" target=_self><u><strong><font color=#0000ff>测试</font></strong></u></a>，建议使用关联，否则可能影响服务器性能。</p>
<p><font color=#ff0000>版权声明：本文为51Testing论坛会员圣炬骑士原创，</font><a href="http://bbs.51testing.com/"><font color=#ff0000><u>http://bbs.51testing.com</u></font></a></p>
<p><font color=#ff0000>转载请保留链接，标明本文原始出处、作者信息和本声明，否则将追究法律责任。</font></p>
<img src ="http://www.cnitblog.com/andycai/aggbug/60462.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/andycai/" target="_blank">枫晰落扬</a> 2009-07-30 16:20 <a href="http://www.cnitblog.com/andycai/archive/2009/07/30/60462.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Winsock与LoadRunner </title><link>http://www.cnitblog.com/andycai/archive/2009/07/07/59899.html</link><dc:creator>枫晰落扬</dc:creator><author>枫晰落扬</author><pubDate>Tue, 07 Jul 2009 02:13:00 GMT</pubDate><guid>http://www.cnitblog.com/andycai/archive/2009/07/07/59899.html</guid><wfw:comment>http://www.cnitblog.com/andycai/comments/59899.html</wfw:comment><comments>http://www.cnitblog.com/andycai/archive/2009/07/07/59899.html#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://www.cnitblog.com/andycai/comments/commentRss/59899.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/andycai/services/trackbacks/59899.html</trackback:ping><description><![CDATA[<p>一、什么是Winsock？<br>&nbsp;&nbsp;&nbsp; Winsock 是Windows Sockets的简写，是用于TCP/IP与Windows之间的通信的接口。TCP/IP被称为&#8220;Internet语言&#8221;，基本上说，Internet就是由那些通过TCP/IP进行通信的系统组成的。目前，大部分基于Windows操作系统或者IBM OS/2操作系统的流行Internet应用程序是按照WinSock标准来开发的。<br>&nbsp;&nbsp;&nbsp; WinSock是一个.dll（动态链接库）并且在Windows下运行。WINSOCK.DLL是连接TCP/IP的接口，然后通过TCP/IP，连接到Internet。<br>&nbsp;&nbsp;&nbsp; 下图以最简明的方式表明了WinSock是如何工作的：<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<img height=516 alt="" src="http://www.cnitblog.com/images/cnitblog_com/andycai/1.jpg" width=237 border=0><br>&nbsp;&nbsp; WINSOCK.DLL实际上担当WinSock应用程序和TCP/IP堆栈的中间层。WinSock应用程序告诉WINSOCK.DLL要做什么，然后WINSOCK.DLL翻译这些命令给TCP/IP堆栈，然后TCP/IP堆栈传递这些命令给Internet。<br>二、LoadRunner和Winsock<br>&nbsp;&nbsp;&nbsp; 在我们投入到分析LR Winsock 解决方案的需求前，让我们先离题一点点，来讨论不同的协议是如何工作的。从上文的介绍，你可以知道，有许多的高级协议，例如FTP,HTTP等等。所有Windows基础应用程序（例如IE，WS-FTP）使用Winsock作为与网络通信的接口。因此，任何高级协议将通过Winsock连接到网络。<br>&nbsp;&nbsp;&nbsp; 什么时候在LR中使用WinSock呢？到如今，你肯定非常熟悉LR是如何工作的。LR本质上是在录制期间捕获API调用然后将他们回放。因此当你创建了一个LR的Web脚本，Vugen将捕获所有在浏览器上操作而产生的HTTP调用。LR支持许多其它的协议，例如Oracle OCI，ODBC，Sybase,和SAP等等。在所有的这些协议中，LR通过勾住（hooks into）API，就能够捕获API调用产生的响应。现在，假设某个协议是LR不支持的。既然大多数网络协议使用Winsock作为接口，如果我们在Winsock层上录制脚本，我们就可以捕获几乎所有在Windows上的应用程序。因此，当LR支持的其他协议不能工作的时候，我们就可以使用Winsock了。<br>三、使用Winsock录制脚本<br>&nbsp;&nbsp;&nbsp; 在LR中创建一个新的Vuser脚本，并且在Vuser type中选择Winsock。如下图<br>&nbsp;&nbsp;&nbsp;&nbsp;<img height=528 alt="" src="http://www.cnitblog.com/images/cnitblog_com/andycai/2.jpg" width=388 border=0><br>&nbsp;&nbsp;&nbsp; 在web Vuser脚本中，指定将要进行录制脚本的URL后，Vugen就会启动浏览器并开始录制。但在Winsock类型的脚本中，你可以对任何应用程序进行录制，而不仅仅是浏览器。因此你需要指定要录制的应用程序，如下图所示：<br>&nbsp;&nbsp;&nbsp;&nbsp;<img height=238 alt="" src="http://www.cnitblog.com/images/cnitblog_com/andycai/3.jpg" width=662 border=0><br>&nbsp;&nbsp;&nbsp; 这个例子中，我们为一个web应用程序创建了一个Winsock脚本，因此我们将通过给出IEXPLORE.EXE的路径来调用浏览器。这可能没有多大意义，因为LR已经支持使用HTTP协议进行录制，但我选择web应用程序，仅仅是为了简单的举例说明。<br>四、Winsock脚本<br>&nbsp;&nbsp;&nbsp; 一个典型的Winsock脚本可能就像下图所示：<br>&nbsp;&nbsp;&nbsp;&nbsp;<img height=370 alt="" src="http://www.cnitblog.com/images/cnitblog_com/andycai/4.jpg" width=743 border=0><br>&nbsp;&nbsp;&nbsp; 这是通过录制<a href="http://www.yahoo.com/">www.yahoo.com</a>得到的一个脚本。你可以看出，Winsock录制的内容主要由：打开一个socket连接、发送buffer和接收buffer组成。如果你看脚本，你将会发现Winsock脚本由4个部分组成，而不像web脚本中通常有3个部分。如下图：<br>&nbsp;&nbsp;&nbsp;&nbsp;<img height=597 alt="" src="http://www.cnitblog.com/images/cnitblog_com/andycai/5.jpg" width=856 border=0><br>&nbsp;&nbsp;&nbsp;&nbsp; 第四个部分是data.ws，它包含了在Actions中的lrs_send和lrs_receive语句所涉及到的buffer。下图展示了在data.ws中的buffer的一个例子。<br>&nbsp;&nbsp;&nbsp;&nbsp;<img height=768 alt="" src="http://www.cnitblog.com/images/cnitblog_com/andycai/6.jpg" width=802 border=0><br>&nbsp;&nbsp;&nbsp; buf2包含了向<a href="http://www.yahoo.com/">www.yahoo.com</a>发出的请求，buf5包含了从服务器接收到的响应。你可以看出，Winsock脚本并不像web脚本那样&#8220;漂亮&#8221;！所以我们把它作为最后录制手段。在一个接收buffer中，bufxx后面跟着一个数字，这个数字表示接收的总字节数量。例如，在buf5中，接收了2048个字节。<br>&nbsp;&nbsp;&nbsp; 注意：你会看到有一些buffer只包含一个&#8220;!&#8221;，它仅仅只是一个网络确认。它不会对应用程序有任何作用。可以把它们注释掉。不能在data.ws中注释，你可以在Actions部分中把相应的lrs_send和lrs_receive buffer注释掉。因此在这个例子中，buffer0，1，3和4可以在action部分中注释掉，如下：<br>&nbsp;&nbsp;&nbsp;&nbsp;<img height=448 alt="" src="http://www.cnitblog.com/images/cnitblog_com/andycai/7.jpg" width=740 border=0><br>&nbsp;&nbsp;&nbsp; 这样将会提高脚本的运行速度。<br>五、创建Winsock脚本<br>&nbsp;&nbsp;&nbsp;&nbsp; 以下是创建winsock脚本的六个步骤。<br>&nbsp;&nbsp;&nbsp;&nbsp; 1、使用VuGen录制基本脚本。<br>&nbsp;&nbsp;&nbsp;&nbsp; 2、增强脚本。<br>&nbsp;&nbsp;&nbsp;&nbsp; 3、定义参数（可选的）。<br>&nbsp;&nbsp;&nbsp;&nbsp; 4、关联语句（可选的）。<br>&nbsp;&nbsp;&nbsp;&nbsp; 5、设定运行时属性设置。<br>&nbsp;&nbsp;&nbsp;&nbsp; 6、在VuGen中运行脚本。<br>1、使用VuGen录制基本脚本。<br>&nbsp;&nbsp;&nbsp; 和前面所描述的方法一样，调用Vugen并创建一个新的Vuser脚本。这将是你最基础的脚本。你可以注释掉包含&#8220;!&#8221;的buffer。<br>&nbsp;&nbsp;&nbsp;&nbsp; 练习1<br>&nbsp;&nbsp;&nbsp; 作为一个练习，创建一个简单的Winsock脚本，录制动作：使用jojo/bean登录到MercuryWebTours站点然后登出。保存脚本，命名为Winsock_1。创建一个类似的web脚本，使用HTTP协议。保存脚本，命名为WebWinsock_1。不要替换动态的session ID。让脚本停留在刚录制完毕的状态。比较这两个，想想Winsock脚本和web脚本相比较有什么相象之处。<br>&nbsp;&nbsp;&nbsp; 当你成功登录后，你会得到一个提示消息&#8220;Welcome,jojo,......&#8221;。既然所有发送和接收buffer都记录在data.ws文件中，你可以在你的data.ws中定位字符串&#8220;Welcome,jojo&#8221;。<br>1.1）你所找到的包含&#8220;Welcome,jojo&#8221;的buffer的号码是多少？你能解释为什么这个buffer是个接收buffer而不是个发送buffer？这个字符串是不是仅仅就是&#8220;Welcome,jojo&#8221;，还是带有HTML标签？(答：buffer号码常常不会保持为一个常量：它们可能在不同的录制时会有所改变。当你登陆，基于旧的ID，会从服务器那里接收到一个欢迎信息。因此字符串&#8220;Welcome,jojo&#8221;会出现在一个接收buffer中。并且该字符串将会带有HTML标签。如果你只需要字符串的一部分，你将不得不提有计划地提取它。)<br>&nbsp;&nbsp; 仔细观察脚本。在data.ws文件中查找MSO=SIDxxxxxxxxx，xxxxxxxxx表示9个数字。这是自从1970年1月1号到现在的秒数。MercuryWebTours站点基于当前时间工作，cookie和session ID都是以时间为基础。因此你脚本中的timestamp(xxxxxxxxx)对应了你录制时的时间。当运行脚本时，你必须改变它以获取当前时间，然后转换当前时间为字符串，并且作为一个参数。C中的函数time()返回一个整数，该整数是自从1970年1月1号以来的总秒数。在脚本的开头获取时间，转换这个整数为LR的一个参数，用这个参数替换data.ws中所有这个数字出现的地方。这样，脚本将被设置成使用当前时间。<br>1.2）修改时间完毕后，运行上面的脚本。在执行日志中查找字符"incorrectly"。你将会找到"You've reached this page incorrectly"。运行脚本WebWinsock_1。你将会在运行视图看到类似的信息。为什么会出现整个问题？(答：因为session ID没有被关联。我们正在使用已经无效的老session ID。)<br>&nbsp;&nbsp; 注意：文件data.ws中的接收buffer在每次回放后不会被更新。data.ws文件在录制时创建，回放时保持不变。因此，一旦脚本被录制完毕后或者工作的时候，接收buffer的内容不会被影响。LR使用发送buffer中的数据向网络发送请求，然后对从服务器接收到的响应和接收buffer中的期望响应进行比较。也注意下，只比较大小，不是实际内容。如果文件data.ws接收buffer中存在"rob"，然后服务器响应"bob"，LR将认为通过了。但如果服务器响应"robert"，LR将会提示产生了一个期望字节数不匹配的错误。<br>&nbsp;&nbsp;&nbsp; 沿着相同的方面，让我们假定LR期望接收500字节。假定第一个10秒接收第一个100字节时，将产生超时并且停止运行。如果你希望LR等待更长的一段时间，你必须使用函数lrs_set_recv_timeout去修改默认的超时时间。<br>&nbsp;&nbsp; 考虑相反的情况，你不希望在一个特定的buffer中接收所有的数据，而是只希望接收第一个100字节。这样你可以使用函数ltr_receive_ex，它可以指定你希望接收的字节数量。<br>2.增强脚本<br>&nbsp;&nbsp;&nbsp; 通过插入事务，集合点和流程控制到脚本中，来增强脚本。不像web脚本那么易于阅读，在Winsock脚本中，步骤之间的区分不是很明显。因此在录制时，增加注释，事务和集合点（需要时）到脚本中就显得很重要。<br>&nbsp;&nbsp;&nbsp; 如果脚本中需要任何逻辑，增加该逻辑（这是在普通脚本中的一种语句，对上面的脚本Winsock_1并不适用）。<br>3.定义参数(可选的)<br>&nbsp;&nbsp;&nbsp; 为脚本中的已录制的固定值定义参数。通过参数取代固定值，你可以重复业务操作多次而使用不同的值。例如，在上面的脚本中，你可以使用不同的userIDs/passwords取代jojo/bean。<br>4.关联语句(可选的)<br>&nbsp;&nbsp;&nbsp; 关联语句使你能够在接下来的业务处理中使用前面的业务处理产生的结果。现在你知道，在前面章节中你所录制的web脚本中，服务器产生的session ID将不得不被关联来使得脚本得以正常工作。这也同样应用于Winsock脚本中。因此，你将不得不捕获并关联session ID。<br>&nbsp;&nbsp;&nbsp; 我们将不在这里做关于捕获和关联session ID的练习，因为类似这样的练习是证明你自己的一部分。但我们将在这一节中，讨论关联的总体概貌。<br>&nbsp;&nbsp;&nbsp; 例如，假定你将要在下面的接收buffer中捕获PID（这是LR函数参考的一个例子）：<br>&nbsp;&nbsp;&nbsp;<img height=135 alt="" src="http://www.cnitblog.com/images/cnitblog_com/andycai/8.jpg" width=453 border=0><br>&nbsp;&nbsp; 在典型的web脚本中，你将使用web_create_html_param并且用&#8220;PID&#8221;和&#8220;q2&#8221;为边界来捕获数据。<br>&nbsp;&nbsp;&nbsp; 在winsock脚本中，你将使用lrs_save_param，它保存静态或接收buffer中的数据作为参数。参看下面的示例：<br>&nbsp;&nbsp;&nbsp;<img height=46 alt="" src="http://www.cnitblog.com/images/cnitblog_com/andycai/9.jpg" width=384 border=0><br>&nbsp;&nbsp; 和web_create_html_param不同，lrs_save_param出现在发出请求的后面。在这个例子中，第一个语句接收buf47。下面是那些在lrs_save_param语句中使用到的参数：<br>&nbsp;&nbsp;&nbsp; socket2：在socket2上从一个buffer中捕获。<br>&nbsp;&nbsp;&nbsp; NULL：NULL指示参数必须从上个接收buffer中捕获。这个例子是buf47。如果你要从其它的buffer中捕获，你将必须指定buffer号码。<br>&nbsp;&nbsp;&nbsp; param1：LR参数名称，它将保存捕获的数据。<br>&nbsp;&nbsp;&nbsp; 67：便宜量-在下面介绍。<br>&nbsp;&nbsp;&nbsp; 5：将要捕获的长度。<br>&nbsp;&nbsp; 偏移量：这是从buffer起始到开始捕获处所要跳过的字节数量。在上面得例子中，PID在buf47中，距离起始67个字节的地方开始。如何确定这个呢？<br>&nbsp;&nbsp;&nbsp; 在data.ws中，高显示包含了要捕获的参数的整个buffer，然后按下F7。这样将会调出一个窗体，如下所示：<br>&nbsp;&nbsp;&nbsp;&nbsp;<img height=215 alt="" src="http://www.cnitblog.com/images/cnitblog_com/andycai/10.jpg" width=856 border=0><br>&nbsp;&nbsp; 左边的一列中，你将看到每行相应的偏移量。在中间的4列，你将看到buffer的EBCDIC(扩充的二进制编码的十进制交换码)转化。在右边的一列，是实际的buffer本身。因此，如果你看实际buffer的第五行，那就是PID所在的行。但我们希望在该行的第三个位置后才开始捕获。该一行所对应的偏移量是64，然后在该行中，PID的偏移量是3，因此，总的偏移量就是67。<br>&nbsp;&nbsp;&nbsp; 注意：在winsock中，没有类似web_find的语句，你将不得不捕获你正在查找的文本并且计划性地验证你是不是得到正确的文本。<br>5.配置运行时设置<br>&nbsp;&nbsp;&nbsp; 运行时设置控制脚本执行时虚拟用户的行为。这些设置包括循环，日志和定时信息。<br>6.在Vugen中运行脚本<br>&nbsp;&nbsp;&nbsp; 保存脚本，并且在Vugen中运行脚本以验证它是否正确地运行。</p>
<p>&nbsp;</p>
<p>本文来自CSDN博客，转载请标明出处：<a href="http://blog.csdn.net/diy8187/archive/2009/03/27/4028358.aspx">http://blog.csdn.net/diy8187/archive/2009/03/27/4028358.aspx</a></p>
<img src ="http://www.cnitblog.com/andycai/aggbug/59899.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/andycai/" target="_blank">枫晰落扬</a> 2009-07-07 10:13 <a href="http://www.cnitblog.com/andycai/archive/2009/07/07/59899.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>关于LoadRunner中的关联相关知识 </title><link>http://www.cnitblog.com/andycai/archive/2009/07/01/59767.html</link><dc:creator>枫晰落扬</dc:creator><author>枫晰落扬</author><pubDate>Wed, 01 Jul 2009 08:32:00 GMT</pubDate><guid>http://www.cnitblog.com/andycai/archive/2009/07/01/59767.html</guid><wfw:comment>http://www.cnitblog.com/andycai/comments/59767.html</wfw:comment><comments>http://www.cnitblog.com/andycai/archive/2009/07/01/59767.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.cnitblog.com/andycai/comments/commentRss/59767.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/andycai/services/trackbacks/59767.html</trackback:ping><description><![CDATA[<p class=pn2Heading style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana">了解关联选项 </p>
<p class=pRegtext style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana">通过关联可在测试执行过程中保存动态值。使用这些设置可以配置 VuGen 在录制过程中执行的自动关联的程度。所有关联选项在默认情况下都被禁用。关联选项仅适用于 VBScript 和 JScript 语言。 <a name=wp885212></p>
</a>
<p class=pRegtext style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana"><strong style="FONT-WEIGHT: bold">关联小数</strong><strong style="FONT-WEIGHT: bold"> - </strong>关联短数据类型，例如字节、字符和短整型。（默认情况下禁用） <a name=wp885214></p>
</a>
<p class=pRegtext style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana"><strong style="FONT-WEIGHT: bold">关联大数</strong><strong style="FONT-WEIGHT: bold"> - </strong>关联长数据类型，例如整型、长整型、64 位字符、浮点型和双精度型。（默认情况下禁用） <a name=wp885216></p>
</a>
<p class=pRegtext style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana"><strong style="FONT-WEIGHT: bold">关联简单字符串</strong><strong style="FONT-WEIGHT: bold"> - </strong>关联简单的非数组字符串和短语。（默认情况下是启用的） <a name=wp885218></p>
</a>
<p class=pRegtext style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana"><strong style="FONT-WEIGHT: bold">关联数组</strong><strong style="FONT-WEIGHT: bold"> - </strong>跟踪并关联所有数据类型的数组，例如字符串、结构、数字等。（默认情况下禁用） <a name=wp885220></p>
</a>
<p class=pRegtext style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana"><strong style="FONT-WEIGHT: bold">关联结构</strong><strong style="FONT-WEIGHT: bold"> - </strong>跟踪并关联复杂的结构。（默认情况下禁用） </p>
<p class=pRegtext style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana">关联语句的主要原因是： </p>
<div class=pSmartBullet1 style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana">
<ul class=pSmartBullet1>
    <div class=pSmartBullet1 style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana">
    <li><strong style="FONT-WEIGHT: bold">简化或优化代码</strong> </li>
    </div>
</ul>
</div>
<p class=pRegtext style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana">例如，如果依次执行一系列的相关查询，您的代码可能会变得很长。要减小代码的大小，可以嵌套查询，但这样会失去准确性，而且代码会变得复杂而难以理解。通过关联语句，不需要嵌套就可以链接查询。 </p>
<div class=pSmartBullet1 style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana">
<ul class=pSmartBullet1>
    <div class=pSmartBullet1 style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana">
    <li><strong style="FONT-WEIGHT: bold">生成动态数据</strong> </li>
    </div>
</ul>
</div>
<p class=pRegtext style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana">许多应用程序和网站按当前日期和时间标识会话。如果尝试回放脚本，该操作将会失败，因为当前时间与录制时间不同。通过关联数据可以保存动态数据，并且在整个场景或会话步骤运行过程中使用这些数据。 </p>
<div class=pSmartBullet1 style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana">
<ul class=pSmartBullet1>
    <div class=pSmartBullet1 style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana">
    <li><strong style="FONT-WEIGHT: bold">容纳唯一数据记录</strong> </li>
    </div>
</ul>
</div>
<p class=pRegtext style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana">某些应用程序（例如数据库）要求使用唯一的值。录制期间唯一的值在脚本执行时将不再唯一。例如，假设您录制了打开一个新的银行帐户的过程。每个新帐户都分配了用户未知的唯一编号。录制期间，此帐号将插入具有唯一关键字约束的表中。如果尝试按所录制的那样运行脚本，该操作将尝试用录制的编号而不是新的唯一编号创建帐户。结果将产生错误，因为该帐号已经存在。 </p>
<p class=pRegtext style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana">如果在运行脚本时遇到了错误，请检查脚本中出现错误的位置。在大多数情况下，通过关联查询功能可以解决该问题，关联查询将一个语句的结果用作另一个语句的输入。 </p>
<p class=pRegtext style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana">关联脚本时的主要步骤是： </p>
<div class=pSmartList1 style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana">
<ol class=pSmartList1 type=1>
    <div class=pSmartList1 style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana">
    <li><strong style="FONT-WEIGHT: bold">确定要关联的值。</strong> </li>
    </div>
</ol>
</div>
<p class=pIndent style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana">对于大多数协议，可以在执行日志中查看有问题的语句。双击错误消息可以直接跳至出错的位置。 </p>
<p class=pIndent style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana">或者，还可以使用随 VuGen 分发的 <em class=cItalic>WDiff</em> 实用程序来确定脚本内的不一致性。有关详细信息，请参阅&#8220;使用 Wdiff 比较 Vuser 脚本&#8221;。 </p>
<ol class=pSmartList1 type=1>
    <div class=pSmartList1 style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana">
    <li><strong style="FONT-WEIGHT: bold">保存结果。</strong> </li>
    </div>
</ol>
<p class=pIndent style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana">可以使用适当的函数将查询的值保存为变量。这些关联函数是特定于协议的函数。关联函数名通常包含字符串 <em class=cItalic>save_param</em>，例如 <strong style="FONT-WEIGHT: bold">web_reg_save_param</strong> 和 <strong style="FONT-WEIGHT: bold">lrs_save_param</strong>。有关如何执行关联的解释，请参阅特定协议的部分。在某些协议中（如数据库和 Web），VuGen 会将这些函数自动插入到脚本中。 </p>
<ol class=pSmartList1 type=1>
    <div class=pSmartList1 style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana">
    <li><strong style="FONT-WEIGHT: bold">引用保存的值。</strong> </li>
    </div>
</ol>
<p class=pIndent style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana">将查询或语句中的常量替换为保存的变量。 </p>
<p class=pIndent style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana">一些协议具有内置的自动或部分自动的关联： </p>
<img src ="http://www.cnitblog.com/andycai/aggbug/59767.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/andycai/" target="_blank">枫晰落扬</a> 2009-07-01 16:32 <a href="http://www.cnitblog.com/andycai/archive/2009/07/01/59767.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>UNIX 资源性能计数器 </title><link>http://www.cnitblog.com/andycai/archive/2009/07/01/59766.html</link><dc:creator>枫晰落扬</dc:creator><author>枫晰落扬</author><pubDate>Wed, 01 Jul 2009 08:28:00 GMT</pubDate><guid>http://www.cnitblog.com/andycai/archive/2009/07/01/59766.html</guid><wfw:comment>http://www.cnitblog.com/andycai/comments/59766.html</wfw:comment><comments>http://www.cnitblog.com/andycai/archive/2009/07/01/59766.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/andycai/comments/commentRss/59766.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/andycai/services/trackbacks/59766.html</trackback:ping><description><![CDATA[<p class=pRegtext style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana">下列默认度量可用于 UNIX 计算机：<br><br></p>
<p class=pRegtext style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana">
<table cellSpacing=0 cellPadding=5 align=wwp:inherit border=1>
    <caption>
    <p style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana">&nbsp;</p>
    </caption>
    <tbody>
        <tr vAlign=top align=middle bgColor=#cccccc>
            <th><a name=wp840745>
            <p style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana">&nbsp;</p>
            </a>
            <p class=pCellHeading style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana">度量 </p>
            </th>
            <th><a name=wp840747>
            <p style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana">&nbsp;</p>
            </a>
            <p class=pCellHeading style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana">描述 </p>
            </th>
        </tr>
        <tr vAlign=top align=left>
            <td style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana"><a name=wp840753>
            <p style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana">&nbsp;</p>
            </a>
            <p class=pCellBody style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana"><strong style="FONT-WEIGHT: bold">Average load</strong> </p>
            </td>
            <td style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana"><a name=wp840755>
            <p style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana">&nbsp;</p>
            </a>
            <p class=pCellBody style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana">上一分钟同时处于&#8220;就绪&#8221;状态的平均进程数 </p>
            </td>
        </tr>
        <tr vAlign=top align=left>
            <td style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana"><a name=wp840761>
            <p style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana">&nbsp;</p>
            </a>
            <p class=pCellBody style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana"><strong style="FONT-WEIGHT: bold">Collision rate </strong></p>
            </td>
            <td style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana"><a name=wp840763>
            <p style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana">&nbsp;</p>
            </a>
            <p class=pCellBody style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana">每秒钟在以太网上检测到的冲突数 </p>
            </td>
        </tr>
        <tr vAlign=top align=left>
            <td style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana"><a name=wp840769>
            <p style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana">&nbsp;</p>
            </a>
            <p class=pCellBody style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana"><strong style="FONT-WEIGHT: bold">Context switches rate </strong></p>
            </td>
            <td style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana"><a name=wp840771>
            <p style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana">&nbsp;</p>
            </a>
            <p class=pCellBody style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana">每秒钟在进程或线程之间的切换次数 </p>
            </td>
        </tr>
        <tr vAlign=top align=left>
            <td style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana"><a name=wp840777>
            <p style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana">&nbsp;</p>
            </a>
            <p class=pCellBody style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana"><strong style="FONT-WEIGHT: bold">CPU utilization </strong></p>
            </td>
            <td style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana"><a name=wp840779>
            <p style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana">&nbsp;</p>
            </a>
            <p class=pCellBody style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana">CPU 的使用时间百分比 </p>
            </td>
        </tr>
        <tr vAlign=top align=left>
            <td style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana"><a name=wp840785>
            <p style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana">&nbsp;</p>
            </a>
            <p class=pCellBody style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana"><strong style="FONT-WEIGHT: bold">Disk rate </strong></p>
            </td>
            <td style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana"><a name=wp840787>
            <p style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana">&nbsp;</p>
            </a>
            <p class=pCellBody style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana">磁盘传输速率 </p>
            </td>
        </tr>
        <tr vAlign=top align=left>
            <td style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana"><a name=wp840793>
            <p style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana">&nbsp;</p>
            </a>
            <p class=pCellBody style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana"><strong style="FONT-WEIGHT: bold">Incoming packets error rate </strong></p>
            </td>
            <td style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana"><a name=wp840795>
            <p style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana">&nbsp;</p>
            </a>
            <p class=pCellBody style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana">接收以太网数据包时每秒钟接收到的错误数 </p>
            </td>
        </tr>
        <tr vAlign=top align=left>
            <td style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana"><a name=wp840801>
            <p style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana">&nbsp;</p>
            </a>
            <p class=pCellBody style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana"><strong style="FONT-WEIGHT: bold">Incoming packets rate </strong></p>
            </td>
            <td style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana"><a name=wp840803>
            <p style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana">&nbsp;</p>
            </a>
            <p class=pCellBody style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana">每秒钟传入的以太网数据包数 </p>
            </td>
        </tr>
        <tr vAlign=top align=left>
            <td style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana"><a name=wp840809>
            <p style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana">&nbsp;</p>
            </a>
            <p class=pCellBody style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana"><strong style="FONT-WEIGHT: bold">Interrupt rate </strong></p>
            </td>
            <td style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana"><a name=wp840811>
            <p style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana">&nbsp;</p>
            </a>
            <p class=pCellBody style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana">每秒内的设备中断数 </p>
            </td>
        </tr>
        <tr vAlign=top align=left>
            <td style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana"><a name=wp840817>
            <p style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana">&nbsp;</p>
            </a>
            <p class=pCellBody style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana"><strong style="FONT-WEIGHT: bold">Outgoing packets errors rate </strong></p>
            </td>
            <td style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana"><a name=wp840819>
            <p style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana">&nbsp;</p>
            </a>
            <p class=pCellBody style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana">发送以太网数据包时每秒钟发送的错误数 </p>
            </td>
        </tr>
        <tr vAlign=top align=left>
            <td style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana"><a name=wp840825>
            <p style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana">&nbsp;</p>
            </a>
            <p class=pCellBody style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana"><strong style="FONT-WEIGHT: bold">Outgoing packets rate </strong></p>
            </td>
            <td style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana"><a name=wp840827>
            <p style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana">&nbsp;</p>
            </a>
            <p class=pCellBody style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana">每秒钟传出的以太网数据包数 </p>
            </td>
        </tr>
        <tr vAlign=top align=left>
            <td style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana"><a name=wp840833>
            <p style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana">&nbsp;</p>
            </a>
            <p class=pCellBody style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana"><strong style="FONT-WEIGHT: bold">Page-in rate</strong> </p>
            </td>
            <td style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana"><a name=wp840835>
            <p style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana">&nbsp;</p>
            </a>
            <p class=pCellBody style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana">每秒钟读入到物理内存中的页数 </p>
            </td>
        </tr>
        <tr vAlign=top align=left>
            <td style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana"><a name=wp840841>
            <p style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana">&nbsp;</p>
            </a>
            <p class=pCellBody style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana"><strong style="FONT-WEIGHT: bold">Page-out rate</strong> </p>
            </td>
            <td style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana"><a name=wp840843>
            <p style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana">&nbsp;</p>
            </a>
            <p class=pCellBody style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana">每秒钟写入页面文件和从物理内存中删除的页数 </p>
            </td>
        </tr>
        <tr vAlign=top align=left>
            <td style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana"><a name=wp840849>
            <p style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana">&nbsp;</p>
            </a>
            <p class=pCellBody style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana"><strong style="FONT-WEIGHT: bold">Paging rate </strong></p>
            </td>
            <td style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana"><a name=wp840851>
            <p style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana">&nbsp;</p>
            </a>
            <p class=pCellBody style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana">每秒钟读入物理内存或写入页面文件的页数 </p>
            </td>
        </tr>
        <tr vAlign=top align=left>
            <td style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana"><a name=wp840857>
            <p style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana">&nbsp;</p>
            </a>
            <p class=pCellBody style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana"><strong style="FONT-WEIGHT: bold">Swap-in rate</strong> </p>
            </td>
            <td style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana"><a name=wp840859>
            <p style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana">&nbsp;</p>
            </a>
            <p class=pCellBody style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana">正在交换的进程数 </p>
            </td>
        </tr>
        <tr vAlign=top align=left>
            <td style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana"><a name=wp840865>
            <p style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana">&nbsp;</p>
            </a>
            <p class=pCellBody style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana"><strong style="FONT-WEIGHT: bold">Swap-out rate</strong> </p>
            </td>
            <td style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana"><a name=wp840867>
            <p style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana">&nbsp;</p>
            </a>
            <p class=pCellBody style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana">正在交换的进程数 </p>
            </td>
        </tr>
        <tr vAlign=top align=left>
            <td style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana"><a name=wp840873>
            <p style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana">&nbsp;</p>
            </a>
            <p class=pCellBody style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana"><strong style="FONT-WEIGHT: bold">System mode CPU utilization </strong></p>
            </td>
            <td style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana"><a name=wp840875>
            <p style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana">&nbsp;</p>
            </a>
            <p class=pCellBody style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana">在系统模式下使用 CPU 的时间百分比 </p>
            </td>
        </tr>
        <tr vAlign=top align=left>
            <td style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana"><a name=wp840881>
            <p style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana">&nbsp;</p>
            </a>
            <p class=pCellBody style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana"><strong style="FONT-WEIGHT: bold">User mode CPU utilization </strong></p>
            </td>
            <td style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana"><a name=wp840883>
            <p style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana">&nbsp;</p>
            </a>
            <p class=pCellBody style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana">在用户模式下使用 CPU 的时间百分比 </p>
            </td>
        </tr>
    </tbody>
</table>
</p>
<br>
<img src ="http://www.cnitblog.com/andycai/aggbug/59766.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/andycai/" target="_blank">枫晰落扬</a> 2009-07-01 16:28 <a href="http://www.cnitblog.com/andycai/archive/2009/07/01/59766.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>LoadRunner中Web服务器资源监控计数器 </title><link>http://www.cnitblog.com/andycai/archive/2009/07/01/59765.html</link><dc:creator>枫晰落扬</dc:creator><author>枫晰落扬</author><pubDate>Wed, 01 Jul 2009 08:25:00 GMT</pubDate><guid>http://www.cnitblog.com/andycai/archive/2009/07/01/59765.html</guid><wfw:comment>http://www.cnitblog.com/andycai/comments/59765.html</wfw:comment><comments>http://www.cnitblog.com/andycai/archive/2009/07/01/59765.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/andycai/comments/commentRss/59765.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/andycai/services/trackbacks/59765.html</trackback:ping><description><![CDATA[<p class=pn3Heading style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana">Microsoft IIS 性能计数器 </p>
<p class=pRegtext style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana">下表描述可以监控的默认度量：<br><br></p>
<p class=pRegtext style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana">
<table cellSpacing=0 cellPadding=5 align=wwp:inherit border=1>
    <caption>
    <p align=left>&nbsp;</p>
    </caption>
    <tbody>
        <tr vAlign=top align=middle bgColor=#cccccc>
            <th><a name=wp753526>
            <p style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana">&nbsp;</p>
            </a>
            <p class=pCellHeading style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana">对象 </p>
            </th>
            <th><a name=wp753528>
            <p style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana">&nbsp;</p>
            </a>
            <p class=pCellHeading style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana">度量 </p>
            </th>
            <th><a name=wp753530>
            <p style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana">&nbsp;</p>
            </a>
            <p class=pCellHeading style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana">描述 </p>
            </th>
        </tr>
        <tr vAlign=top align=left>
            <td style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana"><a name=wp753538>
            <p style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana">&nbsp;</p>
            </a>
            <p class=pCellBody style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana"><strong style="FONT-WEIGHT: bold">Web Service</strong> </p>
            </td>
            <td style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana"><a name=wp753540>
            <p style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana">&nbsp;</p>
            </a>
            <p class=pCellBody style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana"><strong style="FONT-WEIGHT: bold">Bytes Sent/sec</strong> </p>
            </td>
            <td style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana"><a name=wp753542>
            <p style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana">&nbsp;</p>
            </a>
            <p class=pCellBody style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana">Web 服务发送数据字节的速率 </p>
            </td>
        </tr>
        <tr vAlign=top align=left>
            <td style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana"><a name=wp753550>
            <p style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana">&nbsp;</p>
            </a>
            <p class=pCellBody style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana"><strong style="FONT-WEIGHT: bold">Web Service</strong> </p>
            </td>
            <td style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana"><a name=wp753552>
            <p style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana">&nbsp;</p>
            </a>
            <p class=pCellBody style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana"><strong style="FONT-WEIGHT: bold">Bytes Received/sec</strong> </p>
            </td>
            <td style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana"><a name=wp753554>
            <p style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana">&nbsp;</p>
            </a>
            <p class=pCellBody style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana">Web 服务接收数据字节的速率 </p>
            </td>
        </tr>
        <tr vAlign=top align=left>
            <td style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana"><a name=wp753562>
            <p style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana">&nbsp;</p>
            </a>
            <p class=pCellBody style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana"><strong style="FONT-WEIGHT: bold">Web Service</strong> </p>
            </td>
            <td style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana"><a name=wp753564>
            <p style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana">&nbsp;</p>
            </a>
            <p class=pCellBody style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana"><strong style="FONT-WEIGHT: bold">Get Requests/sec</strong> </p>
            </td>
            <td style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana"><a name=wp753566>
            <p style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana">&nbsp;</p>
            </a>
            <p class=pCellBody style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana">使用 GET 方法进行 HTTP 请求的速率。尽管 GET 请求可以用于窗体，但通常用于基本文件检索或图像映射。 </p>
            </td>
        </tr>
        <tr vAlign=top align=left>
            <td style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana"><a name=wp753574>
            <p style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana">&nbsp;</p>
            </a>
            <p class=pCellBody style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana"><strong style="FONT-WEIGHT: bold">Web Service</strong> </p>
            </td>
            <td style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana"><a name=wp753576>
            <p style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana">&nbsp;</p>
            </a>
            <p class=pCellBody style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana"><strong style="FONT-WEIGHT: bold">Post Requests/sec</strong> </p>
            </td>
            <td style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana"><a name=wp753578>
            <p style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana">&nbsp;</p>
            </a>
            <p class=pCellBody style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana">使用 POST 方法进行 HTTP 请求的速率。POST 请求通常用于窗体或网关请求。 </p>
            </td>
        </tr>
        <tr vAlign=top align=left>
            <td style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana"><a name=wp753586>
            <p style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana">&nbsp;</p>
            </a>
            <p class=pCellBody style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana"><strong style="FONT-WEIGHT: bold">Web Service</strong> </p>
            </td>
            <td style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana"><a name=wp753588>
            <p style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana">&nbsp;</p>
            </a>
            <p class=pCellBody style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana"><strong style="FONT-WEIGHT: bold">Maximum Connections</strong> </p>
            </td>
            <td style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana"><a name=wp753590>
            <p style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana">&nbsp;</p>
            </a>
            <p class=pCellBody style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana">同时与 Web 服务建立的最大连接数 </p>
            </td>
        </tr>
        <tr vAlign=top align=left>
            <td style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana"><a name=wp753598>
            <p style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana">&nbsp;</p>
            </a>
            <p class=pCellBody style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana"><strong style="FONT-WEIGHT: bold">Web Service</strong> </p>
            </td>
            <td style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana"><a name=wp753600>
            <p style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana">&nbsp;</p>
            </a>
            <p class=pCellBody style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana"><strong style="FONT-WEIGHT: bold">Current Connections</strong> </p>
            </td>
            <td style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana"><a name=wp753602>
            <p style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana">&nbsp;</p>
            </a>
            <p class=pCellBody style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana">当前与 Web 服务建立的连接数 </p>
            </td>
        </tr>
        <tr vAlign=top align=left>
            <td style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana"><a name=wp753610>
            <p style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana">&nbsp;</p>
            </a>
            <p class=pCellBody style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana"><strong style="FONT-WEIGHT: bold">Web Service</strong> </p>
            </td>
            <td style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana"><a name=wp753612>
            <p style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana">&nbsp;</p>
            </a>
            <p class=pCellBody style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana"><strong style="FONT-WEIGHT: bold">Current NonAnonymous Users</strong> </p>
            </td>
            <td style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana"><a name=wp753614>
            <p style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana">&nbsp;</p>
            </a>
            <p class=pCellBody style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana">当前使用 Web 服务非匿名连接的用户数 </p>
            </td>
        </tr>
        <tr vAlign=top align=left>
            <td style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana"><a name=wp753622>
            <p style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana">&nbsp;</p>
            </a>
            <p class=pCellBody style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana"><strong style="FONT-WEIGHT: bold">Web Service</strong> </p>
            </td>
            <td style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana"><a name=wp753624>
            <p style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana">&nbsp;</p>
            </a>
            <p class=pCellBody style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana"><strong style="FONT-WEIGHT: bold">Not Found Errors/sec</strong> </p>
            </td>
            <td style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana"><a name=wp753626>
            <p style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana">&nbsp;</p>
            </a>
            <p class=pCellBody style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana">由于找不到请求的文档，因服务器不能满足请求而出现的错误率。这些通常作为 HTTP 404 错误代码报告到客户端。 </p>
            </td>
        </tr>
        <tr vAlign=top align=left>
            <td style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana"><a name=wp753634>
            <p style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana">&nbsp;</p>
            </a>
            <p class=pCellBody style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana"><strong style="FONT-WEIGHT: bold">Process</strong> </p>
            </td>
            <td style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana"><a name=wp753636>
            <p style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana">&nbsp;</p>
            </a>
            <p class=pCellBody style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana"><strong style="FONT-WEIGHT: bold">Private Bytes</strong> </p>
            </td>
            <td style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana"><a name=wp753638>
            <p style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana">&nbsp;</p>
            </a>
            <p class=pCellBody style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana">专为此进程分配并且无法与其他进程共享的当前字节数。 </p>
            </td>
        </tr>
    </tbody>
</table>
</p>
<p class=pn3Heading style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana">Apache 性能计数器 <br></p>
<p class=pRegtext_after style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana">下表描述了可以监控的度量和服务器属性：<br><br></p>
<p class=pRegtext_after style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana">
<table cellSpacing=0 cellPadding=5 align=wwp:inherit border=1>
    <caption>
    <p style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana">&nbsp;</p>
    </caption>
    <tbody>
        <tr vAlign=top align=middle bgColor=#cccccc>
            <th><a name=wp845299>
            <p style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana">&nbsp;</p>
            </a>
            <p class=pCellHeading style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana">度量 </p>
            </th>
            <th><a name=wp845301>
            <p style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana">&nbsp;</p>
            </a>
            <p class=pCellHeading style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana">描述 </p>
            </th>
        </tr>
        <tr vAlign=top align=left>
            <td style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana"><a name=wp845307>
            <p style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana">&nbsp;</p>
            </a>
            <p class=pCellBody style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana"><strong style="FONT-WEIGHT: bold"># Busy Servers</strong> </p>
            </td>
            <td style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana"><a name=wp845309>
            <p style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana">&nbsp;</p>
            </a>
            <p class=pCellBody style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana">处于忙碌状态的服务器数 </p>
            </td>
        </tr>
        <tr vAlign=top align=left>
            <td style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana"><a name=wp845315>
            <p style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana">&nbsp;</p>
            </a>
            <p class=pCellBody style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana"><strong style="FONT-WEIGHT: bold"># Idle Servers</strong> </p>
            </td>
            <td style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana"><a name=wp845317>
            <p style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana">&nbsp;</p>
            </a>
            <p class=pCellBody style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana">处于空闲状态的服务器数 </p>
            </td>
        </tr>
        <tr vAlign=top align=left>
            <td style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana"><a name=wp845323>
            <p style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana">&nbsp;</p>
            </a>
            <p class=pCellBody style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana"><strong style="FONT-WEIGHT: bold">Apache CPU Usage</strong> </p>
            </td>
            <td style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana"><a name=wp845325>
            <p style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana">&nbsp;</p>
            </a>
            <p class=pCellBody style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana">Apache 服务器利用 CPU 的时间百分比 </p>
            </td>
        </tr>
        <tr vAlign=top align=left>
            <td style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana"><a name=wp845331>
            <p style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana">&nbsp;</p>
            </a>
            <p class=pCellBody style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana"><strong style="FONT-WEIGHT: bold">Hits/sec</strong> </p>
            </td>
            <td style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana"><a name=wp845333>
            <p style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana">&nbsp;</p>
            </a>
            <p class=pCellBody style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana">HTTP 请求速率 </p>
            </td>
        </tr>
        <tr vAlign=top align=left>
            <td style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana"><a name=wp845339>
            <p style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana">&nbsp;</p>
            </a>
            <p class=pCellBody style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana"><strong style="FONT-WEIGHT: bold">KBytes Sent/sec</strong> </p>
            </td>
            <td style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana"><a name=wp845341>
            <p style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana">&nbsp;</p>
            </a>
            <p class=pCellBody style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana">从 Web 服务器发送数据字节的速率 </p>
            </td>
        </tr>
    </tbody>
</table>
</p>
<p class=pRegtext_after style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana"><br></p>
<img src ="http://www.cnitblog.com/andycai/aggbug/59765.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/andycai/" target="_blank">枫晰落扬</a> 2009-07-01 16:25 <a href="http://www.cnitblog.com/andycai/archive/2009/07/01/59765.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>如何让Loadrunne实现多个场景运行？</title><link>http://www.cnitblog.com/andycai/archive/2009/07/01/59763.html</link><dc:creator>枫晰落扬</dc:creator><author>枫晰落扬</author><pubDate>Wed, 01 Jul 2009 08:23:00 GMT</pubDate><guid>http://www.cnitblog.com/andycai/archive/2009/07/01/59763.html</guid><wfw:comment>http://www.cnitblog.com/andycai/comments/59763.html</wfw:comment><comments>http://www.cnitblog.com/andycai/archive/2009/07/01/59763.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/andycai/comments/commentRss/59763.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/andycai/services/trackbacks/59763.html</trackback:ping><description><![CDATA[<p style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana">如何让Loadrunne实现多个场景运行？</p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana">场景分析：</p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana">有3个不同的场景，分别为搜索，下载，上传，其中3个场景执行顺序为按照搜索-&gt;下载-&gt;上传流程操作；哪么如何让Loadrunner中如何实现多个场景运行：</p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana">方法1：利用Loadrunner中的Controller中的Vuser组模式</p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana" align=left>注意：Vuser 组设置不适用于百分比模式。</p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana">操作步骤：</p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana">1 打开Loadrunner Controller-&gt;选择&#8220;Manual Scenario&#8221;场景模式，添加脚本（Web_Search_100Vuser_15Mins_070401，Web_DownLoad_50Vuser_15Mins_070401，Web_UpLoad_50Vuser_15Mins_070401）：</p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana">2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 选择第1个脚本(Web_Search_100Vuser_15Mins_070401)，点击&#8220;Edit Schedule&#8221;-&gt;选择&#8220;Schedule by Group&#8221;-&gt;点击&#8220;Scenario Start Time &#8221;按钮，设置启动时间如下图所示：17:00:00 2007-4-24<br><br></p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana">3选择第2个脚本&#8220;Web_DownLoad_50Vuser_15Mins_070401&#8221; ，点击&#8220;Edit Schedule&#8221;-&gt;选择&#8220;Schedule by Group&#8221;-&gt;在&#8221;Start Time&#8221;中选择&#8221;Start When group&#8221; Web_Search_100Vuser_15Mins_070401 Finihses, 点击&#8221;OK&#8221;确认</p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana">2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 选择第3个脚本&#8220;Web_UpLoad_50Vuser_15Mins_070401&#8221;, 点击&#8220;Edit Schedule&#8221;-&gt;选择&#8220;Schedule by Group&#8221;-&gt;在&#8221;Start Time&#8221;中选择&#8221;Start When group&#8221; Web_DownLoad_50Vuser_15Mins_070401 Finihses，点击&#8221;OK&#8221;确认</p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana">5&nbsp;选择&#8220;Results&#8221;-&gt; &#8220;Results Settings&#8221;设置，如下图所示：</p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana">6 点击LoadRunner Controller中的&#8220;Start Scrnario&#8221;按钮，开始运行场景</p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana">方法二：利用批处理命令操作</p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana">(1)&nbsp;&nbsp; 打开LoadRunner controller设置场景(Web_Search_100Vuser_15Mins_070401，Web_DownLoad_50Vuser_15Mins_070401，Web_UpLoad_50Vuser_15Mins_070401),设置个场景的运行策略，然后保存文件</p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana">(2)&nbsp;&nbsp; 设置3个场影的日志保存目录及名称，选择&#8220;Results&#8221;-&gt; &#8220;Results Settings&#8221;设置：</p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana">Website_Search_Result，Website_DownLoad_Result，Website_UpLoad_Result</p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana">(3) 新建一个文本文件&#8220;website_night_070421&#8221;，编辑为以下内容：</p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana">SET LR_PATH="C:\Program Files\Mercury Interactive\Mercury LoadRunner\bin"</p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana">%LR_PATH%"wlrun.exe -TestPath "C:\Program Files\Mercury Interactive\Mercury LoadRunner\scenario\web_Search.lrs" -Run</p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana">%LR_PATH%"wlrun.exe -TestPath "C:\Program Files\Mercury Interactive\Mercury LoadRunner\scenario\web_Download.lrs"&nbsp;-Run</p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana">%LR_PATH%"wlrun.exe -TestPath "C:\Program Files\Mercury Interactive\Mercury LoadRunner\scenario\Web_UpLoad.lrs" &#8211;Run</p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana">说明：要调用Loadrunner&nbsp;Controller，其实质是调用了wlrun，所以仅需在批处理命令中加入相应的语法格式即可，如上面所示：</p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana">(4) 保存文件到C:\Program Files"Mercury Interactive"Mercury LoadRunner"scenario，并将文件放在场景文件中如下图所示：</p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana">(5) 如果要执行多个场景的运行，只需双击运行&#8221;website_bat_night_070421.bat&#8221;文件</p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana">注意事项：</p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana">1 Loadrunner Controller 运行时总是会覆盖结果，所以需要设置好日志的保存目录及名称；</p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana">2 批处理运行脚本中的&#8220;-Run&#8221;中间未有空格；</p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana">3 批处理运行脚本中的参数区分大小写的。（如上面的脚本中Download当时写成了DownLoad死活不认，更改后才运行通过了） &nbsp;</p>
转自：卖烧烤的鱼
<img src ="http://www.cnitblog.com/andycai/aggbug/59763.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/andycai/" target="_blank">枫晰落扬</a> 2009-07-01 16:23 <a href="http://www.cnitblog.com/andycai/archive/2009/07/01/59763.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>URL-based 方式和 HTML-based方式的差别</title><link>http://www.cnitblog.com/andycai/archive/2009/07/01/59761.html</link><dc:creator>枫晰落扬</dc:creator><author>枫晰落扬</author><pubDate>Wed, 01 Jul 2009 07:17:00 GMT</pubDate><guid>http://www.cnitblog.com/andycai/archive/2009/07/01/59761.html</guid><wfw:comment>http://www.cnitblog.com/andycai/comments/59761.html</wfw:comment><comments>http://www.cnitblog.com/andycai/archive/2009/07/01/59761.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/andycai/comments/commentRss/59761.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/andycai/services/trackbacks/59761.html</trackback:ping><description><![CDATA[<p style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana">在使用<a href="http://www.ltesting.net/html/10/category-catid-110.html" target=_blank><span style="FONT-FAMILY: Verdana">LoadRunner</span></a><span style="FONT-FAMILY: Verdana">进行WEB脚本录制的时候，很多人不清楚URL-based 方式和 HTML-based方式的差别，以及何种情况下使用何种录制方式，这里给出一个简单的判断方法。<br>HTML-based 方式：<br>HTML-based 方式对每个页面录制形成一条语句，对LoadRunner来说，在该模式下，访问一个页面，首先会与</span><a href="http://www.ltesting.net/html/78/category-catid-378.html" target=_blank><span style="FONT-FAMILY: Verdana">服务器</span></a><span style="FONT-FAMILY: Verdana">之间建立一个连接获取页面的内容，然后从页面中分解得到其他的元素（component），然后建立几个连接分别获取相应的元素。<br><br>URL-based 方式：<br>URL-based 方式将每条客户端发出的请求录制成一条语句，对LoadRunner来说，在该模式下，一条语句只建立一个到服务器的连接，LoadRunner提供了web_concurrent_start和web_concurrent_end函数模拟HTML-based的工作方式。<br><br>如何决定选择何种录制方式？<br>1、如果应用是WEB应用，首选是HTML-based方式；<br>2、如果应用是使用HTTP协议的非WEB应用，首选是URL-based方式；<br>3、如果WEB应用中使用了</span><a href="http://www.ltesting.net/html/54/category-catid-154.html" target=_blank>java</a> applet程序，且applet程序与服务器之间存在通讯，选用URL-based方式；<br>4、如果WEB应用中使用的javascript、<a href="http://www.ltesting.net/html/56/category-catid-156.html" target=_blank>vb</a>script脚本与服务器之间存在通讯（调用了服务端组件），选用URL-based方式。</p>
<img src ="http://www.cnitblog.com/andycai/aggbug/59761.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/andycai/" target="_blank">枫晰落扬</a> 2009-07-01 15:17 <a href="http://www.cnitblog.com/andycai/archive/2009/07/01/59761.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>深入理解Loadrunner中的Browser Emulation</title><link>http://www.cnitblog.com/andycai/archive/2009/06/22/59545.html</link><dc:creator>枫晰落扬</dc:creator><author>枫晰落扬</author><pubDate>Mon, 22 Jun 2009 09:31:00 GMT</pubDate><guid>http://www.cnitblog.com/andycai/archive/2009/06/22/59545.html</guid><wfw:comment>http://www.cnitblog.com/andycai/comments/59545.html</wfw:comment><comments>http://www.cnitblog.com/andycai/archive/2009/06/22/59545.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/andycai/comments/commentRss/59545.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/andycai/services/trackbacks/59545.html</trackback:ping><description><![CDATA[<p style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana">一：基本介绍</p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana">在Loadrunner的使用中，对于Run-time Settings下的browser emulation设置是比较容易让人产生困惑的地方。下面我们结合sniffer来具体看看每个选项的用途，以及对测试的影响。<br>如图：<br><img style="WIDTH: 755px; HEIGHT: 565px" height=565 alt="" src="http://www.cnitblog.com/images/cnitblog_com/andycai/8365/o_1.jpg" width=755 border=0><br></p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana">二：案例和工具</p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana">1. 测试案例：
<p style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana">打开网站首页两次，对比不同Browser Emulation设置下loadrunner的行为，脚本如下。 <br>Action()<br>{&nbsp;&nbsp; <br>web_url("www.primeton.com",&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>"URL=http://www.primeton.com/",&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>"Resource=0",&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>"RecContentType=text/html",&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>"Referer=",&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>"Snapshot=t2.inf",&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>"Mode=HTML",&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>LAST);<br>&nbsp;&nbsp; <br>web_url("www.primeton.com",&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>"URL=http://www.primeton.com/",&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>"Resource=0",&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>"RecContentType=text/html",&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>"Referer=",&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>"Snapshot=t2.inf",&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>"Mode=HTML",&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>LAST);&nbsp;&nbsp; <br>return 0;<br>}<br>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana">
<p><strong>2. </strong><strong>sniffer</strong><strong>工具</strong>
<p>开源工具：Wireshark(前身是ethereal)（www.wireshark.org）
<p><strong>三：测试过程</strong></p>
<p>为了方便描述，我们约定用：
<p><em>A</em><em>代表Simulate browser cache</em>
<p><em>B</em><em>代表Cache URLs requiring content(HTMLs)</em>
<p><em>C</em><em>代表Check for newer versions of stored pages every visit to the page</em>
<p><em>D</em><em>代表Download non-HTML resources</em>
<p><em>E</em><em>代表Simulate a new user on each iteratioin</em>
<p><em>F</em><em>代表Clear cache on each iteration</em>
<p>首先设置Run Logic中的iteration为2。让Action运行两次，看看循环运行脚本两次，数据包和连接数的变化。
<p><strong>1. </strong><strong>去掉所有选项</strong>
<p>结果：共获取数据包95个，建立连接1个（红色标识），断开连接1个（蓝色标识）
<div class=csharpcode-wrapper>
<div style="BORDER-RIGHT: gray 1px solid; PADDING-RIGHT: 4px; BORDER-TOP: gray 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 8pt; PADDING-BOTTOM: 4px; MARGIN: 20px 0px 10px; OVERFLOW: auto; BORDER-LEFT: gray 1px solid; WIDTH: 97.5%; CURSOR: text; LINE-HEIGHT: 12pt; PADDING-TOP: 4px; BORDER-BOTTOM: gray 1px solid; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BACKGROUND-COLOR: #f4f4f4; max-height: 200px">
<pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; BORDER-BOTTOM-STYLE: none">No.     Time        Source            Destination       Protocol Info
<font color=#ff0000>1 0.000000    192.168.1.61      203.81.29.137     TCP      13835 &gt; http [SYN] Seq=0 Len=0 MSS=1460 WS=2
</font>      2 0.036053    203.81.29.137     192.168.1.61      TCP      http &gt; 13835 [SYN, ACK] Seq=0 Ack=1 Win=17280 Len=0 MSS=1440 WS=0
<font color=#0000ff>92 1.415887    192.168.1.61      203.81.29.137     TCP      13835 &gt; http [FIN, ACK] Seq=817 Ack=71762 Win=257760 Len=0
</font>     94 1.449960    203.81.29.137     192.168.1.61      TCP      http &gt; 13835 [FIN, ACK] Seq=71762 Ack=818 Win=16464 Len=0
</pre>
</div>
</div>
<p>
<p>在这种情况下，数据包非常少（没有选择下载资源文件入css,js,gif等），而且你可以看到，打开4次首页，只建立了一个tcp连接。
<p>这时，你即使选择A，发现数据包的数量量页没有变化，因为cache主要还是针对资源文件
<p><strong>2. </strong><strong>选择E(F)</strong>
<p>结果：共获取数据包102个，建立连接2个（红色标识），断开连接2个（蓝色标识）</p>
<div style="BORDER-RIGHT: gray 1px solid; PADDING-RIGHT: 4px; BORDER-TOP: gray 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 8pt; PADDING-BOTTOM: 4px; MARGIN: 20px 0px 10px; OVERFLOW: auto; BORDER-LEFT: gray 1px solid; WIDTH: 97.5%; CURSOR: text; LINE-HEIGHT: 12pt; PADDING-TOP: 4px; BORDER-BOTTOM: gray 1px solid; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BACKGROUND-COLOR: #f4f4f4; max-height: 200px">
<pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; BORDER-BOTTOM-STYLE: none">No.     Time        Source            Destination       Protocol Info
<font color=#ff0000>1 0.000000    192.168.1.61      203.81.29.137     TCP      13886 &gt; http [SYN] Seq=0 Len=0 MSS=1460 WS=2
</font>      2 0.037013    203.81.29.137     192.168.1.61      TCP      http &gt; 13886 [SYN, ACK] Seq=0 Ack=1 Win=17280 Len=0 MSS=1440 WS=0
<font color=#0000ff>     48 0.618117    192.168.1.61      203.81.29.137     TCP      13886 &gt; http [FIN, ACK] Seq=409 Ack=35882 Win=257760 Len=0
</font><font color=#ff0000>     49 0.644106    192.168.1.61      203.81.29.137     TCP      13887 &gt; http [SYN] Seq=0 Len=0 MSS=1460 WS=2
</font>     51 0.651919    203.81.29.137     192.168.1.61      TCP      http &gt; 13886 [FIN, ACK] Seq=35882 Ack=410 Win=16872 Len=0
53 0.676377    203.81.29.137     192.168.1.61      TCP      http &gt; 13887 [SYN, ACK] Seq=0 Ack=1 Win=17280 Len=0 MSS=1440 WS=0
<font color=#0000ff>     99 1.310379    192.168.1.61      203.81.29.137     TCP      13887 &gt; http [FIN, ACK] Seq=409 Ack=35882 Win=257760 Len=0</font>
101 1.347949    203.81.29.137     192.168.1.61      TCP      http &gt; 13887 [FIN, ACK] Seq=35882 Ack=410 Win=16872 Len=0
</pre>
</div>
<p>在这种情况下，数据包非常少（没有选择下载资源文件入css,js,gif等），对比第一种情况，你会发现它建立了两个连接，这就是E的作用，它对于每次迭代都当成一个新的用户，需要重新建立连接。
<p><strong>3. </strong><strong>选择DE(F)</strong>
<p>结果：共获取数据包1782个，建立连接6个（红色标识），断开连接6个（蓝色标识）</p>
<div style="BORDER-RIGHT: gray 1px solid; PADDING-RIGHT: 4px; BORDER-TOP: gray 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 8pt; PADDING-BOTTOM: 4px; MARGIN: 20px 0px 10px; OVERFLOW: auto; BORDER-LEFT: gray 1px solid; WIDTH: 97.5%; CURSOR: text; LINE-HEIGHT: 12pt; PADDING-TOP: 4px; BORDER-BOTTOM: gray 1px solid; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BACKGROUND-COLOR: #f4f4f4; max-height: 200px">
<pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; BORDER-BOTTOM-STYLE: none">No.     Time        Source            Destination       Protocol Info
<font color=#ff0000>1 0.000000    192.168.1.61      203.81.29.137     TCP      14016 &gt; http [SYN] Seq=0 Len=0 MSS=1460 WS=2
</font>      2 0.037911    203.81.29.137     192.168.1.61      TCP      http &gt; 14016 [SYN, ACK] Seq=0 Ack=1 Win=17280 Len=0 MSS=1440 WS=0
<font color=#ff0000>      6 0.107432    192.168.1.61      203.81.29.137     TCP      14017 &gt; http [SYN] Seq=0 Len=0 MSS=1460 WS=2</font>
9 0.141816    203.81.29.137     192.168.1.61      TCP      http &gt; 14017 [SYN, ACK] Seq=0 Ack=1 Win=17280 Len=0 MSS=1440 WS=0
<font color=#0000ff>    426 3.334889    192.168.1.61      203.81.29.137     TCP      14017 &gt; http [FIN, ACK] Seq=1852 Ack=150284 Win=257484 Len=0
</font>    428 3.372253    203.81.29.137     192.168.1.61      TCP      http &gt; 14017 [FIN, ACK] Seq=150284 Ack=1853 Win=16998 Len=0
<font color=#ff0000>    448 4.395488    192.168.1.61      203.81.29.137     TCP      14020 &gt; http [SYN] Seq=0 Len=0 MSS=1460 WS=2
</font>    457 4.439604    203.81.29.137     192.168.1.61      TCP      http &gt; 14020 [SYN, ACK] Seq=0 Ack=1 Win=17280 Len=0 MSS=1440 WS=0
<font color=#0000ff>    859 7.593610    192.168.1.61      203.81.29.137     TCP      14016 &gt; http [FIN, ACK] Seq=2849 Ack=377404 Win=257484 Len=0</font>
870 7.659680    203.81.29.137     192.168.1.61      TCP      http &gt; 14016 [FIN, ACK] Seq=377404 Ack=2850 Win=15935 Len=0
<font color=#0000ff>    888 8.511308    192.168.1.61      203.81.29.137     TCP      14020 &gt; http [FIN, ACK] Seq=1602 Ack=208150 Win=257760 Len=0
</font>    890 8.549451    203.81.29.137     192.168.1.61      TCP      http &gt; 14020 [FIN, ACK] Seq=208150 Ack=1603 Win=17280 Len=0
<font color=#ff0000>    892 8.566246    192.168.1.61      203.81.29.137     TCP      14022 &gt; http [SYN] Seq=0 Len=0 MSS=1460 WS=2</font>
893 8.601893    203.81.29.137     192.168.1.61      TCP      http &gt; 14022 [SYN, ACK] Seq=0 Ack=1 Win=17280 Len=0 MSS=1440 WS=0
<font color=#ff0000>    899 8.702628    192.168.1.61      203.81.29.137     TCP      14023 &gt; http [SYN] Seq=0 Len=0 MSS=1460 WS=2</font>
904 8.741807    203.81.29.137     192.168.1.61      TCP      http &gt; 14023 [SYN, ACK] Seq=0 Ack=1 Win=17280 Len=0 MSS=1440 WS=0
<font color=#0000ff>   1298 11.809456   192.168.1.61      203.81.29.137     TCP      14022 &gt; http [FIN, ACK] Seq=1550 Ack=159770 Win=257484 Len=0
</font>   1310 11.878665   203.81.29.137     192.168.1.61      TCP      http &gt; 14022 [FIN, ACK] Seq=159770 Ack=1551 Win=17280 Len=0
<font color=#ff0000>   1341 12.771707   192.168.1.61      203.81.29.137     TCP      14026 &gt; http [SYN] Seq=0 Len=0 MSS=1460 WS=2</font>
1348 12.813950   203.81.29.137     192.168.1.61      TCP      http &gt; 14026 [SYN, ACK] Seq=0 Ack=1 Win=17280 Len=0 MSS=1440 WS=0
<font color=#0000ff>   1759 16.032952   192.168.1.61      203.81.29.137     TCP      14023 &gt; http [FIN, ACK] Seq=3151 Ack=367918 Win=257484 Len=0
</font>   1761 16.068296   203.81.29.137     192.168.1.61      TCP      http &gt; 14023 [FIN, ACK] Seq=367918 Ack=3152 Win=17280 Len=0
<font color=#0000ff>   1779 16.983042   192.168.1.61      203.81.29.137     TCP      14026 &gt; http [FIN, ACK] Seq=1602 Ack=208150 Win=257760 Len=0</font>
1781 17.016836   203.81.29.137     192.168.1.61      TCP      http &gt; 14026 [FIN, ACK] Seq=208150 Ack=1603 Win=17280 Len=0
</pre>
</div>
<p>
<p>在这种情况下，数据包的数量非常大，连接也很多，由于没有cache功能，每次打开页面都需要重新下载所有的资源文件。
<p><strong>4. </strong><strong>选择ADE</strong>
<p>结果：共获取数据包525个，建立连接3个，断开连接3个(不再标识了，syn即为连接请求，fin即为断开请求）</p>
<div style="BORDER-RIGHT: gray 1px solid; PADDING-RIGHT: 4px; BORDER-TOP: gray 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 8pt; PADDING-BOTTOM: 4px; MARGIN: 20px 0px 10px; OVERFLOW: auto; BORDER-LEFT: gray 1px solid; WIDTH: 97.5%; CURSOR: text; LINE-HEIGHT: 12pt; PADDING-TOP: 4px; BORDER-BOTTOM: gray 1px solid; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BACKGROUND-COLOR: #f4f4f4; max-height: 200px">
<pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; BORDER-BOTTOM-STYLE: none">No.     Time        Source            Destination       Protocol Info
1 0.000000    192.168.1.61      203.81.29.137     TCP      14189 &gt; http [SYN] Seq=0 Len=0 MSS=1460 WS=2
2 0.033657    203.81.29.137     192.168.1.61      TCP      http &gt; 14189 [SYN, ACK] Seq=0 Ack=1 Win=17280 Len=0 MSS=1440 WS=0
6 0.100636    192.168.1.61      203.81.29.137     TCP      14190 &gt; http [SYN] Seq=0 Len=0 MSS=1460 WS=2
9 0.133703    203.81.29.137     192.168.1.61      TCP      http &gt; 14190 [SYN, ACK] Seq=0 Ack=1 Win=17280 Len=0 MSS=1440 WS=0
429 3.383748    192.168.1.61      203.81.29.137     TCP      14190 &gt; http [FIN, ACK] Seq=1852 Ack=150284 Win=257484 Len=0
431 3.418556    203.81.29.137     192.168.1.61      TCP      http &gt; 14190 [FIN, ACK] Seq=150284 Ack=1853 Win=16998 Len=0
471 4.352071    192.168.1.61      203.81.29.137     TCP      14189 &gt; http [FIN, ACK] Seq=1504 Ack=235576 Win=257760 Len=0
472 4.380312    192.168.1.61      203.81.29.137     TCP      14192 &gt; http [SYN] Seq=0 Len=0 MSS=1460 WS=2
474 4.389778    203.81.29.137     192.168.1.61      TCP      http &gt; 14189 [FIN, ACK] Seq=235576 Ack=1505 Win=17280 Len=0
476 4.413220    203.81.29.137     192.168.1.61      TCP      http &gt; 14192 [SYN, ACK] Seq=0 Ack=1 Win=17280 Len=0 MSS=1440 WS=0
522 5.078068    192.168.1.61      203.81.29.137     TCP      14192 &gt; http [FIN, ACK] Seq=409 Ack=35882 Win=257760 Len=0
524 5.115099    203.81.29.137     192.168.1.61      TCP      http &gt; 14192 [FIN, ACK] Seq=35882 Ack=410 Win=16872 Len=0
</pre>
</div>
<p>
<p>在这种情况下，cache发挥作用，数据包对比第三种情况大大减少，几乎等于打开一次首页的数据量（449个数据包），只有第一次打开页面需要完整下载页面（包括资源文件），后面的三次打开页面都只要下载HTML页面（不包括资源文件）。
<p><strong></strong>
<p><strong>5. </strong><strong>选择ADEF</strong>
<p>选择F之后我们看看结果：共获取数据包942个，建立连接4个，断开连接4个</p>
<div style="BORDER-RIGHT: gray 1px solid; PADDING-RIGHT: 4px; BORDER-TOP: gray 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 8pt; PADDING-BOTTOM: 4px; MARGIN: 20px 0px 10px; OVERFLOW: auto; BORDER-LEFT: gray 1px solid; WIDTH: 97.5%; CURSOR: text; LINE-HEIGHT: 12pt; PADDING-TOP: 4px; BORDER-BOTTOM: gray 1px solid; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BACKGROUND-COLOR: #f4f4f4; max-height: 200px">
<pre style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; BORDER-BOTTOM-STYLE: none">No.     Time        Source            Destination       Protocol Info
1 0.000000    192.168.1.61      203.81.29.137     TCP      14292 &gt; http [SYN] Seq=0 Len=0 MSS=1460 WS=2
2 0.034524    203.81.29.137     192.168.1.61      TCP      http &gt; 14292 [SYN, ACK] Seq=0 Ack=1 Win=17280 Len=0 MSS=1440 WS=0
6 0.102314    192.168.1.61      203.81.29.137     TCP      14294 &gt; http [SYN] Seq=0 Len=0 MSS=1460 WS=2
9 0.139752    203.81.29.137     192.168.1.61      TCP      http &gt; 14294 [SYN, ACK] Seq=0 Ack=1 Win=17280 Len=0 MSS=1440 WS=0
426 3.791111    192.168.1.61      203.81.29.137     TCP      14294 &gt; http [FIN, ACK] Seq=1852 Ack=150284 Win=257484 Len=0
428 3.824970    203.81.29.137     192.168.1.61      TCP      http &gt; 14294 [FIN, ACK] Seq=150284 Ack=1853 Win=16998 Len=0
468 6.213276    192.168.1.61      203.81.29.137     TCP      14292 &gt; http [FIN, ACK] Seq=1504 Ack=235576 Win=257760 Len=0
469 6.244052    192.168.1.61      203.81.29.137     TCP      14297 &gt; http [SYN] Seq=0 Len=0 MSS=1460 WS=2
471 6.249564    203.81.29.137     192.168.1.61      TCP      http &gt; 14292 [FIN, ACK] Seq=235576 Ack=1505 Win=17280 Len=0
473 6.279647    203.81.29.137     192.168.1.61      TCP      http &gt; 14297 [SYN, ACK] Seq=0 Ack=1 Win=17280 Len=0 MSS=1440 WS=0
479 6.374967    192.168.1.61      203.81.29.137     TCP      14298 &gt; http [SYN] Seq=0 Len=0 MSS=1460 WS=2
484 6.419597    203.81.29.137     192.168.1.61      TCP      http &gt; 14298 [SYN, ACK] Seq=0 Ack=1 Win=17280 Len=0 MSS=1440 WS=0
897 9.858493    192.168.1.61      203.81.29.137     TCP      14297 &gt; http [FIN, ACK] Seq=1550 Ack=159770 Win=257484 Len=0
899 9.895188    203.81.29.137     192.168.1.61      TCP      http &gt; 14297 [FIN, ACK] Seq=159770 Ack=1551 Win=17280 Len=0
939 12.840029   192.168.1.61      203.81.29.137     TCP      14298 &gt; http [FIN, ACK] Seq=1806 Ack=226090 Win=257760 Len=0
941 12.876120   203.81.29.137     192.168.1.61      TCP      http &gt; 14298 [FIN, ACK] Seq=226090 Ack=1807 Win=17076 Len=0
</pre>
</div>
<p>在这种情况下，由于选择了F，在迭代的时候清除了cache，所以每次迭代都需要重新下载资源文件。数据包差不多等于第三种情况的一半，约等于打开两次首页的数据量（449&#215;2个数据包）。 </p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana">6. 关于BC选项
<p style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana">C的解释（Check for newer versions of stored pages every visit to the page）
<p style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana">C比较容易理解，类似IE设置中的每次检查，如果不设置C，LR对于已经cache的文件就不会重新向服务器请求，如果选择C，你就可以在数据包中发现很多304信息。
<p style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana">B的解释（Cache URLs requiring content(HTMLs)）
<p style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana">LR对于资源文件的cache并不会真正cache在内存中或者在磁盘上，这个选项表示：对于一些需要用到的关联，校验，页面解析内容真正cache在内存中，减少客户端的重复工作。
<p style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana">当然如果你想把GIF也cache到内存中，你可以在Advanced中设置，选择Specify URL requiring content in addition to HTML pages，加入条目image/gif，并勾选。当Vuser运行的时候，你可以对比一下mmdrv.exe进程的内存消耗（内存占用会更多）。
<p style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana">四： 结论</p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana">通过上面的测试分析，我们大概知道了每个选项的真正含义，你需要根据你的测试目的来选择合适的设置：
<p style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana">1、 对于一个具体的应用测试，对于前端Web Server不可忽略，缺省设置非常合适，不需要调整（有时候需要考虑把C选上）
<p style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana">注意：很多人在录制脚本的时候，习惯把登入操作放到vuser_init中，这时候缺省设置可能会抛错，建议把这类的操作都放入到action中
<p style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana">2、 如果你更关注后端应用服务器的性能或者说做一些架构的验证分析，那你缺省设置对于你来说就不合适了，你需要选择取消所有的设置项。
<p style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana">当然你也可以根据自己的具体情况做不同调整，但是一定要真正理解这些选项的具体含义才能做到不犯错误</p>
<img src ="http://www.cnitblog.com/andycai/aggbug/59545.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/andycai/" target="_blank">枫晰落扬</a> 2009-06-22 17:31 <a href="http://www.cnitblog.com/andycai/archive/2009/06/22/59545.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>（转）Loadrunner并发用户与集合点深入的讨论（经典） </title><link>http://www.cnitblog.com/andycai/archive/2009/06/22/59544.html</link><dc:creator>枫晰落扬</dc:creator><author>枫晰落扬</author><pubDate>Mon, 22 Jun 2009 09:08:00 GMT</pubDate><guid>http://www.cnitblog.com/andycai/archive/2009/06/22/59544.html</guid><wfw:comment>http://www.cnitblog.com/andycai/comments/59544.html</wfw:comment><comments>http://www.cnitblog.com/andycai/archive/2009/06/22/59544.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/andycai/comments/commentRss/59544.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/andycai/services/trackbacks/59544.html</trackback:ping><description><![CDATA[<p id=art style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana" width=100%>看到51上三个高手Zee, 大漠飞鹰，xingcyx的一场非常精彩的关于并发用户数和集合点的讨论，很有意义。如果对这两个概念不清楚的朋友，一定要仔细领悟了。 <br>故事开始于xingcyx的一番话： <br>声明：以下的问答是我根据实际工作经验和通过各种途径得到的信息而整理的，其回答内容主要代表我个人观点，并非标准答案，读者如有不同意见，欢迎批评指教。 <br>Q：并发用户数和集合点有必然联系吗？在性能测试中必须使用集合点来测试吗？ <br>A：并发用户数，顾名思义，就是同时操作的用户，这里的&#8220;操作&#8221;可以指对系统真正的操作，也可以只是连接（此时通常叫作&#8220;并发连接数&#8221;），而集合点是一种特殊情况下的并发，多用于测试系统在瞬间加压的表现。因此，并发用户数和集合点有联系，但并非必然的联系，在测试并发用户的性能测试场景中，可以不必设置集合点，这将视测试目标和测试策略而定。 <br><br>Q：不设置集合点的测试，能代表是&#8220;并发&#8221;操作吗？ <br>A：有这样一种说法，设置集合点是为了确保 &#8220;严格意义上&#8221;的并发，其实从本质上看，这主要是一个看问题的粒度大小的问题。集合点的作用是通过工具的控制，确保一个请求严格的&#8220;同时&#8221;从前台提交到后台。可是如果微观地看，是不存在严格意义上的并发的，即使在客户端通过设置集合点的方式将100个请求同时提交到后台，经过网络上的传输消耗，可能它们并不是同时到达的，而即便100个请求同时到达服务器端，受到中间件和应用系统、数据库的各种连接池、缓冲区， CPU处理队列等的限制，也可能在服务器端产生等待的。因此，严格意义上的&#8220;并发&#8221;可以说是不存在的，我们需要做的是在可以接受的粒度范围内取得一个最佳的平衡点，站在这个平衡点的层面上去看待&#8220;并发&#8221;这个问题。 <br>性能测试无非有两个目的，一是评测，二是调优。 <br>在以评测为目的的性能测试中，用户更关心的是业务上的并发，也就是真实业务场景的并发情况，这种情况下只要按照业务操作的模式去设置场景就可以了，并不需要设置集合点。 <br>集合点是一种特殊情况下的并发，通常是在以调优为目的的性能测试中才会用得到，目的是有针对性地对某个可能存在性能问题的模块施压，以便找到性能瓶颈。 <br>集合点在我实际的测试过程中用得并不多。 <br><br>Zee： <br>关于集合点，我一直觉得没有什么可争议的，这两天看到几个帖子在说这个东西。有一点我想大家都是认同的：集合是相对的集合。 <br>集合是在产生负载的机器上的集合。如果考虑网络，中间件等等的因素。到服务器肯定不会是同一时间点，那于是就有人希望能更接近在服务器端实现并发的操作。认为这才是真正的并发。 <br>我觉得首先要做的是分析应用系统，到底你想做的是什么。 <br>比如说，你想让某个URL能达到1000个同时请求的目的。这样的目标就比较明确了。 <br>而在讨论集合点的时候，大家很少拿具体的东西来举个例子。这样有点说不清楚。要想达到并发。我觉得应该更具体的分析应用。再来定下目标来做。而不是一直在讨论LR如何能实现。 <br><br>Xingcyx： <br>因为在实践中，我经常会碰到这样的情况： <br>测试需求说，该系统应支持200个并发用户。 <br>那么我们就开始测，录制好脚本，下一步就是在场景中执行了，在控制台中设置某脚本并发用户数为200，测试结果为通过或未通过。此时争议就来了：这200个用户的脚本如果执行通过，测试结果可以接受，是否可以说这个系统支持了200个并发呢？ <br><br>大漠飞鹰： <br>测试前肯定要了解需求，或者说是测试目的。 <br>就说明&#8220;该系统应支持200个并发用户。&#8221;， 这种需求严格意义上来说是不合格的需求，因为描述不够清晰，过于模糊等。 <br>当然，在实际中，这类需求到了我们测试人的手里也是常有的，一般就当普遍的情况来出来。 <br><span style="COLOR: red">比如，web系统，就按2/5/8，或者2/5/10来处理，如果能通过就pass，否则就让开发人员调优。 <br><br></span>Zee： <br>从集合点到并发数的确定。我觉得这其中的转换最主要的地方在于分析业务。 <br>比如用户说了：要求200个用户并发。 <br><span style="COLOR: red">那要问清楚的就是，200个用户是个什么样的比例，有多少人在干这个，有多人在干那个，按百分比，用不同的脚本来跑。</span> <br>那再来想一下客户。他关心的是200个用户在服务器上同时点同一个URL或者某一个相同的资源？这个客户我想大多不会关心。而他想要的就是我有200个用户在线的时候。响应时间不至于让人不可接受。至于多少才不可接受。按平常人的心理承受能力来衡量就可以了。再或者有其他的说法，就是200人同时点同一 URL或者请求同一资源，我想可以通过计算来增加vuser的数量或者集合呀，或者其他的方法来努力的向这个目标靠近。 <br>如果说非要在服务器上这个时间并发这么多的用户。我觉得只能尽量把它缩小到一个时间段内。而这样做我觉得并不是从分析业务出发的， <br><br>Xingcyx： <br>楼上说的是最常见的一种情况，在这种测试需求下，我会设置一个混合场景来测试，也就是按照做不同事情的用户的百分比去设置。 <br>但会有另外一些时候，并不是一个实际的应用系统，可能是一个开发平台，或者工作引擎等，它涉及的性能的概念会更偏向底层一些，这个时候可能就不是像一般的应用系统那样，设置一个混合场景来测试那么简单了。 <br><br>大漠飞鹰： <br>一般说的并发数指的是业务并发，而不是服务器端的并发数。<br><span style="COLOR: red">理解：业务并发分相对的和绝对的，分同时在线和同时触发，是从功能角度上去分析，如对某个功能操作进行并发测试；服务器并发是从服务器端看，接收到并发请求，一般是绝对并发，客户端绝对的无间隔并发在服务器端不一定无间隔并发，因为有网络等原因，到了服务器端往往就不是绝对并发了，是从技术角度去分析。</span></p>
<img src ="http://www.cnitblog.com/andycai/aggbug/59544.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/andycai/" target="_blank">枫晰落扬</a> 2009-06-22 17:08 <a href="http://www.cnitblog.com/andycai/archive/2009/06/22/59544.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>使用LoadRunner录制脚本时如何选择合适的协议？</title><link>http://www.cnitblog.com/andycai/archive/2009/06/22/59543.html</link><dc:creator>枫晰落扬</dc:creator><author>枫晰落扬</author><pubDate>Mon, 22 Jun 2009 08:16:00 GMT</pubDate><guid>http://www.cnitblog.com/andycai/archive/2009/06/22/59543.html</guid><wfw:comment>http://www.cnitblog.com/andycai/comments/59543.html</wfw:comment><comments>http://www.cnitblog.com/andycai/archive/2009/06/22/59543.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/andycai/comments/commentRss/59543.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/andycai/services/trackbacks/59543.html</trackback:ping><description><![CDATA[<p style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana"><a href="http://creativecommons.org/licenses/by/3.0/deed.zh" target=_blank><span style="COLOR: #000000">版权声明</span></a><span style="COLOR: #000000">：转载时请以超链接形式标明文章原始出处和作者信息及</span><a href="http://bangzhuzhongxin.blogbus.com/logs/11205960.html" target=_blank><span style="COLOR: #000000">本声明</span></a><br><a href="http://landing.blogbus.com/logs/19555215.html"><span style="COLOR: #000000">http://landing.blogbus.com/logs/19555215.html</span></a></p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana">【转载1】</p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana">正确选择协议，就要熟悉被测试应用的技术架构。以下列出一些LoadRounner支持的协议：</p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana">一般应用：C Vuser、VB Vuser、VB Script&nbsp; Vuser、JAVA Vuser、JavaScript Vuser<br>电子商务：WEB（Http/Html)、FTP、LDAP、Palm、Web/WinsocketDual Protocol<br>客户端/服务器：MS SQL Server、ODBC、Oracle、DB2、Sybase CTlib、Sybase DBlib、Domain Name Resolution(DNS)、Windows Socket<br>分布式组件：COM/DCOM、Corba-Java、Rmi_Java<br>EJB：EJB、Rmi_Java<br>ERP/CRP：Oracle NCA、SAP-Web、SAPGUI、SAPGUI/SAP-Web Dual Protocol、PropleSoft_Tuxedo、Siebel Web、Siebel-DB2 CLI、Sieble-MSSQL、Sieble Oracle <br>遗留系统：Terminal Emulation (RTE)<br>Mail 服务：Internet Messaging(IMAP)、MS Exchange(MAPI)、POP3、SMTP<br>中间件：Jacada、Tuxedo 6、Tuxedo 7<br>无线系统：i-mode、voiceXML、WAP<br>应用部署软件：Citrix_ICA流：Media Plays(MMS)、Real&nbsp; </p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana">【转载2】</p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana">一段对于loadrunner协议选择的经典解答协议是数据在网络中传输的结构模式。协议不同，其数据报文的结构也有所不同。 协议是有层次的，一般我们从ip层开始，往上有TCP协议层，UDP协议层，而TCP和UDP协议层上又有http协议层，ftp协议层，smtp协议层等我们在lr中看到的这些应用层的协议。 其实这些高层协议都是对底层协议进行的进一步封装。举个简单例子，本来IP协议的数据报文是无序，不是可靠传输的，在其数据报文外面增加了报文序号，报文状态等数据段就构成了TCP协议层。 所以我们很多网络应用，没有找到合适的协议，就用winsock来录制，那是肯定没有问题的。因为几乎所有的网络传输中都是基于tcp协议或udp协议的，而socket正是这一级上的概念。但是由于socket协议级别太低，你录下来的东西是很难理解的，都是socket，port，data之类的东西。所以，我们尽量用高层协议来录制，我们就能看懂了。</p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana">话要再说回来，解决一下具体的问题。我们看到一个软件体系架构，应该怎样选择录制协议呢？说到这里，我要说一下自己对lr录制机理的理解（我没有接触过lr内核，只是凭猜测和推断）。在录制时，lr应该会对你从本机发出去的数据进行截包，并拆包。因为我们知道协议的不同就是体现在数据包的结构不同，lr应该通过对包结构的分析，判断是不是它支持的协议，对包数据的分析，来获取用户发送的东西。 比如你用ftp的协议去录制一个访问网页的IE操作，那肯定是无所收获的。因为lr没有在网络截获到ftp协议格式的包，都是http协议格式的包，它不认，当然就是一个录制为空的结果了。 现在我们弄懂了这个事情，就知道该如何选择协议了。看见很多人关心lr是不是支持mysql协议。我认为要寻找的答案的思路是这样的：<br><br>1、首先弄清mysql协议和其他数据库协议的关系，看能不能用其它数据库协议录制。但其实oracle的cs协议是oracle独有自己开发的协议，sqlserver也是一样，而mysql又与这几大产品又不是隶属关系，其脚本录制的可能性很小。<br>2、mysql协议的底层是基于什么协议的，如果直接构建在tcp协议上，lr又不支持mysql协议，那只能考虑用低一点的协议录录看，即socket。如果mysql协议是构建在odbc协议上的，那么就可能用lr的odbc api来写。&nbsp; </p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana">【转载3】</p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana">很多时候一提到不是基于浏览器的应用，很多人就会想到用WinSocket协议来录制，仿佛Form窗体都可以用Winsocket 。从道理上讲网络通讯的底层都是基于Socket的，例如TCP、UPD等，似乎所有的程序都可以用Socket协议来录制。但是事实不是这样的，因为选择的协议决定了LoadRunner如何捕获数据包。否则会多捕获很多无用的数据。因此，不是所有的程序都是适合WinSocket协议的。实际上，那些基于Socket开发的应用才真正适合Socket协议来进行录制。其他的，例如基于数据库的应用，就不太时候Socket协议，甚至可能录制不到脚本。很多C/S程序，一定要选择合适的协议。根据作者的经验，C/S的程序多数需要手工开发很多脚本，因为录制的很多回放时候或多或少都会有些问题，但是可以参考录制的结果。所以测试一个程序，一定要搞清楚开发人员用了什么技术、数据流是什么协议封装的。理论上来说我们在对一个系统做性能测试以前，要先和开发人员了解一下他们在开发过程中都用了些什么技术，数据流是用什么协议封装的，还要了解我们要测试的系统的网络结构，服务器的配置等问题；还有就是要知道系统客户端和第一服务器间的协议，这中间就涉及到一个中间件的问题。另外我们要知道协议的选择直接关系到LR会捕获到什么样的数据包。这些是进行性能测试的基础。 下面说几个测试的原则（都是自己遇到过的，呵呵，没遇到过的就不知道了）：</p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana">1、一般情况下b/s构架的只要 选择WEB（Http/Html)协议就可以了，如果有中间件的则选择中间件服务器的协议 ；<br>2、C/S结构，可以根据后端数据库的类型来选择。如SybaseCTLib协议用于测试后台的数据库为Sybase的应用；MS SQL Server协议用与测试后台数据库为 SQL Server的应用；<br>3、一般不是基于浏览器的，对于一些没有数据库的Windows应用，我们在测试的过程中都会选择WinSocket协议来录制，理论上来讲我们这样选择是正确的，但我们要知道在录制的时候所选择的协议就决定了LR如何捕获数据包，如果我们选择错误了，将会捕获到一些无用的数据包。cs结构是比较复杂的，在这里我要提醒大家，一定要搞清楚cs是client-database还是client-server-database结构的，只有这样我们才能够决定是选择WinSocket协议还是sql协议，或者说选择多个协议；当然协议的选择也是一个探索的过程，只要能够得到我们想要的结果，那就是正确的。还有一点，我们在做性能测试的时候应该是有测试重点的，呵呵。<br>4、关于单协议和双协议，我只知道IE6内核的浏览器在录制脚本的时候要选择单协议，而IE7内核的浏览器在录制脚本的时候要使用双协议。&nbsp;</p>
<img src ="http://www.cnitblog.com/andycai/aggbug/59543.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/andycai/" target="_blank">枫晰落扬</a> 2009-06-22 16:16 <a href="http://www.cnitblog.com/andycai/archive/2009/06/22/59543.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Loadrunner Analysis——Web Page Diagnostics </title><link>http://www.cnitblog.com/andycai/archive/2009/06/22/59541.html</link><dc:creator>枫晰落扬</dc:creator><author>枫晰落扬</author><pubDate>Mon, 22 Jun 2009 07:35:00 GMT</pubDate><guid>http://www.cnitblog.com/andycai/archive/2009/06/22/59541.html</guid><wfw:comment>http://www.cnitblog.com/andycai/comments/59541.html</wfw:comment><comments>http://www.cnitblog.com/andycai/archive/2009/06/22/59541.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/andycai/comments/commentRss/59541.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/andycai/services/trackbacks/59541.html</trackback:ping><description><![CDATA[<p style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana">Web Page Diagnostics （以下简称WPD），这是LR Analysis中非常重要的一块，搞清楚这部分的内容会让你少走很多弯路，很多环境问题都可以通过它来定位，比如客户端，网络。通过它可以你可以比较好的来定位是环境的问题还是应用本身的问题，当然更重要的是Web页面本身的问题。</p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana">WPD包括下面几个图表：</p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana"><strong>Web Page Diagnostics</strong>&nbsp;&nbsp;&nbsp;&nbsp; 这是张总图，包括下面几张Over Time图的内容。<br><span>页面细分时间的解释：<br><wbr><wbr><wbr><wbr>1、DNS解析时间：浏览访问一个网站的时候，一般用的是域名，需要DNS服务器把域名解析为IP地址，这个过程就是域名解析时间。<br>2、Connection：解析出Web Server的IP地址后，浏览器请求被发送到了一个Web Server，然后浏览器和Web Server 之间需要建立一个初始化的HTTP连接，服务器端需要做两件事：一个是接收请求，二是分配进程。建立该连接的过程就是Connection。<br>3、First　Buffer：建立连接后，从Web Server发出第一个数据包，通过网络传输到客户端，浏览器成功接收第一个字节的时间就是First Buffer。<br>4、Receive：从浏览器接收第一个字节起，成功收到最后一个字节，下载完成为止。<br>5、Client Time：请求在客户端浏览器延迟的时间。<br></span><!--   --><strong><br>Page Component Breakdown</strong>&nbsp;&nbsp;&nbsp;&nbsp; 页面中每个元素的平均响应时间占整个页面响应时间的百分比</p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana"><strong>Page Component Breakdown(Over Time)</strong>&nbsp;&nbsp;&nbsp;&nbsp; 在整个测试过程中，任意一秒内页面中每个元素的响应时间（例如在runtime中设置了browser cache，页面中的资源文件就只会在第一次下载，后面的页面响应时间也就不包括这些元素的时间，这在Page Component Breakdown中是看不出来的，因为Page Component Breakdown是整个测试期间内的平均时间。当然，是否启用了cache，通过over time图就能看出来）</p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana"><strong>Page Download Time Breakdown</strong>&nbsp;&nbsp;&nbsp; 页面中每个元素的响应时间分割图，响应时间被分割为以下几个部分：DNS Resolution,Connection,First Buffer,SSL Handshaking,Receive,FTP Authentication,Client,Error</p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana"><strong>Page Download Time Breakdown(Over Time)</strong>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 在整个测试过程中，任意一秒内页面中每个元素的响应时间分割图</p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana"><strong>Time to First Buffer Breakdown&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </strong>First Buffer Time时间分割为Network Time和Server Time，客户端发送http请求包直到接收到服务器端的应答包（ACK）的平均时间为Network Time，从接收到ACK到完成First Buffer接收的平均时间为Server Time。</p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana">----------------------------------------------------------------------------------------------------------------------------------------------------------------------<br>原文：<strong></p>
<p class=pRegtext>Network time is defined as the average amount of time that passes from the moment the first HTTP request is sent until receipt of ACK. </p>
<p class=pRegtext>Server time is defined as the average amount of time that passes from the receipt of ACK of the initial HTTP request (usually GET) until the first buffer is successfully received back from the Web server. </p>
<p class=pNote>Note: Because server time is being measured from the client, network time may influence this measurement if there is a change in network performance from the time the initial HTTP request is sent until the time the first buffer is sent. The server time displayed, therefore, is estimated server time and may be slightly inaccurate. <br>----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------<br>Time to First Buffer Breakdown(Over Time)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </strong>基本同上，任意一秒内的。这个图非常重要，也最复杂，这里的值不绝对，当网络状况不好的时候，server time很可能包括网络时间，因为很多页面元素比较小（小于4k的样子），在First Buffer就完成传输，所以一定要注意分析 </p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana"><strong>Downloaded Component Size(KB)</strong>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 页面中每个元素的大小（KB）</p>
<img src ="http://www.cnitblog.com/andycai/aggbug/59541.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/andycai/" target="_blank">枫晰落扬</a> 2009-06-22 15:35 <a href="http://www.cnitblog.com/andycai/archive/2009/06/22/59541.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>nmon----分析AIX和Linux性能的免费工具</title><link>http://www.cnitblog.com/andycai/archive/2009/06/18/59469.html</link><dc:creator>枫晰落扬</dc:creator><author>枫晰落扬</author><pubDate>Thu, 18 Jun 2009 03:02:00 GMT</pubDate><guid>http://www.cnitblog.com/andycai/archive/2009/06/18/59469.html</guid><wfw:comment>http://www.cnitblog.com/andycai/comments/59469.html</wfw:comment><comments>http://www.cnitblog.com/andycai/archive/2009/06/18/59469.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.cnitblog.com/andycai/comments/commentRss/59469.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/andycai/services/trackbacks/59469.html</trackback:ping><description><![CDATA[<p style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana">nmon 工具可以帮助在一个屏幕上显示所有重要的性能优化信息，并动态地对其进行更新。这个高效的工具可以工作于任何哑屏幕、telnet 会话、甚至拨号线路。另外，它并不会消耗大量的 CPU 周期，通常低于百分之二。在更新的计算机上，其 CPU 使用率将低于百分之一。</p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana">　　使用哑屏幕，在屏幕上对数据进行显示，并且每隔两秒钟对其进行更新。然而，您可以很容易地将这个时间间隔更改为更长或更短的时间段。如果您拉伸窗口，并在 X Windows、VNC、PuTTY 或类似的窗口中显示这些数据，nmon 工具可以同时输出大量的信息。</p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana">　　nmon 工具还可以将相同的数据捕获到一个文本文件，便于以后对报告进行分析和绘制图形。输出文件采用电子表格的格式 (.csv)。</p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana">　　<strong>nmon 工具运行于：</strong></p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana">　　* AIX&#174; 4.1.5、4.2.0、4.3.2 和 4.3.3（nmon Version 9a：该版本的功能已经确定，并且不会对其进行进一步的开发。）</p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana">　　* AIX 5.1、5.2 和 5.3（nmon Version 10：该版本现在支持 AIX 5.3 和基于 POWER5&#8482; 处理器的计算机，并且提供了 SMT 和共享 CPU 微分区的支持。）</p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana">　　* pSeries&#174; p5 和 OpenPower&#8482; 上的 Linux&#8482; SUSE SLES 9、Red Hat EL 3 和 4、Debian</p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana">　　* Linux SUSE、Red Hat 和许多最新的 x86（32 位模式的 Intel 和 AMD）上的发布版</p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana">　　* zSeries&#174; 或 mainframe 上的 Linux SUSE 和 Red Hat</p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana">　　<strong>安装该工具</strong></p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana">　　该工具是一个独立的二进制文件（不同的 AIX 或 Linux 版本中该文件也有所不同），您可以在五秒钟内完成该工具的安装，如果您的输入速度更快的话，也许时间更短。安装过程非常简单：</p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana">　　* 将 nmonXXX.tar.Z 文件复制到计算机。如果使用 FTP，请记住使用二进制模式</p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana">　　注意：示例中的 XXX 由实际的版本代替。</p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana">　　* 要解压该文件，可以运行 uncompress nmonXX.tar.Z。</p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana">　　* 要提取该文件，可以运行 tar xvf nmonXX.tar。</p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana">　　* 阅读自述文件。</p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana">　　* 要启动 nmon 工具，输入 nmon。<br>　* 如果您是 root 用户，可能需要输入 ./nmon。<br></p>
<p>nmon_analyser 工具可以帮助对通过 <a href="http://www.ibm.com/developerworks/eserver/articles/nmon.html" cmImpressionSent="1"><u><font color=#5c81a7>nmon 性能工具</font></u></a>捕获的性能数据进行分析。它允许性能专家完成下列任务：
<ul>
    <li>以电子表格的形式查看相应的数据
    <li>消除&#8216;错误的&#8217;数据
    <li>生成向客户进行演示的图形 </li>
</ul>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana">该工具还将为输出中的每个主要部分自动地生成相应的图形。 </p>
<p>&nbsp;</p>
<p><span>另外，该工具将对 nmon 数据进行分析以生成下列信息： </span>
<ul>
    <li><span>热点分析的加权平均值的计算 </span>
    <li><span>用处理器与收集间隔的比值表示的 CPU 使用率的分布情况，该信息有助于识别单线程的进程 </span>
    <li><span>IBM TotalStorage&#174; Enterprise Storage Server (ESS) vpaths 的附加部分显示了每日各时段的设备繁忙状态、读取传输大小和写入传输大小 </span>
    <li><span>每日各时段的系统总数据速率，并对其进行调整以排除对 EMC hdiskpower 设备的重复计算，该信息有助于识别 I/O 子系统和 SAN（存储局域网络）瓶颈 </span>
    <li><span>EMC Corporation (EMC) hdiskpower 和 ESS DS8000（以前的 FAStT）dac 设备独立的工作表 </span>
    <li><span>分析内存使用率，以显示计算性和非计算性页面之间的差异 </span>
    <li><span>每个网络适配器的每日各时段总数据速率 </span>
    <li>显示每条命令的平均 CPU 和内存使用率的 TOP 部分汇总数据 </li>
</ul>
<p><a href="http://blog.csdn.net/chinalinuxzend/archive/2009/06/03/4238526.aspx">http://blog.csdn.net/chinalinuxzend/archive/2009/06/03/4238526.aspx</a></p>
<img src ="http://www.cnitblog.com/andycai/aggbug/59469.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/andycai/" target="_blank">枫晰落扬</a> 2009-06-18 11:02 <a href="http://www.cnitblog.com/andycai/archive/2009/06/18/59469.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>LoadRunner脚本的参数设置-block篇</title><link>http://www.cnitblog.com/andycai/archive/2009/06/17/59454.html</link><dc:creator>枫晰落扬</dc:creator><author>枫晰落扬</author><pubDate>Wed, 17 Jun 2009 08:03:00 GMT</pubDate><guid>http://www.cnitblog.com/andycai/archive/2009/06/17/59454.html</guid><wfw:comment>http://www.cnitblog.com/andycai/comments/59454.html</wfw:comment><comments>http://www.cnitblog.com/andycai/archive/2009/06/17/59454.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/andycai/comments/commentRss/59454.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/andycai/services/trackbacks/59454.html</trackback:ping><description><![CDATA[<p style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana">一、问题引入：当我们在Run中添加一个Block0，并在Block0中添加需要的Action，同时给Block0设置运行逻辑，比如按顺序运行10次(Run Logic为Sequential，Iterations为10)。如果Block0中的Action含有参数，那么该参数应该如何设置？</p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana">&nbsp;&nbsp; 其实参数设置最主要的有三个：Select next row、Update value on和When out of values。其中Update value on的值可选的是Each iteration、Each occurrence和Once。而它们的意思分别如下:</p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana">(1)Each iteration是指每次迭代时更新值，但这个迭代其实只针对Run-time Settings中，选项Run Logic的Run的Iterations，对Run中的Block是不起作用的。也就是说，当Run迭代了10次，同时Run中的Block0也迭代10次的时候，每Run一次，会更新一个参数值，而Block0迭代10次时都使用这个参数值，不会再去更新参数值了。也可以这样理解，每一个Block其实相当于我们自己在脚本里面写一个for循环，去循环调用Block中的Action，此时Each iteration当然只对Run有效。</p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana">(2)Each occurrence是指每次参数出现时就更新值。</p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana">(3)Once是指只取值一次。</p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana">显然，在这种情况下，Update value on只能选择Each occurrence。另外当我们选择了unique和Each occurrence后，LR要求我们设置Allocate &#8230;values for each Vuser，这个值与虚拟用户数和参数化值有关，例如：设置Allocate 5 values for each Vuser，虚拟用户数是10个，那么参数化的值至少需要50个<span style="COLOR: red">（前提是选择了unique选项）</span>。<br>二、Each occurrence带来的问题：</p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana">1． 问题引入：</p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana">当我们在进行某个参数设置时，有时Update value on不得不选择Each occurrence（类似一中所述情况），但是，如果Action中有多个相同的参数时，此时参数会在每次出现就更新值，这不是我们所期望的，应为每次执行Action时，同一个参数的值应该都是一样的，否则实际业务操作将运行失败。</p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana">2． 解决方案：</p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana">其实解决方法很简单，所有相同的参数以不同名字命名（如，P1,P2,P3&#8230;），每个参数指向同一个Dat文件，对参数P1进行相应的设置，接下来其他参数的Select next row选择Same line as P1，这样所有的参数的值的更新机制和P1一样，每次行Action时，同一个参数的值就都是一样了。</p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana">三、Dat文件记录读取原理：</p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana">Controller在运行时，会首先初始化Vuser脚本，以检查脚本是否有语法错误，以及为各个虚拟用户分配参数值。而分配参数值的时候，本人猜测它是根据需要读取的参数数量循序或者随机读取Dat的记录（一行为一个记录），当记录个数不足时，就会抛出错误提示。因此我们在选择文件源是，就要多加小心，以防止Controller自己&#8220;错乱方寸&#8221;：</p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana">1．不同参数（对应相同的列）对应的Dat文件要不同，若想指向同一文件，则参数设置&#8220;Select next row&#8221;应选择&#8220;Same line as&#8230;&#8221;</p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana">2．不同Vuser脚本不要使用同一个Dat文件。</p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana"><br>&nbsp;</p>
<img src ="http://www.cnitblog.com/andycai/aggbug/59454.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/andycai/" target="_blank">枫晰落扬</a> 2009-06-17 16:03 <a href="http://www.cnitblog.com/andycai/archive/2009/06/17/59454.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>LR录制脚本-初学者之疑问</title><link>http://www.cnitblog.com/andycai/archive/2009/06/15/59385.html</link><dc:creator>枫晰落扬</dc:creator><author>枫晰落扬</author><pubDate>Mon, 15 Jun 2009 07:45:00 GMT</pubDate><guid>http://www.cnitblog.com/andycai/archive/2009/06/15/59385.html</guid><wfw:comment>http://www.cnitblog.com/andycai/comments/59385.html</wfw:comment><comments>http://www.cnitblog.com/andycai/archive/2009/06/15/59385.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/andycai/comments/commentRss/59385.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/andycai/services/trackbacks/59385.html</trackback:ping><description><![CDATA[<p style="FONT-SIZE: 10pt">使用LR录制脚本时取消这个选项Use&nbsp;&nbsp;the percentage mode to distribute the vusers among the scripts(使用百分比模式在脚本间分配vusers)，但是不知道<br>这个选中时有什么作用？没有选中时有什么作用？<br><span><strong>answer：</strong><br>1）、这个作用就是可以按照百分比或者虚拟用户数来进行业务划分和执行。<br>2）、这个是分配用户的方式，比如说你有100个用户，在controller中同时运行2个脚本！脚本用户的分配比例是40%和60%，那么他会自动帮你设定用户数！</span><br></p>
<img src ="http://www.cnitblog.com/andycai/aggbug/59385.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/andycai/" target="_blank">枫晰落扬</a> 2009-06-15 15:45 <a href="http://www.cnitblog.com/andycai/archive/2009/06/15/59385.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>