LoadRunner性能测试指标2.docx
- 文档编号:30146406
- 上传时间:2023-08-05
- 格式:DOCX
- 页数:37
- 大小:99.61KB
LoadRunner性能测试指标2.docx
《LoadRunner性能测试指标2.docx》由会员分享,可在线阅读,更多相关《LoadRunner性能测试指标2.docx(37页珍藏版)》请在冰豆网上搜索。
LoadRunner性能测试指标2
LoadRunner性能测试指标
Object
Counters
Descrīption
Referencevalue
Memory
AvailableMbytes
可用物理内存数.如果AvailableMbytes的值很小(4MB或更小),则说明计算机上总的内存可能不足,或某程序没有释放内存。
4MB或更小,至少要有10%的物理内存值
Page/sec
(Input/Out)
为了解析硬页错误,从磁盘取出或写入的页数。
一般如果Page/sec持续高于几百,那么您应该进一步研究页交换活动。
有可能需要增加内存,以减少换页的需求(你可以把这个数字乘以4k就得到由此引起的硬盘数据流量)。
Pages/sec的值很大不一定表明内存有问题,而可能是运行使用内存映射文件的程序所致。
推荐00-20
如果服务器没有足够的内存处理其工作负荷,此数值将一直很高。
如果大于80,表示有问题(太多的读写数据操作要访问磁盘,可考虑增加内存或优化读写数据的算法)。
该系列计数器的值比较低说明响应请求比较快,否则可能是服务器系统内存短缺引起(也可能是缓存太大,导致系统内存太少)。
>5越低越好
PageFault
处理器每秒处理的错误页(包括软/硬错误)。
当处理器向内存指定的位置请求一页(可能是数据或代码)出现错误时,这就构成一个PageFault。
如果该页在内存的其他位置,该错误被称为软错误(用TransitionFault/sec记数器衡量);如果该页必须从硬盘上重新读取时,被称为硬错误。
许多处理器可以在有大量软错误的情况下继续操作。
但是,硬错误可以导致明显的拖延。
PageInput/sec
为了解决硬错误页,从磁盘上读取的页数。
PageOutput/sec
Pagereads/sec
为了解决硬错误页,从磁盘上读取的次数。
解析对内存的引用,必须读取页文件的次数。
阈值为>5.越低越好。
大数值表示磁盘读而不是缓存读。
CacheBytes
文件系统缓存,默认情况下为50%的可用物理内存。
如IIS5.0运行内存不够时,它会自动整理缓存。
需要关注该计数器的趋势变化
内存泄露
如果您怀疑有内存泄露,请监视Memory\\AvailableBytes和Memory\\CommittedBytes,以观察内存行为,并监视您认为可能在泄露内存的进程的Process\\PrivateBytes、Process\\WorkingSet和Process\\HandleCount。
如果您怀疑是内核模式进程导致了泄露,则还应该监视Memory\\PoolNonpagedBytes、Memory\\PoolNonpagedAllocs和Process(process_name)\\PoolNonpagedBytes。
Process
PageFaults/sec
将进程产生的页故障与系统产生的相比较,以判断这个进程对系统页故障产生的影响。
PrivateBytes
此进程所分配的无法与其它进程共享的当前字节数量。
如果系统性能随着时间而降低,则此计数器可以是内存泄漏的最佳指示器。
Workset
处理线程最近使用的内存页,反映了每一个进程使用的内存页的数量。
如果服务器有足够的空闲内存,页就会被留在工作集中,当自由内存少于一个特定的阈值时,页就会被清除出工作集。
Processor
%ProcessorTime
被消耗的处理器时间数量.如果服务器专用于sqlserver可接受的最大上限是80%-85%.也就是常见的CPU使用率.
ProcessorQueueLength
判断CPU瓶颈,如果processorqueuelength显示的队列长度保持不变(>=2)并且处理器的利用率%Processortime超过90%,那么很可能存在处理器瓶颈.如果发现processorqueuelength显示的队列长度超过2,而处理器的利用率却一直很低,或许更应该去解决处理器阻塞问题,这里处理器一般不是瓶颈.
Physical
Disk
%DiskTime
指所选磁盘驱动器忙于为读或写入请求提供服务所用的时间的百分比。
正常值<10,此值过大表示耗费太多时间来访问磁盘,可考虑增加内存、更换更快的硬盘、优化读写数据的算法。
若数值持续超过80(此时处理器及网络连接并没有饱和),则可能是内存泄漏。
CurrentDiskQueueLength
读取和写入请求(为所选磁盘在实例间隔中列队的)的平均数。
(磁盘数1.5-2倍)
Avg.DiskQueue
Length
Avg.DiskRead
QueueLength
Avg.DiskWrite
QueueLength
DiskRead/sec
DiskWrite/sec
读取和写入请求(为所选磁盘在实例间隔中列队的)的平均数。
磁盘瓶颈判断公式:
每磁盘的I/O数=(读次数+(4*写次数))/磁盘个数。
如果计算出来的每磁盘的I/O数大于磁盘的处理能力,那么磁盘存在瓶颈。
Avg.DiskQueueLength正常值<0.5,此值过大表示磁盘IO太慢,要更换更快的硬盘。
附:
1、SQL数据库:
1.User0Connections(用户连接数,也就是数据库的连接数量);
2.Numberofdeadlocks/Sec/-Total(数据库死锁)
3.Memory\AvailalleMbyte内存监控(可用内存)
4.Physicsdisk\disktime\-Total(磁盘读写总时间)(出现瓶颈时检查读磁盘的时间长还是写磁盘的时间长)
5.ButterCailehit(数据库缓存的选取命中率)
6.数据库的命中率不能低于92%
2、WebServer:
1.Processor\Processontime\Tatolcpu时间
2.Memory\AvailalleMbyteAvai应用服务器的内存
3.RequstQuened进入HTTP队列的时间;队列/每秒
4.Totalrequest总请求数时间
5.AvgRps平均每秒钟响应次数=总请求时间/秒数
6.Avgtimetolastbyteperterstion(mstes)平均每秒迭代次数;上一个页面到下一个页面的时间是你录入角本的一个过程的执行
7.HttpError无效请求次数
8.Send发送请求次数字节数
Webload的压力参数:
lLoadSize(压力规模大小)
lRoundTime(请求时间)
lRounds(请求数)
lSuccessfulRounds(成功的请求)
lFailedRounds(失败的请求)
lRoundsPerSecond(每秒请求次数)(是指你录入角本的任务在一秒中执行的次数,类似Avgtimetolastbyteperterstion(mstes))
lSuccessfulRoundsPerSecond(每秒成功的请求次数)
lFailedRoundsPerSecond(每秒失败的请求次数)
lPageTime页面响应时间
lPages(页面数)
lPagesPerSecond(每秒页面响应数)
lHitTime(点击时间)
lHits(点击次数,也可以是请求次数,不过有一些不一样)
lSuccessfulHits(成功的点击次数)
lFailedHits(失败的点击次数)
lHitsPerSecond(每秒点击数)
lSuccessfulHitsPerSecond(每秒成功的点击次数)
lFailedHitsPerSecond(每秒失败的点击次数)
lAttemptedConnections(尝试链接数)
lSuccessfulConnections(成功的连接数)
lFailedConnections(失败的连接数)
lConnectTime(连接时间)
lProcessTime(系统执行时间,一般用来显示CPU的运算量,服务器端与客户端都要记录)
lReceiveTime(接受时间)
lSendTime(请求时间)
lTimeToFirstByte()
lThroughput(BytesPerSecond)()
lResponseTime(回应时间)
lResponseDataSize()
lResponses()
Transactionspersecond(每秒处理事务数)http连接GetorPost方法的事务数
Roundspersecond(每秒完成数)每秒完全执行Agenda〔代理〕的数量
Throughput(吞吐量)(bytespersecond〔每秒字节数〕)测试服务器每秒传送的字节数
RoundTime完成一次事务所用的必要时间,单位是秒
TransactionTime是完成一次事务的必须时间。
事务:
包括连接时间,发送、响应和处理时间。
ConnectTime客户端到测试服务器的一个连接完成的时间,单位秒(包括建立和收到的TCP/IP时间)
SendTime是将事务写入测试服务器的缓冲必要时间,单位秒
ResponseTime是客户端请求接受测试服务器响应的必要时间,单位秒
ProcessTime处理数据的必要时间
LoadSize负载测试时开启的虚拟客户数量〕
Rounds在测试会话期间执行议程脚本的时间数
AttemptedConnections尝试连接测试服务器的数量
HTTPResponseStatus每一个http响应被结束的时间数量
ResponseDataSize由测试服务器发送的响应大小,单位字节。
----------------------------------------------------------------------------------------------------------------------
Loadrunner测试数据库性能,测试SQL语句性能的脚本例子
此代码为Loadrunner8通过CAPI类型的Vuser测试MySQL性能,或者测试sql语句性能的脚本。
这东西很少有人用,网上资料很少,一般测试B/S的很多。
viewplaincopytoclipboardprint?
/*需要的表结构如下
CREATETABLE`test_data`(
`order_id`BIGINTUNSIGNEDNOTNULLCOMMENT'Ordernumbers.Mustbeunique.',
`status`BOOLNOTNULLDEFAULT'0'COMMENT'Whetherdatahasbeenusedornot.Avalueof0meansFALSE.',
`date_used`DATETIMENULLCOMMENT'Date/timethatthedatawasused.',
UNIQUE(
`order_id`
)
)ENGINE=innodbCOMMENT='LoadRunnertestdata';
*/
Action()
{
intrc;
intdb_connection;//数据库连接
intquery_result;//查询结果集MYSQL_RES
char**result_row;//查询的数据衕
char*server="localhost";
char*user="root";
char*password="123456";
char*database="test";
intport=3306;
intunix_socket=NULL;
intflags=0;
//找到libmysql.dll的所在位置.
rc=lr_load_dll("C:
\\ProgramFiles\\MySQL\\MySQLServer5.1\\bin\\libmysql.dll");
if(rc!
=0){
lr_error_message("Couldnotloadlibmysql.dll");
lr_abort();
}
//创建MySQL对象
db_connection=mysql_init(NULL);
if(db_connection==NULL){
lr_error_message("Insufficientmemory");
lr_abort();
}
//连接到MySQL数据库
rc=mysql_real_connect(db_connection,server,user,password,database,port,unix_socket,flags);
if(rc==NULL){
lr_error_message("%s",mysql_error(db_connection));
mysql_close(db_connection);
lr_abort();
}
//向数据库插入数据
//此处的{ORDER_ID}是一个参数,简单测试时可以用一个常数代替
lr_save_string(lr_eval_string("INSERTINTOtest_data(order_id)VALUES({ORDER_ID})"),"paramInsertQuery");
rc=mysql_query(db_connection,lr_eval_string("{paramInsertQuery}"));
if(rc!
=0){
lr_error_message("%s",mysql_error(db_connection));
mysql_close(db_connection);
lr_abort();
}
//从数据库读取一个数据并显示
rc=mysql_query(db_connection,"SELECTorder_idFROMtest_dataWHEREstatusISFALSELIMIT1");
if(rc!
=0){
lr_error_message("%s",mysql_error(db_connection));
mysql_close(db_connection);
lr_abort();
}
query_result=mysql_use_result(db_connection);
if(query_result==NULL){
lr_error_message("%s",mysql_error(db_connection));
mysql_free_result(query_result);
mysql_close(db_connection);
lr_abort();
}
//如果结果集包含多行数据,需要多次调用mysql_fetch_row直到返回NULL
result_row=(char**)mysql_fetch_row(query_result);
if(result_row==NULL){
lr_error_message("Didnotexpecttheresultsettobeempty");
mysql_free_result(query_result);
mysql_close(db_connection);
lr_abort();
}
//保存参数,用于删除这行数据
lr_save_string(result_row[0],"paramOrderID");
lr_output_message("OrderIDis:
%s",lr_eval_string("{paramOrderID}"));
mysql_free_result(query_result);
//在事务里更新一行数据,需要用InnoDB引擎
rc=mysql_query(db_connection,"BEGIN");//启动事务
if(rc!
=0){
lr_error_message("%s",mysql_error(db_connection));
mysql_close(db_connection);
lr_abort();
}
//使用"FORUPDATE"锁住要更新的数据行
rc=mysql_query(db_connection,"SELECTorder_idFROMtest_dataWHEREstatusISFALSELIMIT1FORUPDATE");
if(rc!
=0){
lr_error_message("%s",mysql_error(db_connection));
mysql_close(db_connection);
lr_abort();
}
query_result=mysql_use_result(db_connection);
if(query_result==NULL){
lr_error_message("%s",mysql_error(db_connection));
mysql_free_result(query_result);
mysql_close(db_connection);
lr_abort();
}
result_row=(char**)mysql_fetch_row(query_result);
if(result_row==NULL){
lr_error_message("没有查询到结果");
mysql_free_result(query_result);
mysql_close(db_connection);
lr_abort();
}
lr_save_string(result_row[0],"paramOrderID");
lr_output_message("OrderIDis:
%s",lr_eval_string("{paramOrderID}"));
mysql_free_result(query_result);
lr_save_string(lr_eval_string("UPDATEtest_dataSETstatus=TRUE,date_used=NOW()WHEREorder_id='{paramOrderID}'"),"paramUpdateQuery");
rc=mysql_query(db_connection,lr_eval_string("{paramUpdateQuery}"));
if(rc!
=0){
lr_error_message("%s",mysql_error(db_connection));
mysql_close(db_connection);
lr_abort();
}
rc=mysql_query(db_connection,"COMMIT");//提交事务
if(rc!
=0){
lr_error_message("%s",mysql_error(db_connection));
mysql_close(db_connection);
lr_abort();
}
//再次查找数据,应该为空了,因为前面的事务更新了标志
rc=mysql_query(db_connection,"SELECTorder_idFROMtest_dataWHEREstatusISFALSELIMIT1");
if(rc!
=0){
lr_error_message("%s",mysql_error(db_connection));
mysql_close(db_connection);
lr_abort();
}
query_result=mysql_use_result(db_connection);
if(query_result==NULL){
lr_error_message("%s",mysql_error(db_connection));
mysql_free_result(query_result);
mysql_close(db_connection);
lr_abort();
}
result_row=(char**)mysql_fetch_row(query_result);
if(result_row==NULL){
lr_output_message("Resultsetisemptyasexpected");
mysql_free_result(query_result);
}else{
lr_error_message("Didnotexpecttheresultsettocontainanyrows");
mysql_free_result(query_result);
mysql_close(db_connection);
lr_abort();
}
//删除数据
lr_save_string(lr_eval_string("DELETEFROMtest_dataWHEREorder_id='{paramOrderID}'"),"paramDeleteQuery");
rc=mysql_query(db_connection,lr_eval_string("{paramDeleteQuery}"));
if(rc!
=0){
lr_error_message("%s",mysql_error(db_connection));
mysql_close(db_connection);
l
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- LoadRunner 性能 测试 指标