-
LoadRunner监控Linux与Windows方法
2013-08-14 17:25:44
LoadRunner监控Linux与Windows方法
一、监控windows系统:
1、监视连接前的准备工作
1)进入被监视windows系统,开启以下二个服务Remote Procedure Call(RPC) 和Remote Registry Service (开始—)运行 中输入services.msc,开启对应服务即可)。
2)在被监视的WINDOWS机器上:右击我的电脑,选择管理->共享文件夹->共享 在这里面要有C$这个共享文件夹 (要是没有自己手动加上)。
3)在安装LR的机器上,开始—》运行,输入 \\被监视机器IP\C$ 然后输入管理员帐号和密码,如果能看到被监视机器的C盘了,就说明你得到了那台机器的管理员权限,可以使用LR去连接了。(LR要连接WINDOWS机器进行监视要有管理员帐号和密码才行。)
问题:在执行步骤3)时,输入 \\被监视机器IP\C$,出现不能以administrator身份访问被监控系统(若采用这种方式用LR对其监控的话,会提示:“找不到网络路径”)的情况,现象就是用户名输入框是灰色的,并且默认用户是guest。
解决办法:这是安全策略的设置问题(管理工具 -> 本地安全策略 -> 安全选项 ->“网络访问:本地帐户的共享和安全模式”)。默认情况下,XP的访问方式是“仅来宾”的方式,如果你访问它,当然就固定为Guest来访问,而guest账户没有监控的权限,所以要把访问方式改为“经典”模式,这样就可以以administrator的身份登陆了。修改后,再次执行步骤3),输入管理员用户名和密码,就可以访问被监控机器C盘了。
若这样都不行的话(可能是其它问题引起的),那只好采取别的方法了。在服务器的机子上,通过windows自带的“性能日志和警报”下的“计数器日志”中新增加一个监控日志(管理工具—)性能—)性能日志和警报),配置好日志,也能监控服务器的cpu、memory、disk等计数器。当然,这种方法就不是用LR来监控了。
2、用LR监视windows的步骤
在controller 中,Windows Resources窗口中右击鼠标选择Add Measurements,添加被监控windows的IP地址,选择所属系统,然后选择需要监控的指标就可以开始监控了。
二、监控linux
1 准备工作
可以通过两种方法验证服务器上是否配置了rstatd守护程序:
①使用rup命令,它用于报告计算机的各种统计信息,其中就包括rstatd的配置信息。使用命令rup 10.130.61.203,此处10.130.61.203是要监视的linux/Unix服务器的Ip,如果该命令返回相关的统计信息。则表示已经配置并且激活了rstatd守护进程;若未返回有意义的统计信息,或者出现一条错误报告,则表示rstatd守护进程尚未被配置或有问题。
②使用find命令
#find / -name rpc.rstatd,该命令用于查找系统中是否存在rpc.rstatd文件,如果没有,说明系统没有安装rstatd守护程序。
如果服务器上没有安装rstatd程序(一般来说LINUX都没有安装),需要下载一个包才有这个服务,包名字是rpc.rstatd-4.0.1.tar.gz. 这是一个源码,需要编译,下载并安装rstatd(可以在[url]http://sourceforge.net/projects/[/url]rstatd<wbr>这个地址下载)
下载后,开始安装,安装步骤如下:
tar -xzvf rpc.rstatd-4.0.1.tar.gz
cd rpc.rstatd-4.0.1/
./configure —配置操作
make —进行编译
make install —开始安装
rpc.rstatd —启动rstatd进程
2)安装完成后配置rstatd 目标守护进程xinetd,它的主配置文件是/etc/xinetd.conf,它里面内容是一些如下的基本信息:
#
# xinetd.conf
#
# Copyright (c) 1998-2001 SuSE GmbH Nuernberg, Germany.
# Copyright (c) 2002 SuSE Linux AG, Nuernberg, Germany.
#
defaults
{
log_type = FILE /var/log/xinetd.log
log_on_success = HOST EXIT DURATION
log_on_failure = HOST ATTEMPT
#only_from = localhost
instances = 30
cps = 50 10
#
# The specification of an interface is interesting, if we are on a firewall.
# For example, if you only want to provide services from an internal
# network interface, you may specify your internal interfaces IP-Address.
#
# interface = 127.0.0.1
}
includedir /etc/xinetd.d
我们这里需要修改的是/etc/xinetd.d/下的三个conf文件 rlogin,rsh,rexec这三个配置文件,打这三个文件里的disable = yes都改成 disable = no ( disabled 用在默认的 {} 中 禁止服务)或是把# default: off都设置成 on 这个的意思就是在xinetd启动的时候默认都启动上面的三个服务!
说明:我自己在配置时,没有disable = yes这项,我就将# default: off改为:default: on,重启后(cd /etc/init.d/ ./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服务器已经启动。
只要保证Linux机器上的进程里有rstatd和xinetd这二个服务就可以用LR去监视了。
两点小的技巧:
①检查是否启动: rsh server 监听的TCP 是514。
[root@mg04 root]# netstat -an |grep 514
tcp 0 0 0.0.0.0:514 0.0.0.0:* LISTEN
如果能看到514在监听说明rsh服务器已经启动。
②检查是否启动: rstatd
输入命令: rpcinfo -p
如果能看到类似如下信息:
程序 版本 协议 端口
100001 5 udp 937 rstatd
100001 4 udp 937 rstatd
100001 3 udp 937 rstatd
100001 2 udp 937 rstatd
100001 1 udp 937 rstatd
那就说明rstatd服务启动了,(当然这里也可以用ps ax代替)
③重起xinetd方法:
在suse linux如下操作:
cd /etc/init.d/
./xinetd restart
看到网上有的地方说使用如下命令:
# service xinetd reload
# /sbin/service xinetd rstart
不知道是在什么系统用的。
④安装rsh,和rsh-server两个服务包方法
a. 卸载rsh
# rpm –q rsh----------查看版本号
# rpm -e 版本号---------卸载该版本。
b.安装
# rpm –ivh rsh-0.17-14.i386.rpm rsh-server-0.17-14.i386.rpm
⑤在启动rpc.rstatd时,会报错“Cannot register service: RPC: Unable to receive;errno = Ction refused”。
解决方法如下:
# /etc/init.d ./portmap start
# /etc/init.d ./nfs start
然后再次启动rpc.rstatd就好了。
最后,在controller中,将UNIX resources拖放到右边窗口里面,右击鼠标选择Add Measurements,添加被监控linux的IP地址,然后选择需要监控的指标就可以了。
三、监控UNIX
lr监控UNIX,UNIX先启动一rstatd服务
以下是在IBM AIX系统中启动rstatd服务的方法:
1、 使用telnet以root用户的身份登录入AIX系统
2、 在命令行提示符下输入:vi/etc/inetd.conf
3、 查找rstatd,找到
#rstatd sunrpc_udp udp wait root /usr/sbin/rpc.rstatd rstatd 100001 1-3
4、将#去掉
5、:wq保存修改结果
6、命令提示符下输入:refresh –s inetd 重新启动服务。
这样使用loadrunner就可以监视AIX系统的性能情况了。
注:在HP UNIX系统上编辑完inetd.conf后,重启inetd服务需要输入inetd -c
UNIX上也可以用rup命令查看rstatd程序是否被配置并激活
若rstatd程序已经运行,重启时,先查看进程ps -ef |grep inet,然后杀掉进程,再refresh –s inetd进行重启。
-
LoadRunner使用遇到的问题集锦
2013-08-14 16:59:04
LoadRunner使用遇到的问题集锦
- 文章来源:【转载】
1、把HTML的内容输出到LOG中的方法
1、在脚本要记录HTML的URL前面加入函数:web_create_html_param("MyHtml", "<html>", "");;
2、在脚本要记录HTML的URL后面加入函数:lr_output_message("###the HTML is %s", lr_eval_string(" {MyHtml}"));;
3、在Controller中设置Run-Time Settings,把log设置为Always Send Message;
4、在Controller中设置Run-Time Settings,把Miscellaneous设置为在发生错误时继续运行(在这里不是必须);
5、在Controller中设置Run-Time Settings,把Preferences设置为Enable image and text check;(在这里不是必须);
6、在Controller的日志文件RES中可以查看到每个虚拟用户的LOG;
2、如何在Controller中添加系统资源检测
今天早上突然想把Windows的性能监视放到LR中,达到方便快捷的目的,下面的是具体的步骤:
1、使用192.168.0.159作为监控的对象,开通Remote Procedure Call和Remote Registry两个服务,Remote Registry一般都是给禁止的,可以改为手动并启动;
2、在159中右击我的电脑,选择管理->共享文件夹->共享 在这里面要有C$这个共享文件夹;
3、在159中使用命令netstat /ano查看445端口是否被打开;
4、输入\\192.168.0.159\c$,再输入用户名和密码,如果能进入c盘,那就说明有控制权了;
5、在Controller的Run中找到Windows Resources,对图点击右键中的Add Measurements,添加计数器;
6、需注意159机上的BlackIce;
7、对Windows Resources Graph的技巧使用,可以冻结窗体,导出HMTL,显示某个计数器等;
3、对ANALYSIS中不能导出页面细分下的子项的问题的处理方法?
1、问题描述:对ANALYSIS的导出WORD功能中只能导出树中的图表,在页面细分中点击不同的节点会有不同的图表,但是却无法把所有节点的图表一起导出;
2、如果想生成Time to First Buffer Breakdown下面Login事务和Loading事务下的图表都导出来,方法就是新建两张Time to First Buffer Breakdown图表,在不同的下面点击图表,并修改名称;
3、在导出列表中选中要导出的图表:Time to First Buffer Breakdown-All && Time to First Buffer Breakdown-Login && Time to First Buffer Breakdown-Loading;
4、总结:虽然这样做有点麻烦,但是比之前点击每个图再导出一个WORD来有用的多,但是LR可以做到在导出列表中以树的形式显示可以导出的图表,不过LR要解决图表没有名称的问题;
4、在中文版Analysis中显示系统资源图的原因与解决
1、是否可以通过修改ACCESS记录来修改这个BUG?
2、不知道它添加图表的列表是不是通过数据库LOAD的?迄今还没有找到这些记录,只找到资源图表数据;
3、解决办法1:是用VNC截图,但是这样只能看到计数器曲线,没什么意义;
4、解决办法2:在Controller中导出系统资源数据,里面有量化数据,比较真实,不过每个场景都要导出一次就很麻烦,并且不好管理,无法对数据进行帅选和合并,如果打开导出的页面有乱码,那就在编码方式选择"自动选择";
5、解决办法3:使用英文版生成的ANALYSIS,再拿到中文版下面,是可以看到系统资源这个图表的,其实我应该早想到这样的,因为在中文版下无法显示不是Analysis的错,而是Controller的错,Analysis里面是包括ACCESS和其它包含系统资源的记录的,所以在中文版是能显示的;
5、终于使用LR实现了不同虚拟用户使用不用的帐号登陆,实行不同用户并发的问题
1、在脚本设计中添加参数,参数名称为LoginUserName,选择参数类型为FILE;
2、很关键的一步就是:选者UNIQUE和EACH ITERATION/ONCE;
3、在脚本中把登陆名改为参数名;
4、使用Controller进行测试,在运行时设置LOG记录;
5、查看LOG,可以看到每个虚拟用户是使用不同的帐号登陆的;
6、总结:使用SEQUENTIAL会使得参数每次出现的地方的值都不一样;如何想使用更多用户的登陆可以使用参数数据库化;
(参考:LoadRunner参数化)
6、 LR参数数据库化(姑且这么叫,就是参数的来源于数据库)实践
1、以XQP登陆帐号为例,把bw_Users表中的UserName做为参数LoginUserName的值;
2、过程都比较简单,需要注意的是使用FILE参数类型,参数值列表中的值只有100个,其它的可以通过Edit with Notepad查看;
3、在Update Value on 中有以下几个选项:
Each Occurrence:在运行时,每遇到一次该参数,便会取一个新的值;
Each iteration:运行时,在每一次循环中都取相同的值;
Once:运行时,在每次循环中,该参数只取一次值;
可以看出,是按照从脚本小范围到大范围的选择;
4、在Select next row 有以下几种选择:
Sequential:按照顺序一行行的读取。每一个虚拟用户都会按照相同的顺序读取;
Random:在每次循环里随机的读取一个,但是在循环中一直保持不变;
Unique :唯一的数。注意:使用该类型必须注意数据表有足够多的数;
Same Line As 某个参数(比如Name):和前面定义的参数Name 取同行的记录;通常用在有关联性的数据上面;
可以看出,是和循环(迭代)很有关系的;
7、 发现可以对参数数据库化的数据进行作弊,作弊方法如下:
1、使用数据库管理器导出想要的数据为EXCEL;再保存为dat文件,再参数设置里面引用该文件;
2、在脚本文件夹中找到[参数名].dat文件;
3、对[参数名].dat文件进行编辑,把EXCEL中的数据拷贝到dat文件中;
4、进入脚本编辑,查看参数,可以见到刚刚拷贝的数据;
总结:虽然这个方法没什么很大用处,但是在无法使用VUGenerator连接数据库的时候就非常有用;
8、当在此函数中,查找的text="中文"时,LR硬是报错,换成英文字体便成功。后来,查了好久,发觉是Record-Options 中我勾选了support charset中的UTF-8,可能是录制过程中LR捕捉到的是中文,而回放过程中此函数在HTML原文件中查找到的却是乱码?总而言之,把此选项去除之后,重新录制脚本,回放能够成功了!
9、LoadRunner场景执行时出现错误:“load generator is currently running the maximum number of vuser of this type”
解决方法:
Loadruuner默认场景并发最大用户数=1000,所以需要设置load generator->Details->Vuser limits->Other Vusers更换参数值即可,如10000;当然需要你的序列号是支持,目前最大支持6.2w的序列号。
-
系统性能调优经验分享(转载)
2013-08-14 16:57:00
系统性能调优经验分享(转载)
性能优化的思路
首先是较为精准的定位问题,借助于相应的工具包,分析系统性能瓶颈在哪,在根据其性能指标,以及所处于层级决定选择优化的方式方法。在选择优化的方式方法时,大家可以参照以下章节调优方法,架构优化递进,进行正确的,有针对性,有步骤的优化。可能会发现部分指导思想或许有相悖嫌疑,大可不必较真,系统优化的过程本身就是一个不断分离+共享的组合拳,至于具体选择哪种优化方式,根据具体需求来定,但大型应用发展的总体思路是不断分离,在通过索引(非数据库)进行关联起来,
切记:优化一定要对系统进行细致的望闻问切,找到性能问题根源切入点,而不被表象迷糊,对症下药,发现病症所在的医生并不比操作手术刀的医生水平差。本文有工具包一章节,对于需要做优化的人员,需要熟悉,他就是我们诊断所用的CT,例如我们发现内存高了,首先想到不是内存不够用,而是为什么如此消耗内存,用工具看看内存消耗在什么地方,试想之,如在医院,病人告诉医生,他心脏不好,医生就换心脏,那样的话,每个人只要熟练掌握菜刀,都可以做医生
迭代优化
性能优化未必一次性就能满足的,可能此处瓶颈消失了,系统一旦运转快速后,在其他地方又发现新的性能瓶颈,所以性能优化是一个迭代的工作。直至满足系统需要的性能指标。
优化的成本
系统性能设计或优化是否可以一步升天,按照最好的分布式架构进行设计和优化呢,单个节点一直也运转及其健康,理论上是可以达到共产国际的,但实际实施层面不可取,必须结合实际的非功能需求进行设计和优化,一则一步到极致的话,系统的成本太过虑庞大,光是性能设计和优化的成本就高于系统本身给客户所提供的价值,也造成研发成本开销过大。二则好像能够架构这样完美系统的人还没诞生。所以一句话也同样适合架构师:有理想而不理想化,废话少扯:具体见法则
调优方法
数据库优化
很多应用,优化DB往往是最直接,最方便,见效最显著的,但并非所有的系统性能都处在瓶颈,或者DB瓶颈解决之后,可能应用层瓶颈,WEB层瓶颈,甚至架构瓶颈都会冒出来了,所以数据库优化十分重要,但往往很多人理解系统优化就是数据库优化,是不全面的。优化角色一般推荐具备较深数据知识的程序员,或者专业的DBA,而不只是会CRUD开发人员
◆ 建立正确的主键,外键,以及索引
◆ 分离原则:读写分离,业务数据分离
a) 分库
b) 分区
c) 分表
d) 分列(将大字段,不常用的隔离到他表,按需查询)
◆ 选择隔离级别:某些对数据一致性要求不高的,可以牺牲部分一致性,降低加锁阻塞
◆ 保证事务简短以及减少不必要的锁机制。
◆ 查询优化规则:
e) 避免表内的相关子查询;
f) 避免排序或为尽可能少的行排序,
g) 做大量数据排序时相关数据放在临时表中
h) .尽量在where后多传查询条件,以减少不必要返回的行
i) .尽量select只需要的字段,以减少不必要返回的列
◆ 分页存储过程:大列表的查询也可以利用分页存储过程达到优化效果。
◆ 利用数据库缓存,视图,临时表等最大程度优化系统,并对存储过程和函数进行必要的优化
◆ 如有需要,可以冗余表中字段,避免联合查询
◆ 如有需要,也可以将表内的大字段分离到单独表中,使其单独查询
◆ 必做多表关联时,尽量过滤不符条件表中数据,减少笛卡尔积计算量
◆ 复杂表表:如实时性要求不高,尽量后台任务计算,避免动态查询
应用层优化
应用层优化侧重于应用层本身的逻辑优化,算法优化,代码优化等,优化的角色可以是熟悉应用的程序员
◆ 优化算法,选择合适高效的算法,降低不必要的递归,循环、多层循环嵌套等计算
◆ 避免申请过多的不必要的内存开销
◆ 降低内存泄露(using,Dispose,弱引用,Finalize)
◆ 使用频率较低的大文件,大对象,大数组等使用完毕后,及时释放
◆ 使用频率较高的大文件,大对象,大数组尽量缓存
◆ 考虑多线程技术
◆ 选择适当的通信方式:长连接,短连接,有以下方式Socket、Remoting、Web Services(Rest,Soap)、WCF、 Named Pipes
◆ 降低应用之间通信次数,例用户认证服务,工作流服务,数据库服务
◆ 降低应用之间传输数据量,不必要传输的不传,少传
◆ 缓存机制:缓存常用的,不易变化的,偶有变化,可以考虑缓存依赖机制
◆ 支持异步计算,降低等待时间
◆ 考虑延迟加载,或者提前加载两种方式
◆ 分离原则:分离业务模块,如分离大I/O模块、分离高耗内存模块,分离高耗宽带模块
◆ 考虑分布式应用,分布式存储,如以上所有仍然搞不定的
Web优化
Web优化偏向于熟悉前端开发的技术人员
◆ 减少http请求
◆ 避免404错误
◆ 在html页面header加入缓存标签
◆ Gzip压缩网页
◆ 减少cookie体积
◆ 使用外部的js和css
◆ 消减js和css
◆ 压缩js
◆ 使用css sprites技术,众多图片合成在一起,通过CSS切分,降低图片传输的频率和数据量
◆ 可以使用静态网页的,避免使用动态网页
架构优化递进
为以示与应用层优化的区别,本文对架构的描述更侧重偏向于物理层面,再次赘述下,涉及变更架构的,需要我们的应用具有良好的拓展性,考验我们的架构师平时的功底,如何刚刚好满足需求以及两三年内业务增量,但并非架构做的越强大,越灵活,越可配置,越易水平拓展就是越好的,其一考虑此应用的投入产出比,换言之,是否值得投入这么多架构设计成本,其二架构设计也是具有一定的时效性的,IT速度太快了,今天的好东西未必是明天的好东西,年轻貌美的姑娘,总有变成老太婆那一天嘛,再者、越灵活的架构,就意味着存在更多的配置项,从某一方面,反而增加了系统的复杂度,最后、很多大型,成熟的应用,也并非一蹴而就,而是通过不断的调整优化,不断变更架构的。圣人也并非天生的,而是不断的总结,提炼,优化,重构
◆ 硬件方面使用高性能的小型机、存储设备。使用极好的网络带宽
◆ 物理分离Web Server和DB Server或者其他服务如:用户认证服务
◆ 缓存
ü 数据缓存机制
ü 页面缓存机制
◆ 物理分离业务模块,单业务单独部署一台服务器
◆ 部署多台Web Server
◆ Web负载均衡-F5
◆ 数据读写分离
◆ 使用消息队列 进行各种应用间进行同步/异步计算
◆ 应用间选择合适的通信方式,通信协议
◆ Web分布式,应用分布式,数据分布式
◆ 分布式的节点使用高性能服务器,小型机群,辅以高速网络带宽等
工具包
◆ 进程管理器,CPU,内存,I/O
◆ 使用dotTrace,跟踪方法执行时间,找出速度慢的方法,针对性优化
◆ Sql Profile跟踪SQL耗时情况,针对性优化
◆ HttpWatch跟踪请求耗时,以及发送和收到数据量
◆ Performance Count,使用计数器,统计相关性能指标
◆ CLRProfiler内存泄露检测工具
◆ LoadRunner,压力测试,发现性能瓶颈
其他补充
-
如何使用LoadRunner监控Windows
2013-08-14 16:46:31
如何使用LoadRunner监控Windows
- 文章来源:【转载】
1、监视连接前的准备工作
1)进入被监视windows系统,开启以下二个服务Remote Procedure Call(RPC) 和Remote Registry Service (开始—)运行 中输入services.msc,开启对应服务即可)。
2)在被监视的WINDOWS机器上:右击我的电脑,选择管理->共享文件夹->共享 在这里面要有C$这个共享文件夹(要是没有自己手动加上)。
3)在安装LR的机器上,开始—》运行,输入 \\被监视机器IP\C$ 然后输入管理员帐号和密码,如果能看到被监视机器的C盘了,就说明你得到了那台机器的管理员权限,可以使用LR去连接了。(LR要连接WINDOWS机器进行监视要有管理员帐号和密码才行。)
问题:在执行步骤3)时,输入 \\被监视机器IP\C$,出现不能以administrator身份访问被监控系统(若采用这种方式用LR对其监控的话,会提示:“找不到网络路径”)的情况,现象就是用户名输入框是灰色的,并且默认用户是guest。
解决办法:这是安全策略的设置问题(管理工具 -> 本地安全策略 -> 安全选项 ->“网络访问:本地帐户的共享和安全模式”)。默认情况下,XP的访问方式是“仅来宾”的方式,如果你访问它,当然就固定为Guest来访问,而guest账户没有监控的权限,所以要把访问方式改为“经典”模式,这样就可以以administrator的身份登陆了。修改后,再次执行步骤3),输入管理员用户名和密码,就可以访问被监控机器C盘了。
若这样都不行的话(可能是其它问题引起的),那只好采取别的方法了。在服务器的机子上,通过windows自带的“性能日志和警报”下的“计数器日志”中新增加一个监控日志(管理工具—)性能—)性能日志和警报),配置好日志,也能监控服务器的cpu、memory、disk等计数器。当然,这种方法就不是用LR来监控了。
2、用LR监视windows的步骤
在controller 中,Windows Resources窗口中右击鼠标选择Add Measurements,添加被监控windows的IP地址,选择所属系统,然后选择需要监控的指标就可以开始监控了。
标题搜索
我的存档
数据统计
- 访问量: 7738
- 日志数: 14
- 建立时间: 2008-09-24
- 更新时间: 2013-08-14