﻿<?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/</link><description>        ------尽自己的努力，做到最好...</description><language>zh-cn</language><lastBuildDate>Mon, 04 May 2026 22:27:18 GMT</lastBuildDate><pubDate>Mon, 04 May 2026 22:27:18 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>酒桌上的潜规则,男人必学,女人必知!</title><link>http://www.cnitblog.com/andycai/archive/2009/06/26/59660.html</link><dc:creator>枫晰落扬</dc:creator><author>枫晰落扬</author><pubDate>Fri, 26 Jun 2009 07:32:00 GMT</pubDate><guid>http://www.cnitblog.com/andycai/archive/2009/06/26/59660.html</guid><wfw:comment>http://www.cnitblog.com/andycai/comments/59660.html</wfw:comment><comments>http://www.cnitblog.com/andycai/archive/2009/06/26/59660.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/andycai/comments/commentRss/59660.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/andycai/services/trackbacks/59660.html</trackback:ping><description><![CDATA[<p><span style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana">喝酒应注意的事项<wbr><wbr><br>（一）喝酒前的准备<wbr> <br><wbr>&nbsp;&nbsp;&nbsp;&nbsp;酒能伤肝，这是人人皆知道的，为了尽量减少酒精对胃和肝脏的伤害，减少脂肪肝的发生。酒前的准备工作很重要，这是能保证你在酒桌上千杯不醉的关键因素。在去赴宴之前，在家先吃点东西，让胃里有点东西垫着。那具体吃点什么好呢？一般吃点高蛋白的比较好，例如吃两个鸡蛋，喝点牛奶，豆浆等，因为这些高蛋白的食品在胃中可以和酒精结合，发生反应，减少对酒精的吸收。另外，吃点饼干，糕点等也可以，让胃里有点东西，因为空腹喝酒，酒精在胃内很容易被吸收，从而导致容易醉酒。注意，切忌用咸鱼、香肠、腊肉下酒，因为此类熏腊食品含有大量色素与亚硝胺，与酒精发生反应，不仅伤肝，而且损害口腔与食道粘膜，甚至诱发癌症。 <br>&nbsp;&nbsp;&nbsp;&nbsp;另外，对于经常喝酒或者经常陪酒的人士，可以一试一些古书上记载的方法。如清代无名氏在《调鼎集》载：&#8220;饮酒欲不醉者，服硼砂末少许，其饮葛汤，葛丸者效迟&#8221;。《千金方》：&#8220;七夕日采石菖蒲，末服之，饮酒不醉。&#8221; <br>（二）喝酒中的保护<wbr> <br>&nbsp;&nbsp;&nbsp;&nbsp;&#8220;酒过三循、菜过五味&#8221;，这是古代留下来的酒场谚语，这也从另外一方面说明了，喝酒时吃菜的重要性。在喝酒前，尽量先吃点菜，然后再喝酒，其原理和前面说的一样。严禁空腹喝酒，既容易醉，又容易伤胃。 <br>（三）喝酒后的醒酒措施<wbr> <br>&nbsp;&nbsp;&nbsp;&nbsp;喝酒后，头晕，头疼，呕吐，甚至人事不醒，醉酒者要经受很大的痛苦，这个时候需要尽快醒酒，以减少醉酒带来的痛苦，并防止有可能出现的更大的伤害。在这里教你几招醒酒的方法，简单易行，饮酒者可以根据自己的情况，选择适合自己的方法，不妨一试。 <br>1.饮服白萝卜汁：生白萝卜,洗净榨汁,稍加热服下,每次一茶杯,10分钟一次,三次可解去酒气。 <br>2.吃大白菜心：取出大白菜心切丝,一个不够取两,加少量白糖和白醋拌匀后腌渍三五分钟服下,此法很快解酒。 <br>3.服芹菜汁：鲜芹菜洗净切碎榨汁,当茶喝,连续喝三次(隔5分钟),此对酒后头痛脑胀脸红有特效。 <br>4.饮鲜桔皮水：2两鲜桔皮加1斤水煮沸，再加入少量食盐摇匀后当茶喝，一次一茶杯，5分钟再饮，三次见效。 <br>5.喝绿豆汁：绿豆2两，加水煮熟后饮，连汤带豆.如将绿豆捣碎用开水冲服有解酒效果。 <br>另外怎么来减少醉酒后引起的头疼，头晕，反胃等症状呢？下面也介绍几种食物，这是美国国家头痛研究基金会的研究人员发现，大家不妨做一个参考： <br>6.蜂蜜水治酒后头痛：蜂蜜中含有一种特殊的果糖，可以促进酒精的分解吸收，减轻头痛症状，尤其是红酒引起的头痛。另外，蜂蜜还有催眠作用，能使人很快入睡，第二天起床后也不会头痛。 <br>7.西红柿汁治酒后头晕：西红柿汁也富含特殊果糖，能帮助促进酒精分解，一次饮用300毫升以上，能使酒后头晕感逐渐消失。饮用前若加入少量食盐，还有助于稳定情绪。 <br>8.新鲜葡萄治酒后反胃、恶心：如果在饮酒前吃，还能有效预防醉酒。 <br>9.西瓜汁治酒后全身发热：西瓜具可以清热去火，能加速酒精从尿液中排出。 <br>10.柚子消除口中酒气：柚肉蘸白糖吃，对消除酒后口腔中的酒气有很大帮助。 <br>11.芹菜汁治酒后胃肠不适、颜面发红：这是因为芹菜中含有丰富的B族维生素，能分解酒精。 <br>12.酸奶治酒后烦躁：酸奶能保护胃黏膜、延缓酒精吸收，其中钙含量丰富，对缓解酒后烦躁尤其有效。 <br>13.香蕉治酒后心悸、胸闷：酒后吃1—3根香蕉，能增加血糖浓度，降低酒精在血液中的比例，达到解酒目的。同时，它还能减轻心悸症状、消除胸口郁闷。 <br>14.橄榄治酒后厌食：橄榄自古以来就是醒酒、清胃热、促食欲的&#8220;良药&#8221;，既可直接食用，也可加冰糖炖服。 <br><br>（四）<wbr>酒后忌饮茶<wbr><br>&nbsp;&nbsp;&nbsp;&nbsp;李时珍在《本草纲目》中记载：酒后饮茶伤肾，腰腿坠重，膀胱冷痛，兼患痰饮水肿。现代医学研究也指出，茶水会刺激胃酸分泌，使酒精更容易损伤到胃黏膜；同时，茶水中的茶碱和酒精一样会导致心跳加速，更加重了心脏负担。<br><br>（五）醒酒的药物<wbr><br>&nbsp;&nbsp;&nbsp;&nbsp;目前市场上面出现不少醒酒的药物,例如海王金樽,&#8220;客格博&#8221;胶囊,陪酒师&#8221;解酒茶，还有一种美国进口的ZEO等等，那么这些药物真的有效吗?说到底,所谓的醒酒药物无非都是通过以下两个途径来达到醒酒的目的的:一是能迅速分解究竟,使酒精失去功效，或者阻断酒精在胃肠中的吸收,减少酒精进入血液的量,这样自然也可以达到醒酒的目的。但是,不管什么醒酒药物,也不管其功效如何神奇,都是有一定副作用的,不能常吃,尤其对那些经常陪酒或者经常需要应酬的人,更是如此。一般情况下不要吃，因为即使你吃药了，酒精还是进入了体内，对肝脏造成伤害，最好的是不喝，必须要喝的时候，也先用别的方法来醒酒。 <br><br>（六）醉酒后的照顾<wbr><br>&nbsp;&nbsp;&nbsp;&nbsp;醉酒者自己往往不知道自己的行为，无法来自己照顾自己，那么作为亲人或者朋友就必须照顾好，要注意一下几个方面： <br>1.醉酒者如行走不稳，应该注意不要让其跌倒，防止跌打损伤，或者磕碰头部等重要部位。 <br>2.注意保暖，因为醉酒者身体机能下降，这个时候容易受凉。让醉酒者的头歪向一侧，防止其呕吐，如果有呕吐，要清除其口腔内的呕吐物，防止进入气管，导致窒息或者肺部感染。 <br>3.醉酒较严重者，并且无法服用醒酒品的，则应该使其将胃内容物吐出来，可以用手指，棉棒等插入其咽喉部位来使其呕吐。必要时还可以用温水或2%碳酸氢钠液洗胃。更严重者则赶紧拨打120或者马上送医院急救。<br><br><wbr>酒桌上的规矩<wbr><br>(一)如果自己真不能喝，那就别开第一口，端着饭碗夹着菜一边吃去。<br>(二)如果确信自己要喝，那就别装墨迹啦，接下来就是规矩了<br>&nbsp;&nbsp;&nbsp;&nbsp;规矩一：酒桌上虽然&#8220;感情深，一口闷；感情浅，舔一舔&#8221;但是喝酒的时候决不能把这句话&nbsp;&nbsp;挂在嘴上。 <br>&nbsp;&nbsp;&nbsp;&nbsp;规矩二：韬光养晦，厚积薄发，切不可一上酒桌就充大。 <br>&nbsp;&nbsp;&nbsp;&nbsp;规矩三：领导相互喝完才轮到自己敬。 <br>&nbsp;&nbsp;&nbsp;&nbsp;规矩四：可以多人敬一人，决不可一人敬多人，除非你是领导。 <br>&nbsp;&nbsp;&nbsp;&nbsp;规矩五：自己敬别人，如果不碰杯，喝多少可视情况而定。如：对方酒量，对方喝酒态度，但切不可比对方喝得少，要知道是自己敬人。 <br>&nbsp;&nbsp;&nbsp;&nbsp;规矩六：自己敬别人，如果碰杯，一句&#8220;我喝完，你随意&#8221;方显大肚。 <br>&nbsp;&nbsp;&nbsp;&nbsp;规矩七：自己职位卑微，记得多给领导添酒，但不要瞎给领导代酒；就是要代，也要在领导确实想找人代，但要装作自己是因为想喝酒而不是为了给领导代酒而喝酒。比如领导甲不胜酒力，可以通过旁敲侧击把准备敬领导甲的人拦下。 <br>&nbsp;&nbsp;&nbsp;&nbsp;规矩八：端起酒杯（啤酒杯），右手扼杯，左手垫杯底，记着自己的杯子永远低于别人。自己如果是领导，知趣点，不要放太低，不然怎么叫下面的做人？ <br>&nbsp;&nbsp;&nbsp;&nbsp;规矩九：如果没有特殊人物在场，碰酒最好按时针顺序，不要厚此薄彼。 <br>&nbsp;&nbsp;&nbsp;&nbsp;规矩十：碰杯，敬酒，要有说词，不然，我TMD干吗要喝你的酒？ <br>&nbsp;&nbsp;&nbsp;&nbsp;规矩十一：桌面上不谈生意，喝好了，生意也就差不多了，大家心里面了了然，不然人家也不会敞开了跟你喝酒。 <br>&nbsp;&nbsp;&nbsp;&nbsp;规矩十二：不要装歪，说错话，办错事，不要申辩，自觉罚酒才是硬道理。 <br>&nbsp;&nbsp;&nbsp;&nbsp;规矩十三：假如，纯粹是假如，遇到酒不够的情况，酒瓶放在桌子中间，让人自己添，不要傻不垃圾的去一个一个倒酒，不然后面的人没酒怎么办？ <br>&nbsp;&nbsp; 规矩十四：最后一定还有一个闷杯酒，所以，不要让自己的酒杯空着。跑不了的～ <br>&nbsp;&nbsp; 规矩十五：注意酒后不要失言，不要说大话，不要失态，不要吐沫横飞，筷子乱甩，不要手指乱指，喝汤噗噗响，不要放屁打嗝，憋不住去厕所去，没人拦你。 <br>&nbsp;&nbsp; 规矩十六：不要把&#8220;我不会喝酒&#8221;挂在嘴上（如果你喝的话），免得别人骂你虚伪，不管你信不信，人能不能喝酒还真能看出来。 <br>&nbsp;&nbsp; 规矩十七：领导跟你喝酒，是给你face，不管领导怎么要你喝多少，自己先干为敬，记着啊，双手，杯子要低。 <br>&nbsp;&nbsp; 规矩十八：花生米对喝酒人来说，是个好东西。保持清醒的头脑，酒后嘘寒问暖是少不了的，一杯酸奶，一杯热水，一条热毛巾都显得你关怀备至。<br><br>（三）如果你实在不太能喝，记住以下小诀窍<br>1、不要主动出击，实行以守为攻战略； <br>2、桌前放两个大杯，一杯放白酒，一杯放矿泉水，拿小酒盅干杯，勤喝水，到酒桌上主客基本都喝8分醉时，可以以水代酒，主动出击； <br>3、干杯后，不要马上咽下去，找机会用餐巾抹嘴，把酒吐餐巾里； <br>4、上座后先吃一些肥肉类、淀粉类食品垫底，喝酒不容易醉； <br>5、掌握节奏，不要一下子喝得太猛； <br>6、不要几种酒混着喝，特别容易醉； <br>7、领导夹菜时，千万不要转酒桌中间的圆盘，领导夹菜你转盘是酒桌上大忌； <br>8、喝到六分醉时，把你面前的醋碟中的醋喝下，再让服务员添上；<br>9、每次干杯时，倒满，然后在喝前假装没有拿稳酒盅，尽量洒出去一些，这样每次可以少喝进去不少；<br>10、喝酒前面前放好半杯茶，喝了酒不要咽,赶紧拿起茶杯，喝水的功夫把酒吐进茶杯里，吐满了换水就行了，管用的!<br><br><wbr>酒宴上的礼仪<wbr><wbr><br>（一）众欢同乐，切<wbr><wbr>忌私语<wbr><wbr> <br><wbr>&nbsp;&nbsp;&nbsp;&nbsp;大多数酒宴宾客都较多，所以应尽量多谈论一些大部分人能够参与的话题，得到多数人的认同。因为个人的兴趣爱好、知识面不同，所以话题尽量不要太偏，避免唯我独尊，天南海北，神侃无边，出现跑题现象，而忽略了众人。特别是尽量不要与人贴耳小声私语，给别人一种神秘感，往往会产生&#8220;就你俩好&#8221;的嫉妒心理，影响喝酒的效果。 <br>（二）瞄准<wbr>宾主<wbr><wbr>，把握大局 <br>&nbsp;&nbsp;&nbsp;&nbsp;大多数洒宴都有一个主题，也就是喝酒的目的。赴宴时首先应环视一下各位的神态表情，分清主次，不要单纯地为了喝酒而喝酒，而失去交友的好机会，更不要让某些哗众取宠的酒徒搅乱东道主的意思。<br>（三）<wbr>语言<wbr><wbr>得当，诙谐幽默 <br>&nbsp;&nbsp;&nbsp;&nbsp;洒桌上可以显示出一个人的才华、常识、修养和交际风度，有时一句诙谐幽默的语言，会给客人留下很深的印象，使人无形中对你产生好感。所以，应该知道什么时候该说什么话，语言得当，诙谐幽默很关键。 <br>（四）<wbr>劝酒<wbr><wbr>适度，切莫强求 <br>&nbsp;&nbsp;&nbsp;&nbsp;在酒桌上往往会遇到劝酒的现象，有的人总喜欢把酒场当战场，想方设法劝别人多喝几杯，认为不喝到量就是不实在。&#8220;以酒论英雄&#8221;，对酒量大的人还可以，酒量小的就犯难了，有时过分地劝酒，会将原有的朋友感情完全破坏。 <br>（五）<wbr>敬酒<wbr><wbr>有序，主次分明 <br>&nbsp;&nbsp;&nbsp;&nbsp;敬酒也是一门学问。一般情况下敬酒应以年龄大小、职位高低、宾主身份为序，敬酒前一定要充分考虑好敬酒的顺序，分明主次。好使与不熟悉的人在一起喝酒，也要先打听一下身份或是留意别人如何称呼，这一点心中要有数，避免出现尴尬或伤感情的局面。敬酒时一定要把握好敬酒的顺序。有求于某位客人在席上时，对他自然要倍加恭敬，但是要注意，如果在场有更高身份或年长的人，则不应只对能帮你忙的人毕恭毕敬，也要先给尊者长者敬酒，不然会使大家都很难为情。 <br>（六）<wbr>察言观色<wbr><wbr>，了解人心 <br>&nbsp;&nbsp;&nbsp;&nbsp;要想在酒桌上得到大家的赞赏，就必须学会察言观色。因为与人交际，就要了解人心，左右逢源，才能演好酒桌上的角色。 <br>（七）锋芒渐射，<wbr>稳<wbr><wbr>坐泰山 <br>&nbsp;&nbsp;&nbsp;&nbsp;酒席宴上要看清场合，正确估价自己的实力，不要太冲动，尽量保留一些酒力和说话的分寸，既不让别人小看自己又不要过分地表露自身，选择适当的机会，逐渐放射自己的锋芒，才能稳坐泰山，不致给别人产生"就这点能力"的想法，使大家不敢低估你的实力。<br><br><wbr>酒宴上的细节<wbr><br>（一）座次 <wbr><br>&nbsp;&nbsp;&nbsp;&nbsp;总的来讲，座次是&#8220;尚左尊东&#8221;、&#8220;面朝大门为尊&#8221;。<br>&nbsp;&nbsp;&nbsp;&nbsp;若是圆桌，则正对大门的为主客，主客左右手边的位置，则以离主客的距离来看，越靠近主客位置越尊，相同距离则左侧尊于右侧。若为八仙桌，如果有正对大门的座位，则正对大门一侧的右位为主客。如果不正对大门，则面东的一侧右席为首席。 <br>&nbsp;&nbsp;&nbsp;&nbsp;如果为大宴，桌与桌间的排列讲究首席居前居中，左边依次2、4、6席,右边为3、5、7席，根据主客身份、地位，亲疏分坐。<br>&nbsp;&nbsp;&nbsp;&nbsp;如果你是主人，你应该提前到达，然后在靠门位置等待，并为来宾引座。如果你是被邀请者，那么就应该听从东道主安排入座。 <br>&nbsp;&nbsp;&nbsp;&nbsp; 一般来说，如果你的老板出席的话，你应该将老板引至主座，请客户最高级别的坐在主座左侧位置。除非这次招待对象的领导级别非常高。<br>（二）点菜 <wbr><br>1.点菜的一般规矩 <br>&nbsp;&nbsp;&nbsp;&nbsp;如果时间允许，你应该等大多数客人到齐之后，将菜单供客人传阅，并请他们来点菜。当然，作为公务宴请，你会担心预算的问题，因此，要控制预算，你最重要的是要多做饭前功课，选择合适档次的请客地点是比较重要的，这样客人也能大大领会你的预算。况且一般来说，如果是你来买单，客人也不太好意思点菜，都会让你来作主。如果你的老板也在酒席上，千万不&#183;要因为尊重他，或是认为他应酬经验丰富，酒席吃得多，而让他／她来点菜，除非是他／她主动要求。否则，他会觉得不够体面。 <br>&nbsp;&nbsp;&nbsp;&nbsp;如果你是赴宴者，你应该知道，你不该在点菜时太过主动，而是要让主人来点菜。如果对方盛情要求，你可以点一个不太贵、又不是大家忌口的菜。记得征询一下桌上人的意见，特别是问一下&#8220;有没有哪些是不吃的？&#8221;或是&#8220;比较喜欢吃什么？&#8221;让大家感觉被照顾到了。点菜后，可以请示&#8220;我点了菜，不知道是否合几位的口味&#8221;，&#8220;要不要再来点其它的什么&#8221;等等。 <br>2.点菜规则<br>点菜时，一定要心中有数。点菜时，可根据以下三个规则：<br>规则一：看人员组成。一般来说，人均一菜是比较通用的规则。如果是男士较多的餐会可适当加量。<br>规则二：看菜肴组合。一般来说，一桌菜最好是有荤有素，有冷有热，尽量做到全面。如果桌上男士多，可多点些荤食，如果女士较多，则可多点几道清淡的蔬菜。<br>规则三：看宴请的重要程度。若是普通的商务宴请，平均一道菜在50元到80元左右可以接受。如果这次宴请的对象是比较关键人物，那么则要点上几个够份量的菜，例如龙虾、刀鱼、鲥鱼，再要上规格一点，则是鲍鱼、翅粉等。 <br>&nbsp;&nbsp;&nbsp;&nbsp;还有一点需要注意的是，点菜时不应该问服务员菜肴的价格，或是讨价还价，这样会让你公司在客户面前显得有点小家子气，而且客户也会觉得不自在。<br>3. 优先考虑的菜肴<br>（1）有中餐特色的菜肴。<br>&nbsp;&nbsp;&nbsp;&nbsp;宴请外宾的时候，这一条更要重视。像炸春卷、煮元宵、蒸饺子、狮子头、宫爆鸡丁等，并不是佳肴美味，但因为具有鲜明的中国特色，所以受到很多外国人的推崇。 <br>（2）有本地特色的菜肴。<br>&nbsp;&nbsp;&nbsp;&nbsp;比如西安的羊肉泡馍，湖南的毛家红烧肉，上海的红烧狮子头，北京的涮羊肉，在那里宴请外地客人时，上这些特色菜，恐怕要比千篇一律的生猛海鲜更受好评。 <br>（3）本餐馆的特色菜。<br>&nbsp;&nbsp;&nbsp;&nbsp;很多餐馆都有自己的特色菜。上一份本餐馆的特色菜，能说明主人的细心和对被请者的尊重。 <br>附：中餐点菜指导——三优四忌 <br>　　一顿标准的中式大餐，通常，先上冷盘，接下来是热炒，随后是主菜，然后上点心和汤，如果感觉吃得有点腻，可以点一些餐后甜品，最后是上果盘。在点菜中要顾及到各个程序的菜式。 <br>4.考虑饮食禁忌<br>&nbsp;&nbsp;&nbsp;&nbsp;在安排菜单时，还必须考虑来宾的饮食禁忌，特别是要对主宾的饮食禁忌高度重视。这些饮食方面的禁忌主要有四条：<br>　　第一，宗教的饮食禁忌，一点也不能疏忽大意。例如，穆斯林通常不吃猪肉，并且不喝酒。国内的佛教徒少吃荤腥食品，它不仅指的是肉食，而且包括葱、蒜、韭菜、芥末等气味刺鼻的食物。一些信奉观音的佛教徒在饮食中尤其禁吃牛肉，这点要招待港澳台及海外华人同胞时尤要注意。 <br>　　第二，出于健康的原因，对于某些食品，也有所禁忌。比如，心脏病、脑血管、脉硬化、高血压和中风后遗症的人，不适合吃狗肉，肝炎病人忌吃羊肉和甲鱼，胃肠炎、胃溃汤等消化系统疾病的人也不合适吃甲鱼，高血压、高胆固醇患者，要少喝鸡汤等。 <br>　　第三，不同地区，人们的饮食偏好往往不同。对于这一点，在安排菜单时要兼顾。比如，湖南省份的人普遍喜欢吃辛辣食物，少吃甜食。英美国家的人通常不吃宠物、稀有动物、动物内脏、动物的头部和脚爪。另外，宴请外宾时，尽量少点生硬需啃食的菜肴，老外在用餐中不太会将咬到嘴中的食物再吐出来，这也需要顾及到。 <br>　　第四，有些职业，出于某种原因，在餐饮方面往往也有各自不同的特殊禁忌。例如，国家公务员在执行公务时不准吃请，在公务宴请时不准大吃大喝，不准超过国家规定的标准用餐，不准喝烈性酒。再如，驾驶员工作期间不得喝酒。要是忽略了这一点，还有可能使对方犯错误。 <br>（三）吃菜 <wbr><br>&nbsp;&nbsp;&nbsp;&nbsp;中国人一般都很讲究吃，同时也很讲究吃相。随着职场礼仪越来越被重视，商务饭桌上的吃和吃相也更加讲究。以下以中餐为例，教你如何在餐桌上有礼有仪，得心应手。 <br>&nbsp;&nbsp;&nbsp;&nbsp;中餐宴席进餐伊始，服务员送上的第一道湿毛巾是擦手的，不要用它去擦脸。上龙虾、鸡、水果时，会送上一只小小水孟，其中飘着拧檬片或玫瑰花瓣，它不是饮料，而是洗手用的。洗手时，可两手轮流沾湿指头，轻轻涮洗，然后用小毛巾擦干。 <br>&nbsp;&nbsp;&nbsp;&nbsp;用餐时要注意文明礼貌。对外宾不要反复劝菜，可向对方介绍中国菜的特点，吃不吃由他。有人喜欢向他人劝菜，甚至为对方夹菜。外宾没这个习惯，你要是一再客气，没准人家会反感：&#8220;说过不吃了，你非逼我干什么?&#8221;依此类推，参加外宾举行的宴会，也不要指望主人会反复给你让菜。你要是等别人给自己布菜，那就只好俄肚子。 <br>&nbsp;&nbsp;&nbsp;&nbsp;客人入席后，不要立即动手取食。而应待主人打招呼，由主人举杯示意开始时，客人才能开始；客人不能抢在主人前面。夹菜要文明，应等菜肴转到自已面前时，再动筷子，不要抢在邻座前面，一次夹菜也不宜过多。要细嚼慢咽，这不仅有利于消化，也是餐桌上的礼仪要求。决不能大块往嘴里塞，狼吞虎咽，这样会给人留下贪婪的印象。不要挑食，不要只盯住自己喜欢的莱吃，或者急忙把喜欢的菜堆在自己的盘子里。用餐的动作要文雅，夹莱时不要碰到邻座，不要把盘里的菜拨到桌上，不要把汤泼翻。不要发出不必要的声音，如喝汤时&#8220;咕噜咕噜&#8221;，吃菜时嘴里&#8220;叭叭&#8221;作响，这都是粗俗的表现。不要一边吃东西，一边和人聊天。嘴里的骨头和鱼刺不要吐在桌子上，可用餐巾掩口，用筷子取出来放在碟子里。掉在桌子上的菜，不要再吃。进餐过程中不要玩弄碗筷，或用筷子直向别人。不要用手去嘴里乱抠。用牙签剔牙时，应用手或餐巾掩住嘴。不要让餐具发出任何声响。 <br>&nbsp;&nbsp;&nbsp;&nbsp;用餐结束后，可以用餐巾、餐巾纸或服务员送来的小毛巾擦擦嘴，但不宜擦头颈或胸脯；餐后不要不加控制地打饱嗝或嗳气；在主人还没示意结束时，客人不能先离席。 <br>（四）<wbr>敬酒<br>1、主人敬主宾。 <br>2、陪客敬主宾。 <br>3、主宾回敬。 <br>4、陪客互敬。 <br>记住：作客绝不能喧宾夺主乱敬酒，那样是很不礼貌，也是很不尊重主人的。<br>（五）倒茶 <wbr><br>&nbsp;&nbsp;&nbsp;&nbsp;这里所说的倒茶学问不既适用于客户来公司拜访，同样也适用于商务餐桌。 <br>&nbsp;&nbsp;&nbsp;&nbsp;首先，茶具要清洁。<br>&nbsp;&nbsp;&nbsp;&nbsp;客人进屋后，先让坐，后备茶。冲茶之前，一定要把茶具洗干净，尤其是久置未用的茶具，难免沾上灰尘、污垢，更要细心地用清水洗刷一遍。在冲茶、倒茶之前最好用开水烫一下茶壶、茶杯。这样，既讲究卫生，又显得彬彬有礼。如果不管茶具干净不干净，胡乱给客人倒茶，这是不礼貌的表现。人家一看到茶壶、茶杯上的斑斑污迹就反胃，怎么还愿意喝你的茶呢? 现在一般的公司都是一次性杯子，在倒茶前要注意给一次性杯子套上杯托，以免水热烫手，让客人一时无法端杯喝茶。 <br>&nbsp;&nbsp;&nbsp;&nbsp;其次，茶水要适量。<br>&nbsp;&nbsp;&nbsp;&nbsp;先说茶叶，一般要适当。茶叶不宜过多，也不宜太少。茶叶过多，茶味过浓；茶叶太少，冲出的茶没啥味道。假如客人主动介绍自己喜欢喝浓茶或淡茶的习惯，那就按照客人的口胃把茶冲好。再说倒茶，无论是大杯小杯，都不宜倒得太满，太满了容易溢出，把桌子、凳子、地板弄湿。不小心，还会烫伤自己或客人的手脚，使宾主都很难为情。当然，也不宜倒得太少。倘若茶水只遮过杯底就端给客人，会使人觉得是在装模作样，不是诚心实意。 <br>&nbsp;&nbsp;&nbsp;&nbsp;再次，端茶要得法。<br>&nbsp;&nbsp;&nbsp;&nbsp;按照我国人民的传统习惯，只要两手不残废，都是用双手给客人端茶的。但是，现在有的年青人不懂得这个规矩，用一只手把茶递给客人了事。双手端茶也要很注意，对有杯耳的茶杯，通常是用一只手抓住杯耳，另一只手托住杯底，把茶端给客人。没有杯耳的茶杯倒满茶之后周身滚烫，双手不好接近，有的同志不管三七二十一，用五指捏住杯口边缘就往客人面前送。这种端茶方法虽然可以防止烫伤事故发生，但很不雅观，也不够卫生。请试想，让客人的嘴舐主人的手指痕，好受吗? <br>&nbsp;&nbsp;&nbsp;&nbsp;最后，添茶。<br>&nbsp;&nbsp;&nbsp;&nbsp;如果上司和客户的杯子里需要添茶了，你要义不容辞地去做。你可以示意服务生来添茶，或让服务生把茶壶留在餐桌上，由你自己亲自来添则更好，这是不知道该说什么好的时候最好的掩饰办法。当然，添茶的时候要先给上司和客户添茶，最后再给自己添。 <br>（六）离席 <wbr><br>&nbsp;&nbsp;&nbsp;&nbsp;一般酒会和茶会的时间很长，大约都有在两小时以上。也许逛了几圈，认得一些人后，你很快就想离开了。这时候，中途离席的一些技巧，你不能不了解。 <br>&nbsp;&nbsp;&nbsp;&nbsp;常见一场宴会进行得正热烈的时候，因为有人想离开，而引起众人一哄而散的结果，使主办人急得真跳脚。欲避免这种煞风景的后果，当你要中途离开时，千万别和谈话圈里的每一个人一一告别，只要悄悄地和身边的两、三个人打个招呼，然后离去便可。 <br>&nbsp;&nbsp;&nbsp;&nbsp;中途离开酒会现场，一定要向邀请你来的主人说明、致歉，不可一溜烟便不见了。 <br>和主人打过招呼，应该马上就走，不要拉着主人在大门大聊个没完。因为当天对方要做的事很多，现场也还有许多客人等待他（她）去招呼，你占了主人太多时间，会造成他（她）在其他客人面前失礼。有些人参加酒会、茶会，当中途准备离去时，会一一问她所认识的每一个人要不要一块走。结果本来热热闹闹的场面，被她这么一鼓动，一下子便提前散场了。这种闹场的事，最难被宴会主人谅解，一个有风度的人，可千万不要犯下这钟错误。<br></p>
</span>
<img src ="http://www.cnitblog.com/andycai/aggbug/59660.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-26 15:32 <a href="http://www.cnitblog.com/andycai/archive/2009/06/26/59660.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>做人家的老婆不能这样</title><link>http://www.cnitblog.com/andycai/archive/2009/06/21/59527.html</link><dc:creator>枫晰落扬</dc:creator><author>枫晰落扬</author><pubDate>Sun, 21 Jun 2009 15:10:00 GMT</pubDate><guid>http://www.cnitblog.com/andycai/archive/2009/06/21/59527.html</guid><wfw:comment>http://www.cnitblog.com/andycai/comments/59527.html</wfw:comment><comments>http://www.cnitblog.com/andycai/archive/2009/06/21/59527.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.cnitblog.com/andycai/comments/commentRss/59527.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/andycai/services/trackbacks/59527.html</trackback:ping><description><![CDATA[<p><span style="FONT-SIZE: 10pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 媳妇说：&#8220;煮淡一点你就嫌没有味道，现在煮咸一点你却说咽不下。你究竟怎想怎么样？&#8221; <br>　　母亲一见儿子回来，二话不说便把饭菜往嘴里送。 <br>　　她怒瞪他一眼。他试了一口，马上吐出来， <br>儿子说：&#8220;我不是说过了吗，妈有病不能吃太咸！&#8221; <br>　　&#8220;那好！妈是你的，以后由你来煮！&#8221;媳妇怒气冲冲地回房。 <br>　　儿子无奈地轻叹一声，然后对母亲说：&#8220;妈，别吃了，我去煮个面给？&#8221; <br>　　&#8220;仔，你是不是有话想跟妈说，是就说好了，别憋在心里！&#8221; <br>　　&#8220;妈，公司下个月升我职，我会很忙，至于老婆，她说很想出来工作，所以&#8230;&#8230;&#8221; <br>　　母亲马上意识到儿子的意思：&#8220;仔，不要送妈去老人院。&#8221;声音似乎在哀求。 <br>　　儿子沉默片刻，他是在寻找更好的理由。 <br>&#8220;妈，其实老人院并没有甚么不好？知道老婆一但工作，一定没有时间好好服侍。老人院有吃有住有人服侍照顾， <br>不是比在家里好得多吗？&#8221; <br>　　&#8220;可是，阿财叔他&#8230;&#8230;&#8221; <br>　　洗了澡，草草吃了一碗方便面，儿子便到书房去。他茫然地伫立于窗前，有些犹豫不决。母亲年轻便守寡，含辛茹苦将他抚养成人，供他出国读书。但她从不用年轻时的牺牲当作要胁他孝顺的筹码，反而是妻子以婚姻要胁他！真的要让母亲住老人院吗？他问自己，他有些不忍。 <br>　　&#8220;可以陪你下半世的人是你老婆，难道是你妈吗？&#8221;阿财叔的儿子总是这样提醒他。 <br>　　&#8220;你妈都这么老了，好命的话可以活多几年，为何不趁这几年好好孝顺她呢？树欲静而风不息，子欲养而亲不在啊！&#8221;亲戚总是这样劝他。 <br>　　儿子不敢再想下去，深怕自己真的会改变初衷。太阳收敛起灼热的金光，躲在山后憩息。一间建在郊外山岗的一座贵族老人院。 <br>　　是的，钱用得越多，儿子才心安理得。当儿子领着母亲步入大厅时，崭新的电视机，42英寸的荧幕正播放着一部喜剧，但观众一点笑声也没有。 <br>几个衣着一样，发型一样的老妪歪歪斜斜地坐在发沙上，神情呆滞而落寞。有个老人在自言自语，有个正缓缓弯下腰，想去捡掉在地上的一块饼干吃。 <br>儿子知道母亲喜欢光亮，所以为她选了一间阳光充足的房间。从窗口望出去，树荫下，一片芳草如茵。几名护士推着坐在轮椅的老者在夕阳下散步，四周悄然寂静得令人心酸。纵是夕阳无限好，毕竟已到了黄昏，他心中低低叹息。 <br>　　&#8220;妈，我&#8230;&#8230;我要走了！&#8221;母亲只能点头。他走时，母亲频频挥手，她张着没有牙的嘴，苍白干燥的咀唇在嗫嚅着，一副欲语还休的样子。儿子这才注意到母亲银灰色的头发，深陷的眼窝以及打着细褶的皱脸。母亲，真的老了！ <br>　　他霍然记起一则儿时旧事。那年他才6岁，母亲有事回乡，不便携他同行，于是把他寄住在阿财叔家几天。母亲临走时，他惊恐地抱着母亲的腿不肯放，伤心大声号哭道：&#8220;妈妈不要丢下我！妈妈不要走！&#8221; <br>最后母亲没有丢下他。他连忙离开房间，顺手把门关上，不敢回头，深恐那记忆像鬼魅似地追缠而来。 <br>　　他回到家，妻子与岳母正疯狂的把母亲房里的一切扔个不亦乐乎。身高3英寸的奖杯──那是他小学作文比赛《我的母亲》第1名的胜利品！华英字典──那是母亲整个月省吃省用所买给他的第1份生日礼物！还有母亲临睡前要擦的风湿油，没有他为她擦，带去老人院又有甚么意义呢？ <br>&#8220;够了，别再扔了！&#8221;儿子怒吼道。　　&#8220;这么多垃圾，不把它扔掉，怎么放得下我的东西。&#8221; <br>岳母没好气地说。 <br>　　&#8220;就是嘛！你赶快把你妈那张烂床给抬出去，我明天要为我妈添张新的！&#8221; <br>　　一堆童年的照片展现在儿子眼前，那是母亲带他到动物园和游乐园拍的照片。 <br>　　&#8220;它们是我妈的财产，一样也不能丢！&#8221; <br>　　&#8220;你这算甚态度？对我妈这么大声，我要你向我妈道歉！&#8221; <br>　　&#8220;我娶你就要爱你的母亲，为甚么？嫁给我就不能爱我的母亲？&#8221; <br>　　雨后的黑夜分外冷寂，街道萧瑟，行人车辆格外稀少。一辆宝马在路上飞驰，频频闯红灯，陷黄格，呼一声又飞驰而过。那辆轿车一路奔往山岗上的那间老人院，停车直奔上楼，推开母亲卧房的门。他幽灵似地站着，母亲正抚摸着风湿痛的双腿低泣。 <br>她见到儿子手中正拿着那瓶风湿油，显然感到安慰的说：&#8220;妈忘了带，幸好你拿来！&#8221;他走到母亲身边，跪了下来。 <br>&#8220;很晚了，妈自己擦可以了，你明天还要上班，回去吧！&#8221; <br>　　他嗫嚅片刻，终于忍不住啜泣道：&#8220;妈，对不起，请原谅我！我们回家去吧！&#8221; <br>　　～～后语～～ <br>　　随着自己愈长大，看着父母亲脸庞从年轻变憔悴，头发从乌丝变白发,动作从迅捷变缓慢，多心疼！父母亲总是将最好、最宝贵的留给我们，像蜡烛不停的燃烧自己，照亮孩子！而我呢？有没有腾出一个空间给我的父母，或者只是在当我需要停泊岸时，才会想起他们&#8230;&#8230; <br>　　其实父母亲要的真的不多，只是一句随意的问候&#8220;爸、妈，你们今天好吗？&#8221;随意买的宵夜，煮一顿再普通不过的晚餐，睡前帮他们盖盖被子，天冷帮他们添衣服、戴手套....都能让他们高兴温馨很久。有时，我常在想：我希望我的子女以后如何对我。那现在，我有没有如此对待我的父母？我相信，人是环环相扣的；现在，你如何对待你的父母；以后，你的子女就如何待你。 <br>　　朋友，人世间最难报的就是父母恩，愿我们都能：以反哺之心奉敬父母，以感恩之心孝顺父母！ <br>　　～共勉之～ <br>　　生命不要求我们成为最好的，只要求我们作最大的努力！ <br>　　老人安养院墙上发现的一篇文章 <br>　　孩子！当你还很小的时候，我花了很多时间，教你慢慢用汤匙、用筷子吃东西。教你系鞋带、扣扣子、溜滑梯、教你穿衣服、梳头发、拧鼻涕。这些和你在一起的点点滴滴，是多么的令我怀念不已。所以，当我想不起来，接不上话时，请给我一点时间，等我一下，让我再想一想&#8230;&#8230;极可能最后连要说什么，我也一并忘记。孩子！你忘记我们练习了好几百回，才学会的第一首娃娃歌吗？是否还记得每天总要我绞尽脑汁，去回答不知道你从哪里冒出来的吗？所以，当我重复又重复说着老掉牙的故事，哼着我孩提时代的儿歌时，体谅我。让我继续沉醉在这些回忆中吧！切望你，也能陪着我闲话家常吧！孩子，现在我常忘了扣扣子、系鞋带。吃饭时，会弄脏衣服，梳头发时手还会不停的抖，不要催促我，要对我多一点耐心和温柔，只要有你在一起，就会有很多的温暖涌上心头。 <br>　孩子！如今，我的脚站也站不稳，走也走不动。所以，请你紧紧的握着我的手，陪着我，慢慢的。就像当年一样，我带着你一步一步地走。 <br>　　若为人子女也不懂得如何体谅他们，那他们便只能于痛苦中渡过余生，黑暗中逝去&#8230;&#8230; <br>　爱情可以重新再找寻，但父母一生却只有一个，要珍惜、珍重。 <br>　　在此祝愿天下父母亲——身体健康，长命百岁! <br></p>
</span>
<img src ="http://www.cnitblog.com/andycai/aggbug/59527.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-21 23:10 <a href="http://www.cnitblog.com/andycai/archive/2009/06/21/59527.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></channel></rss>