楠族开心果 发表于 2011-1-27 09:08:16

性能测试和优化

压力测试和评测工具 Siege
Siege是一个压力测试和评测工具,设计用于WEB开发这评估应用在压力下的承受能力:可以根据配置对一个WEB站点进行多用户的并发访问,记录每个用户所有请求过程的相应时间,并在一定数量的并发访问下重复进行。

测试实例:

Ben: $ siege -u shemp.whoohoo.com/Admin.jsp -d1 -r10 -c25 ..Siege 2.65 2006/05/11 23:42:16 ..Preparing 25 concurrent users for battle. The server is now under siege...done Transactions:                  250 hits Elapsed time:                  14.67 secs Data transferred:             448000 bytes Response time:                  0.43 secs Transaction rate:            17.04 trans/sec Throughput:               30538.51 bytes/sec Concurrency:                  7.38 Status code 200:               250 Successful transactions:         250 Failed transactions:               0
授权协议: GPL
开发语言: C/C++
操作系统: UNIXBSDLinux
收录时间: 2008年09月15日

楠族开心果 发表于 2011-1-27 09:08:54

本帖最后由 楠族开心果 于 2011-1-27 09:12 编辑

Java内存使用分析 HeapAnalyzer
HeapAnalyzer 是 IBM 的一个用来分析 Java 程序的内存堆使用情况的图形化工具。

授权协议: 未知
开发语言: Java
操作系统: 跨平台
收录时间: 2010年04月23日

楠族开心果 发表于 2011-1-27 09:09:40

本帖最后由 楠族开心果 于 2011-1-27 09:20 编辑

Linux内核性能分析 OProfile
OProfile是Linux内核支持的一种性能分析机制。

它在时钟中断处理入口处建立监测点,记录被中断的上下文现场,由配套的用户态的工具oprof_start负责在用户态收集数据,opreport则分析数据并给出分析报告。

通过这个工具,开发人员可以得知一个程序的瓶颈在哪里,进而指导代码优化。



授权协议: 未知
开发语言: C/C++
操作系统: Linux

楠族开心果 发表于 2011-1-27 09:10:20

本帖最后由 楠族开心果 于 2011-1-27 09:12 编辑

Spring Insight
Spring Insight 是一项可以让你深入应用运行时刻,以可视化的方式查看应用的性能和行为:

See the SQL executed for any page request
Find pages which are executing slowly and drill into the cause
Verify your application's transactions are working as designed
Screencasts


授权协议: 未知
开发语言: Java
操作系统: 跨平台
收录时间: 2010年05月27日

楠族开心果 发表于 2011-1-27 09:10:59

本帖最后由 楠族开心果 于 2011-1-27 09:12 编辑

压力测试工具 JMeter
JMeter是Apache组织的开放源代码项目,它是功能和性能测试的工具,100%的用java实现。



授权协议: Apache
开发语言: Java
操作系统: 跨平台
收录时间: 2008年09月15日

楠族开心果 发表于 2011-1-27 09:13:01

Microsoft Web Application Stress Tool
Microsoft Web Application Stress Tool 是由微软的网站测试人员所开发,专门用来进行实际网站压力测试的一套工具。透过这套功能强大的压力测试工具,您可以使用少量的Client端计算机仿真大 量用户上线对网站服务所可能造成的影响。



授权协议: 免费,非开源
开发语言: C/C++
操作系统: Windows
收录时间: 2008年09月15日

楠族开心果 发表于 2011-1-27 09:13:29

Java程序性能分析工具 VisualVM
VisualVM是一个集成多个JDK命令行工具的可视化工具。可以作为Java应用程序性能分析和运行监控的工具。开发人员可以利用它来监控,分析,获 胜Thread-Dumps,浏览Heap dumps。系统管理员可以利用它来监测,控制Java应用程序横跨整个网络的情况。Java应用程序使用人员可以利用它来创建包含所有必要信息的Bug 报告。



授权协议: 未知
开发语言: Java
操作系统: 跨平台
收录时间: 2008年09月24日

楠族开心果 发表于 2011-1-27 09:13:59

MySQL压力测试工具 mysqlslap
mysqlslap是一个mysql官方提供的压力测试工具。以下是比较重要的参数:
–defaults-file,配置文件存放位置
–concurrency,并发数
–engines,引擎
–iterations,迭代的实验次数
–socket,socket文件位置

