如何在Loadrunner中监控linux服务器的性能
公司使用的服务器是linux的操作系统,之前很长一段时间监控系统参数都是使用top等linux命令来监控
这样做的好处
1可以非常容易的监控的系统的状态
2实时性非常强
不足之处
1不能和loadrunner其他的图表进行合并,造成了很难在事后分析出系统的问题
2监控系统的数据无法直接保存,供下次参考使用
最近终于说服了公司的sa,让我能在性能测试环境做必要的设置,因为之前sa一直认为我要做的事情会对系统的安全性造成影响。
现在我来介绍一下如何在linux设置来完成loadrunner对服务器性能的监控
A验证服务器上是否配置了rstatd守护程序
1 rup 127001
2find / -name rpcrstatd
3/usr/sbin/rpcinfo -p
B下载rpcrstatd
http://sourceforgenet/projects/rstatd
C打开端口映射
1执行 setup命令
这时会弹出一个类似图形化的界面,光标移动到System services,回车。在新界面中找到portmap项,空格选中。然后选择OK,再选择quit。
2/etc/rcd/initd/portmap start //启动portmap
D编译安装rstatd
/configure
make all-am
make install-am
E起rstatd服务
/usr/local/sbin/rpcrstatd
F安装xinetd服务
yum install xinetdi386
/sbin/service xinetd restart
好了,liunx中的设置基本上都已经设置完了,接下来只要到loadrunner中加上对相应服务的监控就可以了
1不将LR装到服务器上是可以测试服务器的性能的。因为LR可以配置,链接到服务器上读服务器的各种参数。
2LR测试的当然是服务器的性能了。录制脚本的目的是模拟大量人访问数据库,然后分析脚本的运行结果可以间接的知道服务器的性能,直接访问服务器的各项服务及硬件的运行参数也可以分析出服务器的性能
首先、我们需要获得传送的数据包的内容,可以通过抓包工具来获取(如sniffer)。也可以直接向开发人员索取。要理解数据包中每位数据的含义,如哪些是启始位,哪些是正文,哪些是校验,哪些是结束等。并统计数据包大小。
第二步、我们开始编写脚本,
1、我们初始化Windows Sockets DLL:lrs_startup(version)。
2、然后建立socket连接:lrs_create_socket。
3、然后再把数据放在一个buffer中传送到目标服务器:lrs_send,数据包内容放在dataws中。这样,一个发送就完成了。
4、然后我们再来接受服务器端给我们的返回数据:lrs_receive。
5、别忘记来个lrs_close_socket来关闭socket,做事有始有终嘛。
简单吧,复杂的流程就是相互组合。最后不要忘记在一些关键点前后加上transaction,以方便得到关键点的性能。
第三步、我们开始执行,与其他协议一样,把得到的结果进行分析。
下面这段是zee写得关于手写winsock脚本。转载过来学习下
对winsock脚本来说,手写脚本不是首选。为了理解如何建立脚本和Buffers,你需要知道服务器发送出来的协议
的细节。
为了自动产生脚本,需要录制一个客户端的应用。
如果你对服务器使用的协议非常的了解,那么也许你可以建立一个Dataws文件和连贯的actions。但是这个过程
一定是单调而乏味的。你要有一些winsock脚本方面的经验。
为了看一个winsock脚本的例子,先试着录制一个简单的WEB应用(比如一个访问某站点首页的动作)。它会生成一
个简单的winsock脚本和buffer内容的格式。
为了建立LoadRunner的winsock脚本,录制一个客户端应用更可取。这样可以让LoadRunner从windows socket通
信中看到客户端和服务器的底层通信。LoadRunner使用wsock32dll库录制socket通信,这个库包括windows
socket的API。
为了手写LoadRunner的winsock脚本,需要非常熟悉使用的协议。录制一个简单的浏览器的操作可以看到低于HTT
P协议通信的脚本。
下面是一个简单的例子:
[Action section]
lrs_startup(257);
lrs_create_socket("socket3", "TCP", "RemoteHost=slashdotorg:80", LrsLastArg);
lrs_send("socket3", "buf4", LrsLastArg);
lrs_receive("socket3", "buf5", LrsLastArg);
[dataws section]
send buf4
"GET / HTTP/11\r\n"
"Host: slashdotorg\r\n"
"User-Agent: Mozilla/50 (Windows; U; Windows NT 50; en-US; rv:094) Geck"
"o/20011128 Netscape6/621\r\n"
"Accept: text/xml, application/xml, application/xhtml+xml, text/html;q=09,"
" image/png, image/jpeg, image/gif;q=02, text/plain;q=08, text/css, /;q"
"=01\r\n"
"Accept-Language: en-us\r\n"
"Accept-Encoding: gzip, deflate, compress;q=09\r\n"
"Accept-Charset: ISO-8859-1, utf-8;q=066, ;q=066\r\n"
"Keep-Alive: 300\r\n"
"Connection: keep-alive\r\n"
"Cache-Control: max-age=0\r\n"
"\r\n"
recv buf5 16716
"HTTP/11 200 OK\r\n"
"Date: Thu, 17 Jan 2002 15:27:13 GMT\r\n"
"Server: Apache/1320 (Unix) mod_perl/125 mod_gzip/13191a\r\n"
"SLASH_LOG_DATA: shtml\r\n"
"X-Powered-By: Slash 2003000\r\n"
"X-Bender: The laws of science be a harsh mistress\r\n"
"Connection: close\r\n"
"Transfer-Encoding: chunked\r\n"
"Content-Type: text/html\r\n"
为了建立这样的脚本,你要知道客户端和服务端通信的时候发送的buffer的格式。这种格式最好适用于指定协议
1、jmeter的架构和loadrunner原理一样,都是通过中间代理,监控和收集并发客户端发出的指令,把他们生成脚本,再发送到应用服务器,再监控服务器反馈结果的一个过程;
2、分布式中间代理功能在jmeter中也有,这个分页式代理是指可设置多台代理在不同PC中,通过远程进行控制,即通过使用多台机器运行的谓的agant来分担load generator自身的压力,并借引来获取更大的并发用户数,loadrunner也有此功能;
3、jmeter安装简单,只需要解压jmeter文件包到C盘上就可以了,不用安装,要是你想执行调试测试脚本,前提是:装上jdk和netbean插件,而loadrunner安装包有1G多,在一台P30,1G内存的PC上安装要一个多小时,要是装过旧的盗版还不能再装新版,解决办法倒是有,但麻烦且花时间;
4、Jmeter没有IP欺骗功能,IP欺骗是指在一台PC上多个IP地址分配给并发用户,这个功能对于模拟较真实的用户环境来说,是较有用,loadrunner有此功能;
5、jmeter也提供了一个利用本地proxy server(代理服务器)来录制生成测试脚本的功能,但是这个功能并不好用,测试对象的个别参数要手工增加上去,还得附带装个IE代理,如 GoogleToolbarDownloader这些插件来捕捉参数,但是有一个工具badbody,利用这个工具可以录制操作,然后选择将脚本保存为jmeter脚本,然后利用jmeter可以打开并修改脚本;
6、Jmeter的报表较少,对于要分析测试性能不足作为依据。如要知道数据库服务器或应用程序服务的cpu,money等参数,还得在相关服务器上另外写脚本记录服务器的性能;
7、jmeter做性能测试,主要是通过增加线程的数目,或者是设置循环次数来增加并发用户,而loadrunner可以通过在场景中选择要设置什么样的场景,然后选择虚拟用户数;
8、jmeter可以通过逻辑控制器实现复杂的测试行为,相当于loadrunner中的测试场景;
9、jmeter可以做web程序的功能测试,利用jmeter中的样本,可以做灰盒测试,loadrunner主要用来做性能测试;
10、jmeter是开源的,但是使用的人较少,网络上相关资料不全面,需要自己去揣摩,而loadrunner是商业软件,如果是正版本,有技术支持,同时,网络上的资料相当多;
11、Jmeter的脚本修改,主要是针对jmeter中各个部件的熟悉程序,已经相关的一些协议的掌握情况,而不依赖于编程,而loadrunner除了复杂的场景设置外,还需要掌握函数,修改脚本。
使用loadrunner进行IP欺骗首先要注意以下两点:
1、 本地的IP设置不能为“自动获取”,必须指定一个静态IP
如果本地是动态获取IP,在运行IP Wizard时会弹出提示:
The IP wizard does not support DHCP-enabled network cards
Your cards are either DHCP-enabled or configured with invalid settings
Please contact your system administrator
此时只需要将IP地址改成静态IP地址就可以了
2、 所添加的IP只能是局域网内的网段
只能添加192段,127段,10段IP地址
好下面开始介绍如何使用IP欺骗
一、添加IP地址
第一步:
运行Mercury LoadRunner- Tools-IP Wizard
弹出的IP设置向导中的各项含义如下:
1、 create new setting 新建IP列表
当我们第一次使用IP欺骗或已经释放所添加的IP时,需要选择此项添加新的IP地址
2、 load previous setting from file 读取IP列表文件
从以前设置的IP地址列表文件中读取IP地址
3、 restore original setting 释放已设置的IP
释放已经添加的IP地址
说明:loadrunner在做IP欺骗时,真实的虚拟了IP地址,该IP地址均真实存在,可以ping通,可以建立网络链接,在不使用时必须进行释放,否则这些IP地址将一直存在。
第二步:
选择create new setting,点击“下一步”
此时出现的页面是让输入服务器的IP FONT>地址,loadrunner通过该地址更新路由表。
客户端计算机上添加新的 IP 地址后,服务器需要将该地址添加到路由表,以便能够识别返回到客户端的路由。如果服务器和客户端具有相同的子网掩码、IP 类和网络,则不需要修改服务器的路由表。
注意: 如果客户端和服务器计算机之间有一个路由器,则服务器需要识别经过该
路由器的路径。确保将以下路由添加到服务器路由表:从 Web 服务器到路由器
的路由,以及从路由器到负载生成器计算机上的所有 IP 地址的路由。
第三步:
在输入服务器地址的页面中不输入任何地址,直接点击“下一步”
进入IP添加页面
点击“add”进行添加
第四步:
在from ip 输入框中输入起始ip,在Number to输入框中输入ip地址的位数
输入正确的子网掩码
选中“verify that new ip addresses are not already used”
点击“ok”,此时IP Wizard会自动按照设置生成IP地址,并且将已经占用的IP列出
第五步:
确认可用IP地址列表内容后,点击“ok”
此时IP Wizard提示需要重新启动计算机,点击“save as”保存IP列表
点击“ok”,重新启动计算机
第六步:
计算机重新启动后,在运行行中输入:CMD,在DOS命令窗口中输入:IPCONFIG,此时便可看到虚拟的IP地址均已经被启用
二、在loadrunner中使用虚拟IP
第一步:
打开controller,在controller中,选择 Scenario-〉Enable IP Spoofer,此项设置允许使用IP欺骗。
第二步:
设计场景:
有两种方案来设计场景
1、 本地使用虚拟IP设计场景(不带负载生成器使用localhost进行测试)
在设置该类场景时,在场景中添加一个录制好的脚本,该脚本中添加如下代码便可看到虚拟用户在使用哪个IP地址进行消息发送,该场景是通过线程方式进行性能测试。
char ip;
ip=lr_get_vuser_ip();
if (ip)
{
lr_vuser_status_message("The ip address is %s",ip);
}
else
lr_vuser_status_message("IP spoofing disabled");
在controller中执行该脚本时,查看虚拟用户运行状态,便可看到当前虚拟用户使用的哪个IP地址发送消息
2、 负载生成器使用虚拟IP设计场景
在设置该类场景时,需要添加负载生成器,建立负载生成器时输入创建的虚拟IP,每个负载生成器为一个虚拟用户组,该场景是通过进程方式进行性能测试。
如何添加负载生成器创建场景在这里就不多描述了。
但需要注意,选中Tools下的Expert mode,启动专家模式
再点击Tools下的options
在Genearl选项卡中设置已线程方式或进程方式进行性能测试,这个选项一定要与当前场景的模式相匹配,也就是说使用本地虚拟IP测试时需要选中线程方式,使用负载生成器使用虚拟IP测试时需要选中进程方式
三、使用虚拟IP测试完成后
打开IP Wizard,释放所有虚拟IP。
重新启动计算机
0条评论