Java程序性能分析工具 VisualVM
VisualVM是一个集成多个JDK命令行工具的可视化工具。可以作为Java应用程序性能分析和运行监控的工具。开发人员可以利用它来监控、分析线程信息,浏览内存堆数据。系统管理员可以利用它来监测、控制Java应用程序横跨整个 络的情况。Java应用程序使用人员可以利用它来创建包含所有必要信息的Bug 告。
压力测试和评测工具 Siege
Siege是一个压力测试和评测工具,设计用于WEB开发这评估应用在压力下的承受能力:可以根据配置对一个WEB站点进行多用户的并发访问,记录每个用户所有请求过程的相应时间,并在一定数量的并发访问下重复进行。
测试实例:
手机 站性能测试工具 Mobitest
Mobitest 是一个移动 App 用来在真实手机上测试手机 Web 站性能。目前提供 android 和 ios 版本。
获取源码的方式:http://code.google.com/p/mobitest-agent/source/checkout
压力测试工具 Tsung
Tsung 是一个压力测试工具,可以测试包括HTTP, WebDAV, PostgreSQL, MySQL, LDAP, and XMPP/Jabber等服务器。针对 HTTP 测试,Tsung 支持 HTTP 1.0/1.1 ,包含一个代理模式的会话记录、支持 GET、POST 和 PUT 以及 DELETE 方法,支持 Cookie 和基本的 WWW 认证,同时还支持 SSL。
Phoronix Test Suite
phoronix.com 是业内一个知名的 站,其经常发布硬件性能测评以及 Linux 系统相关的性能测评, Phoronix Test Suite 为该 站旗下的 linux 平台测试套件 , Phoronix 测试套件遵循GNU GPLv3协议。phoronix.com 刚刚发布了最新版的 Phoronix 测试套件——Phoronix Test Suite 0.7.0。Phoronix Test Suite 0.7.0 的发布时间离上一个版发布也就一个周左右的时间,然而新版本包含了多达40项的重大变化。
Phoronix Test Suite 默认是通过命令行来的进行测试的,但也可以调用GUI,Phoronix Test Suite 还提供了上传测试结果的服务,也就说你可以把你的测试结果上传在 上,从而可以和别的 Linux 用户测出来的结果进行对比。
分布式TCP压力测试工具 tcpcopy
tcpcopy是一种应用请求复制(基于tcp的packets)工具,其应用领域较广,我们曾经应用于 易的广告投放系统,urs系统,nginx hmux协议开发等系统,避免了上线带来的很多问题。
总体说来,tcpcopy主要有如下功能:
1)分布式压力测试工具,利用在线数据,可以测试系统能够承受的压力大小(远比ab压力测试工具真实地多),也可以提前发现一些bug
2)对于后端的短连接,请求丢失率非常低(1/10万),可以应用于热备份
3)普通上线测试,可以发现新系统是否稳定,提前发现上线过程中会出现的诸多问题,让开发者有信心上线
4)对比试验,同样请求,针对不同或不同版本程序,可以做性能对比等试验
5)利用多种手段,构造无限在线压力,满足中小 站压力测试要求
6)实战演习(架构师必备)
tcpcopy可以用于实时和离线回放领域,并且tcpcopy支持mysql协议的复制,开源一年以来,功能上越来越完善。
如果你对上线没有信心,如果你的单元测试不够充分,如果你对新系统不够有把握,如果你对未来的请求压力无法预测,tcpcopy可以帮助你解决上述难题。
web性能测试工具 OpenSTA
OpenSTA是一个免费的、开放源代码的web性能测试工具,能录制功能非常强大的脚本过程,执行性能测试。例如虚拟多个不同的用户同时登陆被测试 站。
OpenSTA 基于CORBA 的结构体系,它通过虚拟一个proxy,使用其专用的脚本控制语言,记录通过proxy 的一切HTTP/S traffic。通过分析OpenSTA 的性能指标收集器收集的各项性能指标,以及HTTP 数据,对系统的性能进行分析。
优点:压力测试引擎具有可扩充性,可以完成打规模的压力测试。提供脚本语言支持。
memcached性能测试 twemperf
twemperf 是一个用来测试 memcached 服务器性能的工具。
测试实例:
Web性能测试工具 AutoBench
autobench 是一款基于httperf的Perl脚本。它会在一次测试中调用多次httperf来对web服务器进行测试,每次会按照给定的参数增加并发连接数,将 httperf的测试结果保存为CSV格式的文件,该文件可以被Excel直接读取,方便生成测试 告。借助于autobench自带的 bench2graph工具可以生成漂亮的测试结果对比图。
使用方法:
autobench –single_host –host1 www.test.com –uri1 /10K –quiet
–low_rate 20 –high_rate 200 –rate_step 20 –num_call 10
–num_conn 5000 –timeout 5 –file results.tsv
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
NoSQL负载测试工具 VPork
VPork 是一个用来对分布式哈希表(NoSQL) 进行负载测试的工具。
示例测试结果:
Java内存使用分析 HeapAnalyzer
HeapAnalyzer 是 IBM 的一个用来分析 Java 程序的内存堆使用情况的图形化工具。
页优化插件 YSlow
YSlow是yahoo美国开发的一个页面评分插件,非常的棒,从中我们可以看出我们页面上的很多不足,并且可以知道我们改怎么却改进和优化。
YSlow跌评分规则。
主要有12条:
1. Make fewer HTTP requests 尽可能少的http请求。。我们有141个请求(其中15个JS请求,3个CSS请求,47个CSS background images请求),多的可怕。思考了下,为什么把这个三种请求过多列为对页面加载的重要不利因素呢,而过多的IMG请求并没有列为不利因素呢/p>
发现原来这些请求都是可以避免的。
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前端工程师有义务杜绝这些不合理的产品逻辑破坏我们的页 面结果及页面加载速度,不能为了实现而实现。
Groovy压力测试模块 GBench
GBench 是 Groovy 的压力测试模块,提供 @Benchmark / Benchmark AST Transformation 用于实际程序测试以及 BenchmarkBuilder 用于微测试。
你可以通过在 groovy 文件中增加下面一行代码即可,想起请看 Installation
@Benchmark 实例:
BenchmarkBuilder 实例:
Web服务性能测试工具 Pylot
Pylot 是一款开源的用以测试 Web Service性能和扩展性的工具,它运行HTTP负载测试,这对于制定容量计划、确定基准点、分析系统瓶颈以及系统调优都非常有用。在使用过程 中,Pylot会发起并发请求(HTTP Requests),检验服务器响应,以及带有相关指标的 表。它通过GUI或者Shell/Console来执行和监视对被测试 站的测试过程。
Pylot基于Python开发,和著名的Apache压力测试工具ab一样,默认在命令行运行,也可以通过参数触发GUI界面,当然前提是安装了wxPython的。
改进 页设计的工具 Page Speed
Page Speed最 初是Google内部使用的改进 页设计的工具——它整合在Firefox的著名插件Firebug中。当用户运行Page Speed,可以立即获得如何改进 页载入速度的建议。Page Speed能自动为用户优化图像,提供可以发布在 页上的压缩图片,它也能识别JavaScript和CSS载入问题,帮助开发者减少浏览者等待 页展示 的时间。
Siege 配置生成工具 sproxy
SPROXY 是 siege 代理服务器,用于收集 siege 的 URLs,只需配置浏览器使用 sproxy 服务器,即可自动收集 POST 数据和 GET 请求,并将这些数据生成 siege 要求的格式文件。
Linux内核性能分析 OProfile
OProfile是Linux内核支持的一种性能分析机制。
它在时钟中断处理入口处建立监测点,记录被中断的上下文现场,由配套的用户态的工具oprof_start负责在用户态收集数据,opreport则分析数据并给出分析 告。
通过这个工具,开发人员可以得知一个程序的瓶颈在哪里,进而指导代码优化。
webload
webload是RadView公司推出的一个性能测试和分析工具,它让web应用程序开发者自动执行压力测试;webload通过模拟真实用户的操作,生成压力负载来测试web的性能。
压力测试工具 JMeter
JMeter是Apache组织的开放源代码项目,它是功能和性能测试的工具,100%的用java实现。
站负载测试工具 Iago
Iago 是一个 站负载测试工具,Iago 针对一个给定的 站进行访问录制并合成流量数据。它不同于其他的负载生成工具,它试图保持恒定的请求率。例如如果你想按每分钟100K来请求您的服务,Iago 会试图保持这个速度进行测试。
SQL Profiler
JDBC SQL Profiler 是一个用来连接到 P6Spy 实时显示所执行的SQL语句,并生成统计信息,利用该工具可以对SQL语句进行监控以找出执行缓慢的语句加以优化。
Microsoft Web Application Stress Tool
Microsoft Web Application Stress Tool 是由微软的 站测试人员所开发,专门用来进行实际 站压力测试的一套工具。透过这套功能强大的压力测试工具,您可以使用少量的Client端计算机仿真大 量用户上线对 站服务所可能造成的影响。
Tomcat管理和性能监控 LambdaProbe
LambdaProbe是一款 Tomcat 的管理以及性能测试的强大的免费开源工具,LambdaProbe拥有几乎所有Tomcat Manager的功能, 可以说是一个增强版本的 Tomcat Manager。
更多监控界面截图>>
在线演示>>
Web 能力分析工具 WCAT
Web 日志和历史流量分析可以让您深入了解会出现何种流量,但如何才能确定您基础结构的实际承载量呢时,您需要一种工具来使您的基础结构机器应用程序栈达到临界 点。免费的 Web 能力分析工具 (WCAT) 应运而生,它是一种轻量级负载生成实用工具,不仅能够重现对 Web 服务器(或负载平衡服务器场)的脚本 HTTP 请求,同时还可以收集性能统计数据供日后分析之用。而且它还支持 IPv6 络。另外,WCAT 是多线程应用程序,并且支持从单个源控制多个负载测试客户端,因此您可以模拟数千个并发用户。
该实用工具利用您的旧机器作为测试客户端,其中每个测试客户端又可以产生多个虚拟客户端(最大数量取决于客户端机器的 络适配器和其他硬件)。您可以选择使 用 HTTP 1.0 还是 HTTP 1.1 请求,以及是否使用 SSL。并且,如果测试方案需要,您还可以使用脚本执行的基本或 NTLM 身份验证来访问站点的受限部分。(如果您的站点使用 cookie、表单或基于会话的身份验证,那您可以创建正确的 GET 或 POST 请求来对测试用户进行身份验证。)WCAT 还可管理您站点可能设置的任何 cookie,所以配置文件和会话信息将永久保存。
WCAT can help you test the limits of your Web site infrastructure (单 击该图像获得较大视图)
WCAT 还提供了非常出色的用户指南,该指南可以帮助快速创建 Microsoftnbsp;.NET Framework 控制台应用程序,它可以根据来自站点流量审计历史的用户流量数据生成测试客户端脚本,并能在部署前于新代码库中模拟真正的流量。而且,如果您的同事中有 C 程序员,那您还可以创建自定义函数和响应处理程序,供方案文件调用以便为环境量身定制功能。
要 使用 WCAT,您需要配置两个文件:一个包含通用测试设置(如客户端数量、每个客户端上的虚拟客户端数量、用于跟踪的性能计数器和测试需要的 Web 服务器)的控制器文件,以及一个包含测试方案、默认请求参数和自定义函数和库引用的方案文件。
该 应用程序将测试结果记录到 XML 文件,您可以应用内置的 XSL 样式表单在 Internet Explorernbsp;中查看到组织好的结果表格。该 告包含摘要信息,如执行的事务数量、上下文切换次数、CPU 利用率百分比(所有 CPU),以及遇到的错误总数等。您还可以得到在设置文件中配置的性能计数器的结果(参见屏幕快照示例)、响应时间分析、以事务为单位的统计 告、以客户 端为单位的明细数据,以及有关如何配置测试设置的信息。另外,您将查看到您所测试的远程 Web 服务器的硬件配置,以及已安装的所有更新的列表。该列表能够很好地帮助您确定并跟踪某个补丁程序是否会对您的站点产生性能影响。
综 上所述,如果您负责管理 Web 站点基础结构,那 WCAT 实用工具可以帮助您在下一次大型代码发布之前深入了解您的平台在压力测试下的工作情况。
x86:iis.net/downloads/1466/ItemPermaLink.ashx
x64:iis.net/downloads/1467/ItemPermaLink.ashx
站压力测试工具 Webbench
Webbench是有名的 站压力测试工具,它是由 Lionbridge公司(http://www.lionbridge.com)开发。
Webbech能测试处在相同硬件上,不同服务的性能以及不同硬件上同一个服务的运行状况。webBech的标准测试可以向我们展示服务器的 两项 内容:每秒钟相应请求数和每秒钟传输数据量。webbench不但能具有便准静态页面的测试能力,还能对动态页面(ASP,PHP,JAVA,CGI)进 行测试的能力。还有就是他支持对含有SSL的安全 站例如电子商务 站进行静态或动态的性能测试。
二、Freebsd 上安装 webbench
(1) 在FreeBSD下的用Ports安装方法:
记得安装成功以后运行一下rehash命令,刷新一下系统命令
二、webbench使用
#webbench -(查看命令帮助)
常用参数 说明,-c 表示客户端数,-t 表示时间
测试实例:
测试静态图片
#webbench -c 500 -t 30 http://127.0.0.1/test.jpg
四、webbench测试结果
分析:每秒钟响应请求数:3230 pages/min,每秒钟传输数据量11614212 bytes/sec.
Ubuntu 下安装使用
1、安装依赖包CTAGS
2、安装 Webbench
下载程序: webbench-1.5.tar.gz
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
PHP性能测试工具 xhprof
xhprof —— facebook 开发的一个测试php性能的扩展。
负载测试工具 LoadRunner
LoadRunner 是一种预测系统行为和性能的负载测试工具。通过以模拟上千万用户实施并发负载及实时性能监测的方式来确认和查找问题,LoadRunner 能够对整个企业架构进行测试。通过使用LoadRunner ,企业能最大限度地缩短测试时间,优化性能和加速应用系统的发布周期。
下载试用版
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!