自动测试:
–auto-generate-sql,自动产生测试SQL
–auto-generate-sql-load-type,测试SQL的类型。类型有mixed,update,write,key,read。
–number-of-queries,执行的SQL总数量
–number-int-cols,表内int列的数量
–number-char-cols,表内char列的数量

例如:
shell>mysqlslap –defaults-file=/u01/mysql1/mysql/my.cnf –concurrency=50,100 –iterations=1 –number-int-cols=4 –auto-generate-sql –auto-generate-sql-load-type=write –engine=myisam –number-of-queries=200 -S/tmp/mysql1.sock
Benchmark
Running for engine myisam
Average number of seconds to run all queries: 0.016 seconds
Minimum number of seconds to run all queries: 0.016 seconds
Maximum number of seconds to run all queries: 0.016 seconds
Number of clients running queries: 50
Average number of queries per client: 4

Benchmark
Running for engine myisam
Average number of seconds to run all queries: 0.265 seconds
Minimum number of seconds to run all queries: 0.265 seconds
Maximum number of seconds to run all queries: 0.265 seconds
Number of clients running queries: 100
Average number of queries per client: 2

指定数据库的测试:
–create-schema,指定数据库名称
–query,指定SQL语句,可以定位到某个包含SQL的文件

例如:
shell>mysqlslap –defaults-file=/u01/mysql1/mysql/my.cnf –concurrency=25,50 –iterations=1 –create-schema=test –query=/u01/test.sql -S/tmp/mysql1.sock
Benchmark
Average number of seconds to run all queries: 0.018 seconds
Minimum number of seconds to run all queries: 0.018 seconds
Maximum number of seconds to run all queries: 0.018 seconds
Number of clients running queries: 25
Average number of queries per client: 1

Benchmark
Average number of seconds to run all queries: 0.011 seconds
Minimum number of seconds to run all queries: 0.011 seconds
Maximum number of seconds to run all queries: 0.011 seconds
Number of clients running queries: 50
Average number of queries per client: 1

授权协议: 未知
开发语言: C/C++
操作系统: 跨平台
收录时间: 2008年09月15日

楠族开心果 发表于 2011-1-27 09:14:26

改进网页设计的工具 Page Speed
Page Speed最 初是Google内部使用的改进网页设计的工具——它整合在Firefox的著名插件Firebug中。当用户运行Page Speed,可以立即获得如何改进网页载入速度的建议。Page Speed能自动为用户优化图像,提供可以发布在网页上的压缩图片,它也能识别JavaScript和CSS载入问题,帮助开发者减少浏览者等待网页展示 的时间。


授权协议: 未知
开发语言: C/C++
操作系统: Mac OSLinuxWindows
收录时间: 2009年06月05日

楠族开心果 发表于 2011-1-27 09:14:54

Tsung
压力测试工具,可以测试包括HTTP, WebDAV, PostgreSQL, MySQL, LDAP, and XMPP/Jabber等服务器



授权协议: 未知
开发语言: ErLang
操作系统: Linux
收录时间: 2008年09月20日

楠族开心果 发表于 2011-1-27 09:15:14

web性能测试工具 OpenSTA
OpenSTA是一个免费的、开放源代码的web性能测试工具,能录制功能非常强大的脚本过程,执行性能测试。例如虚拟多个不同的用户同时登陆被测试网站。

OpenSTA 是专用于B/S结构的、免费的性能测试工具。它的优点除了免费、源代码开放的优点外,还能对录制的测试脚本进行,按指定的语法进行编辑。在录制完测试脚本后,可以对测试脚本进行编辑,以便进行特定的性能指标分析。其较为丰富的图形化测试结果大大提高了测试报告的可阅读性。

OpenSTA 基于CORBA 的结构体系,它通过虚拟一个proxy,使用其专用的脚本控制语言,记录通过proxy 的一切HTTP/S traffic。通过分析OpenSTA 的性能指标收集器收集的各项性能指标,以及HTTP 数据,对系统的性能进行分析。

优点:压力测试引擎具有可扩充性,可以完成打规模的压力测试。提供脚本语言支持。

授权协议: 未知
开发语言: C/C++
操作系统: Windows
收录时间: 2009年07月02日

楠族开心果 发表于 2011-1-27 09:15:46

Java代码质量评价 JDepend
JDepend一个开放源代码的可以用来评价Java程序质量的优秀工具,它遍历Java class的文件目录,以Java包(package)为单位,为每一个包/类自动生成 包的依赖程度,稳定性,可靠度等的评价报告,根据这些报告,我们可以得到包或类之间的依赖关系,并分析出包的稳定程度,抽象程度,是否存在循环依耐关系 等。

