性能自学路线图
1 概览
l 纵向划分3颗子树:vugen,controller,monitor。
l 优先学习vugen脚本开发以及调试。
l 横向划分为2层:基础知识以及高级应用。
2 基础知识
2.1 Loadrunner工具使用
2.1.1 建议学习路径
Vugen开发脚本(函数使用)->controller场景设置->monitor增加计数器
2.1.2 Vugen常用增强函数
增加事务:lr_start_transaction/:lr_end_transaction
检查点:web_reg_find
关联:web_reg_save_param,web_set_max_html_param_len
日志:lr_error_message,lr_log_message,lr_output_message…
选项设置:web_set_timeout
http header:web_add_auto_header
以及更改runtime setting。
2.1.3 Loadrunner架构图概览图
详细架构图:
2.2 Html/http协议
HTML 4.01 Specification:
l http://www.w3.org/TR/html4/
l http://www.eygle.com/digest/2006/12/html_xml_and_internet.html
对性能测试而言,META http-equiv控制http头、浏览器行为,故最为重要。
http请求与响应分析:
http://www.faqs.org/rfcs/rfc2616.html
客户端发送请求:
服务器响应:
2.3 C语言基础编程
Loadrunner常用的c函数主要集中在字符串操作、文件读写等。
如:Sprintf/strcmp/strlen Fopen/fread/fwrite
2.4 Linux性能分析初步
核心指令:
l Top
l Sar
l Vmstat
l Iostat
l Sar-n DEV
l /proc文件系统
分析经验性步骤:首先查看CPU使用情况,按照诊断CPU、内存或磁盘瓶颈的指导进行操作。对于下面的每个步骤,查找一端时间内的趋势,从中收集系统运行性能较差时的数据。另外,只有将这些数据与系统正常运行时收集的数据进行比较时才能进行准确的诊断。步骤1#sar-u[interval][iterations](示例:sar-u 5 30)%idle是否很低?这是CPU未在运行任何进程的时间百分比。在一端时间内%idle为零可能是CPU瓶颈的第一个指示。不是->系统未发生CPU瓶颈。转至步骤3。是->系统可能发生了CPU、内存或I/O瓶颈。转至步骤2。
步骤2%usr是否较高?很多系统正常情况下花费80%的CPU时间用于用户,20%用于系统。其他系统通常会使用80%左右的用户时间。不是->系统可能遇到CPU、内存或I/O瓶颈。转至步骤3。是->系统可能由于用户进程遇到CPU瓶颈。转至部分3,部分A,调整系统的CPU瓶颈。
步骤3%wio的值是否大于15?(不同os有不同的阀值)是->以后记住这个值。它可能表示磁盘或磁带瓶颈。转至步骤4。不是->转至步骤4。
步骤4#sar-d[interval][iterations]用于任何磁盘的%busy是否都大于50?(请记住,50%指示一个大概的指南,它可能远远高于您系统的正常值。在某些系统上,甚至%busy值为20可能就表示发生了磁盘瓶颈,而其他系统正常情况下可能就为50%busy。)对于同一个磁盘上,avwait是否大于avserv?不是->很可能不是磁盘瓶颈,转至步骤6。是->此设备上好像发生了IO瓶颈。转至步骤5。
步骤5系统上存在磁盘瓶颈,发生瓶颈的磁盘上有哪些内容?原始分区,文件系统->转至部分3,部分B,调整发生磁盘IO瓶颈的系统。Swap->可能是由于内存瓶颈导致的。转至步骤6。
步骤6#vmstat[interval][iterations]在很长的一端时间内,po是否总是大于0?对于一个s800系统(free*4k)是否小于2 MB,(对于s700系统free*4k是否小于1 MB)?(值2 MB和1 MB指示大概的指南,真正的LOTSFREE值,即系统开始发生paging的值是在系统引导时计算的,它是基于系统内存的大小的。)不是->如果步骤1中的%idle较低,系统则很可能发生了CPU瓶颈。转至部分3,部分A,调整发生了CPU瓶颈的系统。如果%idle不是很低,则可能不是CPU、磁盘IO或者内存瓶颈。请转至部分4,其他瓶颈。是->系统上存在内存瓶颈,转至部分3部分C,调整发生内存瓶颈的系统。
2.5 Windows性能分析初步
同windows perfmon。
同样集中在cpu,内存,io,网络上。
一般经验值:网络
网络利用率阀值没有统一。<30%or 80%?
冲突率:<1%
Packets Received Errors<1%
I/O:
Disk Time%<90%
Avg.Disk Bytes/Read+Avg.Disk Bytes/Write<20K
Avg.Disk sec/Transfer<0.3 sec
队列长度:Queue Length<2
Avg.Disk sec/Transfer<18 milliseconds
内存
Available Mbytes>25%
Page in+out<20次
内存泄露以及错误:
Pool Nonpaged Bytes:an increase of 10 percent or more from its value at system startup。
Server->Pool Nonpaged Failures shows the number of times allocations from nonpaged pool have failed-indicates that the computer`s physical memory is too small.应为0Server->Pool Paged Failures indicate that either physical memory or a paging file is near capacity.应为0Server->Pool Nonpaged Peak shows the maximum number of bytes in nonpaged pool the server has had in use at any one point.Indicates how much physical memory the computer should have.
处理器
利用率<85%
每个CPU队列长度<2
Context Switches/sec<5000次或者<5%of total threads
3 高级应用
3.1 性能建模
从business layer、function layer、session layer、customer layer出发,借助日志分析工具挖掘系统负载模型、用户行为模型。
Mercury End User Management正是一个从client视觉出发的业务监控解决方案。
3.2 网络嗅探器
如ethreal,fiddler,以及http debuger工具,诊断网络问题。
3.3 Loadrunner troubleshooting
各个环节都可能有问题。(client,通信,服务器)
经验性步骤:
诊断vugen脚本、loadrunner场景设置、客户端硬件资源是否充足
判断服务器端各层是否达到资源上限
借助ethereal等网络嗅探器判断c/s通信问题
3.4 性能调优分析思路
注:测试前分析业务,批量插入操作跟简单查询性能表现肯定不一样;
注重监控,一切性能调优的基础是以监控为基础
步骤:
1. 先看网络瓶颈
2. 在分析应用服务器操作系统资源是否瓶颈
3. 中间件是否存在瓶颈
4. 数据库是否存在瓶颈
5. 前端瓶颈
3.5 Linux性能分析与调优
深入了解:
l 进程/多线程编程
l 同步以及异步机制
l Gdb调试core
l 内核参数
3.6 Windows性能分析与调优
Windows其他计数器
3.7 C语言调用dll扩展测试脚本
Dll编写格式:
如
int__stdcall lr_getLinuxIOwait_end()
{
clnt_destroy(clnt);
}
.def文件
EXPORTS
lr_getLinuxIOwait_end@3
loadrunner调用dll函数:
lr_load_dll("my.dll");
3.8 Apache/jboss/weblogic/oracle性能优化
参见各个产品tuning文档
l http://httpd.apache.org/docs/2.0/misc/perf-tuning.html
l http://httpd.apache.org/docs/1.3/misc/perf-tuning.html
l http://edocs.bea.com/wls/docs81/perform/
l http://wiki.jboss.org/wiki/Wiki.jsp?page=JBossASTuningSliming
l http://www.jboss.org/index.html?module=bb&op=viewforum&f=121
3.9 计算机性能评测研究方向
Ø 相关理论研究(泊松分布、排队论、MaKov模型、Monte carlo模拟、自相似理论)
Ø 负载特性Workload Characteristic的研究(Commercial Workload/Technical Workload)
Ø 基准程序Benchmark的研究
Ø 性能指标的研究(全生命周期/高效能/TPO Total Productivity Ownership/SLA Servcie Level Agreement/QoS)
Ø 模拟器的研究(SimpleScalar/SimOS/SandOS)
Ø 测试系统的研究(Benchmark Factory/ServerScope/Benchmark Studio/LoadRunner/Forecast toolset)
Ø 监控系统Perfomance Evaluation(Intel Vtune/EMon/TeamQuest Lite/ServerScope-Monitor/Grid-View)
Ø 性能评测与体系结构的结合(Computer architecture analysis using workloads)
参见http://www.cnblogs.com/jackei/archive/2006/11/20/565527.html
3.10 Mercucy performance center
http://www.mercury.com/us/products/performance-center/
4 书籍推荐以及学习方法
4.1 功能测试
《软件测试的艺术》
http://www.besttest.cn/article.PHP?id=23
4.2 性能测试
《性能测试进阶指南-loadrunner11实战》
http://item.jd.com/1029394554.html
4.3 自动化测试
1)Selenium Testing Tools Cookbookhttp://www.besttest.cn/article.php?id=23
2)精通QTP:自动化测试技术领航http://item.jd.com/10903399.html
3)《JUnit实战(第2版)》http://item.jd.com/10960694.html
4)《自动化测试最佳实践》http://item.jd.com/11221731.html
4.4 Linux
这里介绍学习Linux的一些建议。
一、从基础开始常常有些朋友在linux论坛问一些问题,不过,其中大多数的问题都是很基础的。例如:为什么我使用一个命令的时候,系统告诉我找不到该目录,我要如何限制使用者的权限等问题,这些问题其实都不是很难的,只要了解了Linux的基础之后,应该就可以很轻易的解决掉这方面的问题。而有些朋友们常常一接触Linux就是希望构架网站,根本没有想到要先了解一下Linux的基础。这是相当困难的。
二、Linux命令是必须学习虽然Linux桌面应用发展很快,但是命令在Linux中依然有很强的生命力。Linux是一个命令行组成的操作系统,精髓在命令行,无论图形界面发展到什么水平这个原理是不会变的,Linux命令有许多强大的功能:从简单的磁盘操作、文件存取、到进行复杂的多媒体图象和流媒体文件的制作。举一个例子:Linux的常用命令find,察看man文档,初学者一定会觉得太复杂而不原意用,但是你一旦学会就爱不释手.它的功能实在太强了,在配合exec参数或者通过管道重定向到xargs命令和grep命令,可以完成非常复杂的操作,如果同样的操作用图形界面的工具来完成,恐怕要多花十几陪的时间。不同版本的Linux命令数量不一样,这里笔者把它们中比较重要的和使用频率最多的命令,按照它们在系统中的作用分成几个部分介绍给大家,通过这些基础命令的学习我们可以进一步理解Linux系统:安装和登录命令:login、shutdown、halt、reboot、mount、umount、chsh文件处理命令:file、mkdir、grep、dd、find、mv、ls、diff、cat、ln系统管理相关命令:df、top、free、quota、at、lp、adduser、groupaddkill、crontab、tar、unzip、gunzip、last网络操作命令:ifconfig、ip、ping、netstat、telnet、ftp、route、rloginrcp、finger、mail、nslookup系统安全相关命令:passwd、su、umask、chgrp、chmod、chown、chattr、sudo、pswho
三、选择一本好的工具书工具书对于学习者而言是相当重要的。一本错误观念的工具书却会让新手整个误入歧途。目前国内关于Linux的书籍有很多不过精品的不多,笔者强烈建议阅读影印本的“O'Reilly原版Linux图书http://www.oreilly.com.cn/”,而且出版社还提供了一个非常好的路线图:http://www.oreilly.com.cn/guide/guide_linux.php。
其他linux好书:
教程1:鸟哥的Linux私房菜:基础学习篇(第3版)http://item.jd.com/10064429.html
教程2:鸟哥的Linux私房菜:服务器架设篇(第3版)http://item.jd.com/11018248.html
教程3:《深入理解LINUX内核》教程4:《LINUX与UNIX Shell编程指南》http://www.besttest.cn/article.php?id=23
四、选择一个适合你的Linux发行版本目前全球有超过一百多个Linux发行版本,在国内也能找到十几个常见版本。如何选择请根据你的需求和能力,RedhatLinux和DebianLinux是网络管理员的理想选择。对于英语不是很好的读者红旗Linux、中标Linux这些中文版本比较适合。现在一些Linux网站有一些Linux版本的免费下载,这里要说的是并不适合Linux初学者。
五、养成在命令行下工作一定要养成在命令行下工作的习惯,要知道X-window只是运行在命令行模式下的一个应用程序。在命令行下学习虽然一开始进度较慢,但是熟悉后,您未来的学习之路将是以指数增加的方式增长的。从网管员来说,命令行实际上就是规则,它总是有效的,同时也是灵活的。即使是通过一条缓慢的调制解调器线路,它也能操纵几千公里以外的远程系统。
六、勤于实践要增加自己Linux的技能,只有通过实践来实现了。所以,赶快找一部计算机,赶快安装一个Linux发行版本,然后进入精彩的Linux世界,相信对于你自己的Linux能力必然大有斩获。对Linux命令熟悉后,你可以开始搭建一个小的Linux网络,这是最好的实践方法。Linux是网络的代名词,Linux网络服务功能非常强大,不论是邮件服务器、Web服务器、DNS服务器等都非常完善。当然你不需搭建所有服务,可以慢慢来。自己多动手,不要非等着别人帮你解决问题。
七、如何得到联机帮助和私有操作系统不同,各个Linux的发行版本的技术支持时间都较短,这对于Linux初学者是往往不够的。其实当你安装了一个完整的Linux系统后其中已经包含了一个强大的帮助,只是可能你还没有发现和使用它们的技巧。1.主流Linux发行版都自带非常详细的文档(包括手册页和FAQ),从系统安装到系统安全,针对不同层次的人的详尽文档,仔细阅读文档后40%问题都可在此解决。2.查阅经典工具书和Howto,特别是Howto是全球数以万计的Linux、Unix的经验总结非常有参考价值通常40%的问题同样可以解决。八、遇到问题是还学会如何提问下面我在论坛看到的一个好问题:“安装红旗4.0后,系统紫光输入法自带的双拼方案和我的习惯不一样,如何自定义双拼方案解决?谢谢?”这个问题很简练,五分钟后有人就给出了解决方法:“首先备份原文件到其他目录,然后删掉/usr/local/unispim/unispimsp.ksc,编辑/usr/local/unispim/unispimsp.ini,最后重启动计算机,生成新的unispimsp.ksc。”另外得到回复后如果问题解决,向帮助过你的人发个说明,让他们知道问题是怎样解决的;下面看看一个让人无法回答的问题:“救命各位高手,向你们请教一些问题:如何在Linux下配制HTTP、FTP、Samba、DNS、DHCP、Sendmail服务器,谢谢”这样的问题我想即使Linux高手也很难快速准确精练的回答你。你需要提供精确有效的信息。这并不是要求你简单的把成吨的出错代码或者数据完全转储摘录到你的提问中。如果你有庞大而复杂的测试条件,尽量把它剪裁得越小越好。可能你会遇到这种情况,对于一个问题会出现不同内容回答,这时你需要通过实践来验证。另外把这个问题放在其他Linux社区请求帮助也是一种选择。如果得不到答案,请不要以为我们觉得无法帮助你。有时只是看到你问题的人不知道答案罢了。这时换一个社区是不错的选择。另外发问的时候一定要注意到某些礼节。因为Linux社区是一个松散的组织、也不承担回复每个帖子的义务。它不是技术支持。
九、学习专业英文如果你想深入学习Linux,看不懂因为文档实在是太难了。写的最好的、最全面的文档都是英语写的,最先发布的技术信息也都是用英语写的。即便是非英语国家的人发布技术文档,也都首先翻译成英语在国际学术杂志和网络上发表。安装一个新的软件时先看README,再看INSTALL然后看FAQ,最后才动手安装,这样遇到问题就知道为什么。如果说明文档不看,结果出了问题再去论坛来找答案反而浪费时间。
4.4.1 Linux学习的路线图
1.掌握至少50个以上的常用命令。
2.熟悉Gnome/KDE等X-windows桌面环境操作。
3.掌握.tgz、.rpm等软件包的常用安装方法
4.学习添加外设,安装设备驱动程序(比如网卡)
5.熟悉Grub/Lilo引导器及简单的修复操作。
6.熟悉Linux文件系统?和目录结构。
7.掌握vi,gcc,gdb等常用编辑器,编译器,调试器?。
8.理解shell别名、管道、I/O重定向、输入和输出以及shell脚本编程。
9.学习Linux环境下的组网。
4.5 编程相关
《Java编程思想》
http://www.besttest.cn/article.php?id=23
基本知识:
html和CSS:
学习此网站内容即可:http://www.w3school.com.cn/html/index.asp
学习此网站内容即可:http://www.w3school.com.cn/css/index.asp
系统学习教程:HTML与CSS入门经典(第8版) http://item.jd.com/10794339.htmljavascript:
入门:学习此网站内容即可http://www.w3school.com.cn/js/index.asp
系统学习教程:avaScript入门经典(第4版) http://item.jd.com/10538497.htmlajax:
入门:学习此网站内容即可:http://www.w3school.com.cn/ajax/index.aspxml:
入门:学习此网站内容即可:http://www.w3school.com.cn/x.asp其中学习: xml\dtd\xml dom\wap(wap测试学习)
《A Byte of Python3》
http://www.besttest.cn/article.php?id=23
《Python核心编程》
http://www.besttest.cn/article.php?id=23
4.6 数据库
首先我想强调的一点是,任何一本系统的Oracle书籍只要认真读下来,都会有不错的收获,读书最忌讳的是虎头蛇尾,浅尝则止。
1.第一本要推荐给大家的是oracle的概念手册,这本手册是无数DBA学习的起点:Database Concepts这是Oracle的官方文档,详尽的介绍了Oracle的基本概念,是DBA经常需要翻阅的参考书,也是最好的入门学习资料,如果大家阅读英文不存在问题,请先阅读本书,这本书可以在Oracle的官方文档站点Tahiti找到:
http://www.oracle.com/pls/db102/homepage?remark=tahitiOracle10gR2的下载地址为:
http://download-west.oracle.com/docs/cd/B19306_01/server.102/b14220.pdf当然我建议大家都从英文版开始你的阅读,即便你的英文不够好,但是如果你觉得还是有障碍,网络上已经有很多朋友将这本手册翻译成了中文,我打包了两个版本(如果CHM格式无法打开,请在右键属性页里选择解除锁定),提供下载:
http://www.eygle.com/orabk/OraDoc/Oracle.Concepts.zipOracle官方文档网站:
http://docs.oracle.com上有官方文档的在线版本,可以用于查询浏览,推荐。
2.第二本要推荐的是Thomas Kyte的《Expert One on One:Oracle》,这本书的中译本,被称为《Oracle专家高级编程》。毋庸多说,这本书是Oracle界的经典之作,最初是基于Oracle8i进行写作的,现在Tom(看oracle不看tom,那还看什么oracle书籍)已经出版了基于Oracle9i/Oracle10g的升级版,书名为《Oracle Database Architecture 9i and 10g Programming Techniques and Solutions》,现在中文译本也已经快要出版了。这本书的前几章以介绍Oracle的基础知识为主,后几章则以介绍开发相关的内容为主,侧重于管理DBA的朋友可以着重阅读一下该书的前几章。Expert One on One:Oracle这本书中文版大家可以参考:
http://www.itpub.net/showthread.php?threadid=224536其英文版本参考:
http://www.itpub.net/showthread.php?threadid=316444Oracle Database Architecture 9i and 10g Programming Techniques and Solutions这本书的:英文版参考
http://www.itpub.net/showthread.php?threadid=486715中文版参考:
http://www.itpub.net/thread-969575-1-3.html英文第二版参考:
http://www.itpub.net/thread-1330894-1-1.html我强烈推荐大家仔细阅读本书。
5 测试网站
http://www.besttest.cn/article.php?id=23(重点推荐,每天都更新)
http://www.besttest.cn/article_category.php?id=4
http://www.avoka.com/resources/white_papers.shtml
http://www.qaforums.com
http://xqtesting.blog.51cto.com
http://support.mercury.com