我们可以根据JDepend给出的报告数据,分析出我们的包是否是可靠的,稳定的,健壮的包,是否符合面向对象的设计原则。

一个具有稳定性,扩展性,可维护性的软件系统要求系统设计遵循面向对象的设计原则。一般来说,面向对象的设计原则要求满足高聚合,低耦合,禁止循环依赖等基本原则。

如果存在包与面向对象的设计原则有抵触,则有必要对这些包加以重新设计或抽象。

JDepend的主要功能
JDepend生成的Java包的质量评价报告主要包括:
Number of Classes and Interfaces:实现类与抽象接口的数目
面向的设计原则之一The Stable Abstractions Principle (SAP):稳定抽象等价原则指出了包的稳定程度与它的抽象程度(接口的数目)成正比,也就是说,一个包内包含的接口所占的比重越大,这个包就越稳定。
Abstractness (A):包的抽象度。指一个包内包含的抽象类或接口占整个包中的类的比重。该值处于0,1之间,若A=0,说明包内不包含任何抽象类或接口;若A=1,说明包内全部是抽象类或接口。包的抽象度与稳定性之间的关系上面已经作了说明。
Afferent Couplings (Ca):向心耦合。依赖该包(包含的类)的外部包(类)的数目(i.e. incoming dependencies),该数值越大,说明该包的担当的职责越大,也就越稳定。
Efferent Couplings (Ce):离心耦合。被该包依赖的外部包的数目(i.e. outgoing dependencies),该数值越大,说明该包越不独立(因为依赖了别的包),也越不稳定。
Instability (I):衡量一个包的不稳定程度。I=Ce/(Ce+Ca)。它的值处于之间。I=0时说明包是最稳定的,反之I=1则说明包极不稳定。
Distance from the Main Sequence (D): 该指标主要用来评价包的抽象程度与稳定程度的平衡关系,它可以用二维直线图 A + I = 1 来表示。D=abs((A + I) - 1),也就是说D为 一个包的抽象度 + 包的不稳定程度 - 1的绝对值。一个理想的包是:完全抽象的(A=1),非常稳定的(I=0),这时D=0;或者是:完全具体类构成的包(A=0),非常不稳定的 (I=1),这时同样也有D=0。D=0说明包的抽象程度与稳定程度是平衡的,反之D=1说明包的平衡程度被严重破坏。
Package Dependency Cycles:包的循环依赖度。
面向对象的设计原则之一:The Acyclic Dependencies Principle (ADP) - OO设计的无环依赖原则要求包之间不能有循环依赖关系。

JDepend为我们提供了上述许多高级功能,为我们设计健壮的包/类提供了重要的参考数据,是一个不可多得的优秀工具。

授权协议: 未知
开发语言: Java
操作系统: 跨平台
收录时间: 2008年09月16日

楠族开心果 发表于 2011-1-27 09:16:14

SQL Profiler
SQL Profiler是一个快速剖析工具用来统计SQL查询以便了解在哪里创建索引才能提高效率.

授权协议: 未知
开发语言: Java
操作系统:
收录时间: 2008年09月24日

楠族开心果 发表于 2011-1-27 09:16:33

网站压力测试工具 ApacheBench

ApacheBench 工具程式(ab)是 Apache 網站伺服器軟體的一個附帶的工具軟體,專門用來執行網站伺服器的運行效能,特別是針對 Apache 網站伺服器 的效能分析。這支程式原本是用來檢測 Apache 網站伺服器(Web Server) 所能夠提供的效能,特別是可以看出 Apache 網站伺服器能提供每秒能送出多少網頁,當然的,也可以用在任何其他的網站伺服器

一般的使用方法:ab -c 并发数 -n 请求数 URL地址

授权协议: Apache
开发语言: C/C++
操作系统: 跨平台
收录时间: 2008年09月15日

楠族开心果 发表于 2011-1-27 09:16:53

负载测试工具 LoadRunner
LoadRunner 是一种预测系统行为和性能的负载测试工具。通过以模拟上千万用户实施并发负载及实时性能监测的方式来确认和查找问题,LoadRunner 能够对整个企业架构进行测试。通过使用LoadRunner ,企业能最大限度地缩短测试时间,优化性能和加速应用系统的发布周期。


授权协议: 商业软件
操作系统: Windows
收录时间: 2008年09月15日

楠族开心果 发表于 2011-1-27 09:17:18

网页优化插件

YSlow是yahoo美国开发的一个页面评分插件,非常的棒,从中我们可以看出我们页面上的很多不足,并且可以知道我们改怎么却改进和优化。

YSlow跌评分规则。

主要有12条:

1. Make fewer HTTP requests 尽可能少的http请求。。我们有141个请求(其中15个JS请求,3个CSS请求,47个CSS background images请求),多的可怕。思考了下,为什么把这个三种请求过多列为对页面加载的重要不利因素呢,而过多的IMG请求并没有列为不利因素呢?

发现原来这些请求都是可以避免的。

15个JS和3个CSS完全可以通过特殊的办法进行合并(这个技术部已经帮我们解决了,实在是太感谢了,嘿嘿。),这样合并以后,一般情况下页面上只会出现一个JS和一个CSS(对JS的封装得有一定的要求)。

但是47个CSS background images请求改怎么解决呢?为什么页面上的纯IMG请求时合理的,而CSS background images请求过多就是不利因素了呢。这个我想了很久,总算明白,原来是这样的:

一般页面上的ICON,栏目背景啊, 图片按钮啊,我们都会用图片CSS背景来实现,而一般这个图片CSS背景用到的图片都是比较小的,所以完全可以把这些图片合并成一个相对比较大的图片,这 样页面上只会出现一个CSS background images请求,最多也就2-3个。后来仔细看了下雅虎美国的页面,他们的确也是这样做的,虽然这样做需要花一定的时间来有规则的合并这些ICON,栏 目背景,图片按钮,以方便CSS调用,但是这样做绝对是合算的,而且是有必要的,YSlow也是极力推荐的。

2.Use a CDN 这 项我们的评分是F级,最低。说实在的,我刚开始什么是CDN都不知道。后来查了GOODLE才知道。CDN的全称是Content Delivery Network,即内容分发网络。其目的是通过在现有的Internet中增加一层新的网络架构,将网站的内容发布到最接近用户的网络”边缘”,使用户可 以就近取得所需的内容,解决Internet网络拥挤的状况,提高用户访问网站的响应速度。从技术上全面解决由于网络带宽小、用户访问量大、网点分布不均 等原因所造成的用户访问网站响应速度慢的问题。

看来上述的解释后,基本上明白了 CDN是怎么回事,后来咨询了下中文站点SA,得知我们网站目前的确还没有做CDN的优化,但是据说我们有更加先进的技术来解决类似的问题(具体什么技术 那就保密了),但是毕竟CDN也是个相当不错的技术,所以在我们先进技术的基础上在做CDN优化,肯定比现在更好,嘿嘿。据说SA明年会做几个点的 CND。

3. Add an Expires header 设置过期的HTTP Header.设置Expires Header可以将脚本, 样式表, 图片, Flash等缓存在浏览器的Cache中.

其实我们网站也做了这个优化,至少图 片在这个上做过优化,但是没有做完全。我们的CSS和JS都还没有做过优化,倒是外部引入的一个广告JS做了,呵呵。其实设置过期的HTTP Header 更应该做在脚本, 样式表, Flash上.不过据说这个SA也是没有做的,但是有一定的风险,因为JS和CSS是有一定的逻辑,如果服务器端和客户端都存在缓存的话,万一出了什么问 题,对我们以后查找问题的所在和增加难度,不过我想两者中是可以权衡和并存的。

4. Gzip components 对 我们的页面内容进行Gzip格式的压缩,Gzip格式是一种很普遍的压缩技术,几乎所有的浏览器都有解压Gzip格式的能力,而且它可以压缩的比例非常 大,一般压缩率为85%,就是说服务器端100K的页面可以压缩到25K左右的Gzip格式的数据发给客户端,客户端收到Gzip格式的数据后自动解压缩 后显示页面。

这点我们网站基本上是100%做到了,但是我们这项的评分并没有达到想象中的A级,原因是出在我们的外部链接,比如我们首页,有外部的广告投放JS,这个JS说拥有的网站是没有做过GZIP优化,连累了我们网站,所以我们也只有B,或者C级。

5. Put CSS at the top 把CSS外部链接放到页面的顶部。

其实这个原则我们一般都遵守的,如果 把CSS外部链接作为逻辑的一部分出现在页面头部以下,我个人觉得这个本身就是个错误。还好,我们的页面基本上都做到了,可是有些页面比如LIST页面, 还是出现了和逻辑挂钩的CSS链接,原因是为了解决一些本来就不合理的产品逻辑。所以,我们WEB前端工程师有义务杜绝这些不合理的产品逻辑破坏我们的页 面结果及页面加载速度,不能为了实现而实现。

授权协议: 未知
操作系统:
收录时间: 2008年09月19日

楠族开心果 发表于 2011-1-27 09:17:42

性能测试工具

SysBench是一个模块化的、跨平台、多线程基准测试工具,主要用于评估测试各种不同系统参数下的数据库负载情况。它主要包括以下几种方式的测试:
       1、cpu性能
       2、磁盘io性能
       3、调度程序性能
       4、内存分配及传输速度
       5、POSIX线程性能
       6、数据库性能(OLTP基准测试)      

目前sysbench主要支持 MySQL,pgsql,oracle 这3种数据库。

授权协议: 未知
开发语言: C/C++
操作系统: Linux
收录时间: 2008年10月08日

楠族开心果 发表于 2011-1-27 09:18:07

数据库性能测试工具 HammerOra
HammerOra 工具是基于TCL(Tool Command Language)语言的数据库性能测试工具。首先HammerOra是一款负载测试工具;其次HammerOra目前支持Oracle, MySQL和HTTP应用(web应用); 然后HammerOra是开源的,框架有点类似于商业工具LoadRunner; 因为HammerOra是基于Tcl语言的,所以天生就是可移植的,可以运行于Windows平台和Linux平台。

HammerOra内嵌了两套标准测试脚本 tpc-c and tpc-h,当然你也可以自己开发和扩充测试脚本,开发语言是Tcl。

HammerOra包含叁个部分(这点有点类似于LoadRunner)创建测试脚本(打开build-in的tpc-c or tpc-h)然后可以进行调试;配置并创建虚拟用户,并设置虚拟用户的策略,比如持续时间,用户迭代,rumpup塬则等,然后控制场景运行;最后是监控 事物计数器。对应于LoadRunner分别是VUGen, Controller and Analysis

HammerOra的工作塬理就是捕捉Oracle的trace文件,并生成相应的SQL脚本进行回放,所以对用户的场景模拟程度是非常高的。 HammerOra跟Oracle的接口是也是利用一个Tcl的package OraTcl来完成的。(之前我们在开发测试平台时,后台驱动Oracle数据库操作也是通过这个package来完成的;





授权协议: 未知
操作系统: LinuxWindows
收录时间: 2009年09月22日

楠族开心果 发表于 2011-1-27 09:18:25

JVM插件 JavaRebel

JavaRebel (JRebel)是一个JVM的插件(非开源),给Java带来了Ruby和PHP风格的动态重新装载类特性,JavaRebel允许一个应用程序(独立的或运行在应用服务器上的应用)重新装载在运行过程中(on the fly)发生的大多数类变化,包括增加或删除方法和域。

javarebel 可以使Java class文件重新加载速度更快,节省了开发时间,而且修改了配置文件和在class中加入任何的代码都不用重启服务器,完全支持Annotation reloading.(Annotation动态载入),当classes字节码文件重新载入的时,它会在触发寄存器监听,允许使用自定义的方法去处理。

•简化了安装。现在 Java 5 中安装 JavaRebel 只需要加上 "-noverify -javaagent:javarebel.jar" 到命令行中。

•优化了性能。 此次版本关注了启动时间和后台 CPU 的使用率。一些用户报称启动应用服务器的时间比用之前版本快了 2-3 倍。

•改善了兼容性。支持所有主流的容器和框架,在其他的之上也可能工作的很好。

•扩展了对 Java 1.4 的支持。像 BEA Weblogic 8.X、Oracle OC 4J 9.x/10.X 和 Tomcat 4.x 也被支持。

•支持使用反射。新加到类中的方法对可用 Java 5+ 反射 API 访问到。

•修改了许多 Bug。此次版本更为稳定,对于所支持系统提供即拆即用。

授权协议: 商业软件
开发语言: Java
操作系统: 跨平台
收录时间: 2008年10月05日

楠族开心果 发表于 2011-1-27 09:18:43

Web测试和负载模拟工具 curl-loader
curl-loader 是一个用C语言编写的Web应用测试和模拟负载工具,可模拟成千上万的客户端请求,并且每个请求来自不同的IP地址,支持用户认证、登录等Web交换过程。

授权协议: GPLv2
开发语言: C/C++
操作系统: Linux
收录时间: 2010年01月03日
页: [1] 2 3 4 5
查看完整版本: 性能测试和优化