??xml version="1.0" encoding="utf-8" standalone="yes"?>污网站在线免费看,97超碰人人在线,蜜桃麻豆www久久国产精品http://www.aygfsteel.com/caizh2009/category/43909.html与大家共同成?/description>zh-cnThu, 26 Aug 2010 16:35:14 GMTThu, 26 Aug 2010 16:35:14 GMT60关于Java性能监控http://www.aygfsteel.com/caizh2009/archive/2010/08/25/329857.html菜毛毛菜毛毛Wed, 25 Aug 2010 02:04:00 GMThttp://www.aygfsteel.com/caizh2009/archive/2010/08/25/329857.htmlhttp://www.aygfsteel.com/caizh2009/comments/329857.htmlhttp://www.aygfsteel.com/caizh2009/archive/2010/08/25/329857.html#Feedback0http://www.aygfsteel.com/caizh2009/comments/commentRss/329857.htmlhttp://www.aygfsteel.com/caizh2009/services/trackbacks/329857.html责怪糟p的代码Q或不良代码对象Qƈ不能帮助您发现瓶颈,提高 Java™ 应用E序速度Q猜也不能帮您解决。Ted Neward 引导您关?Java 性能监控工具Q从5 个技巧开始,使用Java 5 的内|分析器JConsole 攉和分析性能数据?/p>

当应用程序性能受到损害Ӟ大多数开发h员都惊慌失措Q这在情理之中。跟t?Java 应用E序瓉来源一直以来都是很ȝ的,因ؓ Java 虚拟机有黑盒效应Q而且 Java q_分析工具一贯就有缺陗?/p>

然而,随着 Java 5 ?JConsole 的引入,一切都发生了改变。JConsole 是一个内|?Java 性能分析器,可以从命令行或在 GUI shell 中运行。它不是完美的,但是当尖头老板来问你关于性能的问题时Q用它来应对q是lԒ有余的——这比查?Papa Google 要好得多?/p>

在本?5 件事 pd中,我将向您展示 5 个方法,使您可以LC?JConsoleQ或者,它更高端?“q亲” VisualVM Q来监控 Java 应用E序性能和跟t?Java 中的代码?/p>

1. JDK 附带分析?/strong>

许多开发h员没有意识到?Java 5 开?JDK 中包含了一个分析器。JConsoleQ或?Java q_最新版本,VisualVMQ是一个内|分析器Q它?Java ~译器一样容易启动。如果是从命令行启动Q JDK ?PATH 上,q行 jconsole 卛_。如果从 GUI shell 启动Q找?JDK 安装路径Q打开 bin 文g夹,双击 jconsole?/p>

当分析工具弹出时Q取决于正在q行?Java 版本以及正在q行?Java E序数量Q,可能会出C个对话框Q要求输入一个进E的 URL 来连接,也可能列多不同的本地 Java q程Q有时包?JConsole q程本nQ来q接?/p>

使用 JConsole q行工作

?Java 5 中,Java q程q不是被讄为默认分析的Q而是通过一个命令行参数 ? -Dcom.sun.management.jmxremote ?在启动时告诉 Java 5 VM 打开q接Q以便分析器可以扑ֈ它们Q当q程? JConsole 捡vӞ您只能双d开始分析?/p>

分析器有自己的开销Q因此最好的办法是q旉来弄清是什么开销。发?JConsole 开销最单的办法是,首先独自q行一个应用程序,然后在分析器下运行,q测量差异。(应用E序不能太大或者太;我最喜欢使用 JDK 附带? SwingSet2 h。)因此Q我使用 -verbose:gc 试q行 SwingSet2 来查看垃圾收集清理,然后q行同一个应用程序ƈ? JConsole 分析器连接到它。当 JConsole q接好了之后Q一个稳定的 GC 清理出玎ͼ否则不会出现。这是分析器的性能开销?/p>

2. q程q接q程

因ؓ Web 应用E序分析工具假设通过一个套接字q行q通性分析,您只需要进行少讔R|来讄 JConsoleQ或者是Z JVMTI 的分析器Q就q点而言Q,监控/分析q程q行的应用程序?/p>

如果 Tomcat q行在一个名?“webserve” 的机器上Q且 JVM 已经启动?JMX q监听端?9004Q从 JConsoleQ或者Q?JMX 客户端)q接它需要一?JMX URL “service:jmx:rmi:///jndi/rmi://webserver:9004/jmxrmi”?/p>

基本上,要分析一个运行在q程数据中心的应用程序服务器Q您所需要的仅仅是一?JMX URL。更多关于?JMX ?JConsole q程监控和管理的信息Q参?参考资料。)

3. 跟踪l计

JConsole 有许多对攉l计数据有用的选项卡,包括Q?/p>

MemoryQ在 JVM 垃圾攉器中针对各个堆跟t活动?/p>

ThreadsQ在目标 JVM 中检查当前线E活动?/p>

ClassesQ观?VM 已加载类的L?/p>

q些选项卡(和相关的图表Q都是由每个 Java 5 及更高版?VM ?JMX 服务器上注册?JMX 对象提供的,是内|到 JVM 的。一个给?JVM 中可?bean 的完整清单在 MBeans 选项卡上列出Q包括一些元数据和一个有限的用户界面来查看数据或执行操作。(然而,注册通知是在 JConsole 用户界面之外。)

使用l计数据

假设一?Tomcat q程M OutOfMemoryError。如果您惌弄清楚发生了什么,打开 JConsoleQ单? Classes 选项卡,q一D|间查看一ơ类计数。如果数量稳定上升,您可以假讑ֺ用程序服务器或者您的代码某个地Ҏ一?ClassLoader 漏洞Q不久之后将耗尽 PermGen I间。如果需要更q一步的认问题Q请?Memory 选项卡?/p>

4. 为离U分析创Z个堆转储

生环境中一切都在快速地q行着Q您可能没有旉p在您的应用程序分析器上,相反圎ͼ您可以ؓ Java 环境中的每个事g照一个快照保存下来过后再看。在 JConsole 中您也可以这样做Q在 VisualVM 中甚至会做得更好?/p>

先找?MBeans 选项卡,在其中打开 com.sun.management 节点Q接着?HotSpotDiagnostic 节点。现在,选择 OperationsQ注意右辚w板中?“dumpHeap” 按钮。如果您在第一个(“字符?#8221;Q输入框中向 dumpHeap 传递一个文件名来{储,它将为整?JVM 堆照一个快照,q将其{储到那个文g?/p>

E后Q您可以使用各种不同的商业分析器来分析文Ӟ或者?VisualVM 分析快照。(CQVisualVM 是在 Java 6 中可用的Q且是单独下载的。)

5. JConsole q不是高p的

作ؓ一个分析器实用工具QJConsole 是极好的Q但是还有更好的工具。一些分析插仉带分析器或者灵巧的用户界面Q默认情况下?JConsole 跟踪更多的数据?/p>

JConsole 真正吸引人的是整个程序是?“普通旧?Java ” ~写的,q意味着M Java 开发h员都可以~写q样一个实用工兗事实上QJDK 其中甚至包括如何通过创徏一个插件来定制 JConsole 的示例(参见 参考资料)。徏立在 NetBeans 剙?VisualVM q一步g怺插g概念?/p>

如果 JConsoleQ或? VisualVMQ或者其他Q何工P不符合您的需求,或者不能跟t您惌跟踪的,或者不能按照您的方式跟t,您可以编写属于自q工具。如果您觉得 Java 代码很麻烦,Groovy ?JRuby 或很多其?JVM 语言都可以帮助您更快完成?/p>

您真正需要的是一个快速而粗p(quick-and-dirtyQ的?JVM q接的命令行工具Q可以以您想要的方式切地跟t您感兴的数据?/p>

l束?/strong>

Java 性能监控不止?JConsole ?VisualVM ??JDK 中隐藏着一整套工具Q只是大多数开发h员ƈ不知道?本系? 中的下一文章将深入探究一些实验性的命o行工P可以帮助您挖掘更多的您所需要的性能数据。因些工具通常只关注特D数据,比一个完整的分析器更更 dyQ所以它们的性能开销要小一些?/p>

菜毛毛 2010-08-25 10:04 发表评论
]]>
weblogic如何诊断 J2EE pȝ中的性能问题http://www.aygfsteel.com/caizh2009/archive/2010/02/05/312097.html菜毛毛菜毛毛Fri, 05 Feb 2010 05:32:00 GMThttp://www.aygfsteel.com/caizh2009/archive/2010/02/05/312097.htmlhttp://www.aygfsteel.com/caizh2009/comments/312097.htmlhttp://www.aygfsteel.com/caizh2009/archive/2010/02/05/312097.html#Feedback0http://www.aygfsteel.com/caizh2009/comments/commentRss/312097.htmlhttp://www.aygfsteel.com/caizh2009/services/trackbacks/312097.html Z正确地找到问题所在,您需要对症状有全面了解,要做好准备进行大量研I工作,最后您需要制定正的ȝҎ。本文讨Z J2EE 应用E序性能问题的一些最常见cd和它们生的原因Q以及如何正地诊断和消除它们的推荐指导原则?br />

症状
  WebLogic 应用E序性能问题的症状是什么?您看到的症状可以指导您在所有可能的问题中进行搜索。请准备一个笔记本q开始向Z调查。试着把对问题Ҏ原因的推和假设与系l行为的实际证据分离。下面是一个常见症犉的列表: 持箋~慢Q应用程序一直特别慢。改变环境因?负蝲、数据库q接数量)Ҏ体响应时间的改变很小?随着旉推进来慢Q系l运行时间越?负蝲相对均衡不变的情况下)Q就变得慢。有可能?最?辑ֈ了某个阈|pȝ被锁定或者由于大量错误而崩溃?随着负蝲增加来慢Q每增加一个额外用P应用E序变得越慢。如果用L开pȝQ系l就“冷却下来”Q恢复正常?零星的挂h者异帔R误:偶尔(可能׃负蝲或某些其它原?Q在面无法完成或者出现追t到异常和堆栈的错误|Q用户会看到挂v的情c挂L数量可能不同Q但L无法完全消除Q甚臛_强化 (“burn in”) 期间之后也是如此?可以预见的锁定:首先出现一些挂h错误Q然后加速出玎ͼ直到pȝ完全被锁定。通常q些问题可以通过“重新启动来管?#8221;的方式解冟?H然混ؕQ系l一直运行正常,相当一D|间里(可能一个小Ӟ也可能是三天)性能都还差强人意Q但?#8220;H然某个时候,Ҏ没有M原因?#8221;Q系l开始出现大量错误,或者被锁定?

Z么问题诊断如此复杂? 软g开发网
  对于 WebLogic 应用E序的某个具体应用模式来_没有既定的公式可以用来推导出它的性能(在严格的实时工程当中Q速度单调分析q类技术确实可以做q项工作Q但是在本文里还是让我们忘记它吧)。网l上是否存在另外一个系l正在密集用一个共享的后端服务Q对于实际生的性能有很大媄响。性能也许q取决于 JDBC 驱动E序版本和数据库的正匹配。也许开发h员三q前写的一些代码恰巧在q个时候才出现特定cd的异常,而您急切需要的解决问题回馈Q却恰恰包含在这个异帔R?
  从本质上_典型业务pȝ的性能是由成千上万交互的变量和决策共同作用的结果。就像h体一P有太多连锁着的部分和q程Q所以很隄解系l的整体。因此我们进行了化,q求助于拱Ş模式?


  您看到的症状的根本原因是什么?它是初񔋹行性感冒或者是肺炎的开始吗Q是应用E序内部的底层问题还是它所在的 JVM 外部的问题?请参阅表 1 中应用程序性能低下的一些最常见原因?

http://www.mscto.com

 

?

 

毛病 描述 症状 原因或治?U性内存泄?每单?每事务、每用户{?泄漏造成内存随着旉或负载线性增ѝ这会随着旉或负载增镉K低系l性能。只有重启才有可能恢复?随着旉来慢
随着负蝲来慢 虽然可能有多U外部原因,但最典型的是与资源泄漏有?例如Q每单位数据的链表存储,或者没有回收的回收/增长~冲??指数方式内存泄漏 双倍增长策略的泄漏造成pȝ内存消耗表Cؓ旉的指数曲U?随着旉来慢
随着负蝲来慢 通常是由于向集合(VectorQHashMap) 中加入永q不删除的元素造成的?p糕的编码:无限循环 U程?while(true) 语句以及cM的语句里d?可以预见的锁?您需要对循环q行大刀阔斧的删剪?资源泄漏 JDBC 语句QCICS 事务|关q接Q以及类似的东西被泄漏了Q造成?Java 桥接层和后端pȝ的媄响?随着旉来慢
可以预见的锁?br /> H然混ؕ 通常情况下,q是׃遗漏?finally 块,或者更单点Q就是忘记用 close() 关闭代表外部资源的对象所造成的?外部瓉问题 后端或者其他外部系l(如鉴权)来慢Q同样减~了 J2EE 应用服务器和应用E序 持箋~慢
随着负蝲来慢 咨询专家Q负责的W三Ҏ者系l管理员Q,获取解决外部瓉问题的方法?外部pȝ J2EE 应用E序通过太大或太多的h滥用后端pȝ?持箋~慢
随着负蝲来慢 清除冗余的工作请?Q成批处理相似的工作hQ把大的h分解成若q个更小的请求,调整工作h或后端系l?例如Q公共查询关键字的烦?{?p糕的编码:CPU密集的组?q是 J2EE 世界中常见的感冒。一些糟p的代码或大量代码之间一ơ糟p的交互Q就挂v?CPUQ把吞吐速度减慢到爬行的速度?持箋~慢
随着负蝲来慢 典型的解x案就是数据高速缓存或者性能计数?中间层问?实现得很p糕的桥接层(JDBC 驱动E序Q到传统pȝ?CORBA q接)Q由于对数据和请求不断的排列、解除排列,从而把所有通过它的量减慢到爬行速度。这个毛病在早期阶段很容易与外部瓉h?持箋~慢


随着负蝲来慢 查桥接层和外部系l的版本兼容性。如果有可能Q评C同的桥接供应商。如果重新规划架构,有可能完全不需要桥接?内部资源瓉Q过度用或分配不 内部资源(U程、放入池的对?变得E~。是在正用的情况下加大负载时出现q度使用q是因ؓ泄漏Q?随着负蝲来慢
零星的挂h异常错误 分配不Q根据预期的最大负载提高池的最大尺寸。过度用:请参阅外部系l的q度使用?不停止的重试 q包括对p|hq箋?或者在极端情况下无休止?重试?可以预见的锁?br /> H然混ؕ 可能是后端pȝ完全宕机。在q里Q可用性监控会有帮助,或者就是把试与成功分开?U程Q阻塞点 U程在过于积极的同步点上备䆾Q造成交通阻塞?随着负蝲来慢
零星的挂h异常错误
可以预见的锁?br /> H然混ؕ 可能同步是不必要?只要重新设计)Q或者比较外在的锁定{略(例如Q读/写锁)也许会有帮助?U程Q死?zd?最普遍Q这是您基本?#8220;获得序”的问题?H然混ؕ 处理选项包括Q主锁,定的获得顺序,以及银行家算法?

量关键的统计指?/strong>


  当您负责诊断问题的时候,您应当能够跟t关于您?WebLogic 应用E序健康情况的关键统计指标。您能测量什么?有什么工具可以提供帮助呢Q?

 

使用的全部内存:在不同别上 (JVM 堆栈Q操作系l?QJava 堆栈 profiler 对堆栈的正确使用提供了可见性;?top ,vmstat 以及 Windows Perfmon q样的工具在操作pȝU别上ؓ内存使用提供可见性。察?Java 堆栈的一个简单的聚合视图Q请打开—verboseQgc 开?如果在您?JVM 上可以用的??CPU 旉Q?/strong>合ƈ(可以通过使用 top {方式得?每个lg或每U方法。其中某些指标可以通过 WebLogic 理控制台得到。也可以通过 Java profile 使用它们?计时 (a.k.a.“?#8221; ?Q?/strong>每事务,每组Ӟ每方法;可以按统计^均值或单独的数据点查看。Java profiler 可以产生一些这L数据Q但是用程序监控解x案可能是您的最佳选择?内部资源Q?br /> 分配的数量,使用的数量,{待的客h量,获得资源的^均等待时_使用资源q_消耗的旉Q用资源完成请求工作时使用的^均时间。应用程序服务器通常会给些数字的最可视性?外部资源Q?/strong>分配的数量,使用的数量,{待的客h量,q_{待旉Q加上对q些外部pȝ的直接测?例如查看它能多快完成h的工?。不要忘记运行应用程序服务器的操作系l和g也是“外部资源”-例如Q是否您使用了太多的q程或端口?可以用两UŞ式测试这些资源—从 JVM 内部试提供资源的桥接层Q用外部资源本n的工h量外部资源?|络应用Q?/strong>带宽使用Qgq。虽然操作系l自带的工具(例如 netstat)也有助于做这些工作,但是|络嗅探器设备可以深入了解这些信息?pȝ状态:用线E清除,日志和跟t文Ӟ堆栈跟踪{等。或者在更深层次上,像调试器中查看的那样用变量的倹{?

实验工作
  有的时候,在一ơ标杆运行中获得的数据,不以揭C答案。那么找到答案的Z在于您q有些有限的预算Q可以运行试验或者做实验工作Q来完成诊断。您可以q行什么类型的试验呢?您可以修攏V观察什么变量呢Q?

http://www.mscto.com

 

试观察pȝ行ؓ在一D|间上的变化。应用一个衡定的负蝲Qƈ观察您的指标随时间发生的变化。您可能会看到某些趋势,短则一时可看到Q长则二三天。例如,您可以看到内存用随着旉而增ѝ随着使用的内存数量达C限, JVM 花在搜烦垃圾上的旉和操作系l花在分配内存页面上的时间开始减用户事务的整体响应旉。当抛开 GC 的时候,垃圾搜集的整个过E可能过长,从而造成执行中的事务时和异常。现在可以开始查找资源泄漏或内存泄漏了?试在系l上改变负蝲?采用三到四种工作负蝲(例如Q?0个,50个和100个用?Qƈ搜集每个负蝲的数据。分析一下您对这些负载的量情况。例如,您可能发玎ͼ当您的̎L?servlet 的响应时间无论如何都会低?50 毫秒的时候,计算销售税?EJB 却随着用户数据的增长,速度呈线性下降。如果这?EJB 性能在负载下的差异能解释整体响应旉性能在负载下的增长,那么现在是深入分析q个lg的时候了。}C定还要把负蝲恢复原状Qƈ查看pȝ是否复原?试把系l分成小单元Q针Ҏ个单元轮进行压力测试?选择一个或多个坐标pdpȝq行划分。主要的一个是pȝ面上的层Q负载均衡器、Web 服务器、WebLogic ServerQ以及后端。其它示例包括用戯̎P内部lgQ事务类型,以及单独的页面。假设您选择了用戯̎戗在用户 A 的̎户下q行一些负载,然后再在用户 B 的̎?应当非常不同)下运行某些负载;比较两次q行间不同的量l果。或者,轮流选择您用的后端pȝQ分别对使用每个后端pȝ比较重的应用E序lgq行压力试。具体要选择哪个坐标q行划分Q完全取决于您要证明或者否定哪个假设。下面是一些具体想法:
  - 如果某个用户的登录看h造成了问题,那么有可能是q个用户账户案(例如Q装?2,000 个订单的完整采购历史)Q或者可能是他用系l的方式(例如Q页面访问的序Q或者他用来查找某个文的查询字W串的正??br />   - 如果您用的是一个集系l,请尝试以单台机器为单位划分。尽尽了最大努力,有的时候还会有一些机器没有安装最新的应用服务器或者操作系l补丁,q就会造成不同的性能特征。而且Q还h意负载均衡器Q或者保姆进E,查看它们是否公^地分配了工作q跟t了q入h?

诊断Q测试您的推?/strong>
  在这个时候,您应当已l有了够的信息Q可以Ş成关于性能瓉原因的推了(请参阅表 1)。ؓ了验证您的推是否正或者在多个备选的推测之间q行{选,您需要分析更多的信息或者在pȝ上运行更多的标杆试。这里是一些可以帮助您的指导意见:
区分p糕的编?或者是应用E序lg或者是桥接?和瓶?(内部的或外部?Q请查看整体?CPU 使用情况。如果它在负载下没变化,但是整体响应旉变化了,那么是应用E序p了它的大多数旉来等待?仅仅是因为好像是外部资源的问题,不代表您可以立L责Q推到资源上?例如Q分层或联网的问题,也能造成数据库看h很慢Q虽然实际上它ƈ不慢。或者,更简单一点,您对数据库的h可能是不合理?每次用户d的时候,都要q行三个表之间的 200 万行记录合ƈ)。应当一直把桥接层的响应旉(例如QJDBC 驱动?和资源提供的旉或者工h供的旉q行比较(例如QDBA Studio)?l构化的图表有助于您理解pȝ内部的整体交互,但是不要忘记地图q不是领地?~码错误或者对架构意图的误解,有可能ɾpȝ的实际行Z期望的行Z同。请怿性能工作提供的实际数据,而不要相信一个声U?#8220;每个用户事务只会发布一?SQL 语句”q样的文?使用 Occam 军刀?假设您有两个备选推,一个是Q在 200 万行代码里,有一个编码糟p的lgQ直C周这个组件才集成q来Q另一个是 JVM 的即时编译器生成了糟p的机器码,破坏了这个变量的内存完整性。除非您有具体的数据来证实,否则(我已l看CW二U情况发?Q请更详l地查第一个假设。J2EE pȝ实Ҏ出错Q但是不要让q一点就妨碍您先试一个更单的假设?日志文g中没有错误不代表不存在错误?有许多原因可以造成不在日志里写下异常;可能是因为程序员认ؓ某g?#8220;永远不会发生”Q于是就排除了这个异常;也可能是因ؓ某些lg可以使用故障恢复机制Q所以就没有记录W一ơ故障?

CZ诊断
  让我们来实际研究一个示例。您?WebLogic 应用E序表现出在负蝲下越来越慢的症状。您加入的用戯多,pȝ慢。一旦消除负载,pȝ冷静下来,没有M后遗症。您对这一主要症状q行试Q发现ƈ得到?2 所C的以下l果(旉量针对的是单一典型事务的端到端完成旉)?

?

负蝲(用户? 来回用时(毫秒) 10 300 50 471 100 892 150 1067

应用E序性能在负载下来慢

http://www.mscto.com

 

  您Ş成了几个假设。也许这里的毛病是一个糟p编码的lgQ也许是后端pȝ的瓶颈。它可能是一个同步阻塞点。您怎样才能分清它们的不同呢Q假设您q测试了应用E序服务器在负蝲q行期间的CPU整体使用情况Qƈ得到了表 3 所C的l果?

?

 

负蝲(用户? 来回用时(毫秒) 整体 CPU 旉(%) 10 300 30 50 471 33 100 892 37 150 1067 41

问题看v来好像是“{待”瓉

 

  现在看v来,pȝ不是 CPU 密集型的Q这是说它的多数时间都花在{待上了。那么是它的内部(例如Q同步交通阻?或外?~慢的数据库)的问题?好,让我们假设我们还E微多搜集了一些数据,如表 4 所C?

 

?

负蝲(用户? {待数据库连接的U程数量 JDBC 查询用时(毫秒) 10 2 58 50 3 115 100 3 489 150 4 612


问题是否出在一个缓慢的 SQL 语句上呢Q?br />

现在看v来ƈ不是内部{待数据库连接的瓉Q相反,好像?JDBC 查询本n的问题。JDBC 查询不仅随整体事务时间的不同而不同,而且它糟p的性能q解释了整体性能p糕的原因。但是,我们q不能完全确定。您仍然q有三个主要的假设要排序Q是否数据库本n慢?应用E序是否Ҏ据库q行了不合理的请求?或者问题是不是出在应用E序和数据库之间的某个层上?您拿出数据库供应商专用的工具Q从它的角度查看响应旉。假设您看到如表 5 所C的数字?

?

 

负蝲(用户? JDBC 查询计时(毫秒) DB SQL 执行的时?毫秒) 10 58 43 50 115 97 100 489 418 150 612 589
实际是数据库中的 SQL 语句?

  如果您没有看到这条信息,那么您可能要q回 JDBC 驱动E序Q期待能够发现其中的某些同步问题(误住,CPU 没有被抑?。幸q的是,在这个案例里Q您已经把具体问题的范围~小到数据库查询上。找出查询请求是否够合理,需要一些相关领域的知识Q需要熟悉系l,但是在这个案例里Q它也许是发现查询把非索引字段和外键进行了比较。您?DBA 协作Q它修改索引ҎQ让查询变得更快Q而您则找C您的药方?

l束?/strong>
  诊断 WebLogic J2EE 应用E序的性能瓉是一个艰苦的旅程。请随时保持清醒Q把事实与推分开QL用实际的证据来确认您的推。我希望l您带来了思考和实践问题的一些有用的x的分cR就像调试,q仍然是一不明确的艺术,但是深思熟虑会带您走出困境。祝您好q?

 

关于作?/strong>
  John Bley ?Wily Technology 的Y件工E师。他有丰富的 Java ~程和架构经验。ؓ了撰写本文,他ȝ?Wily 的企业客Ll验QWily负责理复杂?J2EE 环境?更多)
原文出处 http://www.sys-con.com/story/?storyid=43024&DE=1



菜毛毛 2010-02-05 13:32 发表评论
]]>
Google|站性能优化工具Page Speed试用报告http://www.aygfsteel.com/caizh2009/archive/2010/02/05/312095.html菜毛毛菜毛毛Fri, 05 Feb 2010 05:22:00 GMThttp://www.aygfsteel.com/caizh2009/archive/2010/02/05/312095.htmlhttp://www.aygfsteel.com/caizh2009/comments/312095.htmlhttp://www.aygfsteel.com/caizh2009/archive/2010/02/05/312095.html#Feedback0http://www.aygfsteel.com/caizh2009/comments/commentRss/312095.htmlhttp://www.aygfsteel.com/caizh2009/services/trackbacks/312095.htmlGoogleq日推出了一Ƅ站性能优化工具QPage SpeedQ?a target="_blank">http://code.google.com/speed/page-speed/Q。它旨在帮助站长与网站开发者分析网站中存在的性能斚w的问题,q有针对性地提出改进意见。Page Speed在功能方面极其类gYahoo!的网站性能优化YSlowQ不qYSlow要比Page Speed推出早得的多。它们都是基于Firebug的Fireffox插gQ用方法也cM。这里我主要介绍一下Google新推出的Page Speed的用,对Yslow感兴的朋友可以参照我以前的q篇文章?a target="_blank">你的|站Z么会慢?——用YSlowZ的网站提?/a>》,同时q有我翻译的Yahoo!的文章Yahoo!|站性能最佳体验的34条黄金守则—?a target="_blank">内容?a target="_blank">JavaScript和CSS?a target="_blank">服务?/a>?a target="_blank">囄、Coockie与移动应?/a>Q相信一定会对你提高|站性能有帮助?/p>

一、Page Speed的安装及使用

Page Speed是一ƾFirefox插gQ同时他依附于别ƾ插?a target="_blank">FirebugQ也是说你的Firefox览器中必须已经安装了Firebug才能安装Page Speed。安装环境ؓFirefox 3.0.4以上QFireug 1.3.3以上?/p>

Page Speed的用也很简单,在Firefox中点d下角的Firebug图标启动后,再点击Page Speed选项卡即可。要注意的是Q你要对你网站内的某个页面进行性能分析Q你必须先把该页面加载完成后才能使用Page SpeedQ也是说只有在览器左下角出现“Done”或?完成"之后才可以启用Page Speedq行分析。如果页面中媒体,可能不会现在“完成”Q这U情况要{到媒体可以播放?br />
 page speed启动界面

然后点击“Analyze Performance”Q性能分析Q,q时Page Speed会根据web performance best practices Q网|能最佛_践)q行逐项打分。然后根据重要程序和优先U对每项q行排列?br />
Page Speedq行界面

此外Q你q可以点L条徏议前面的“加号”展开查看详细的描qͼ或者直接点L条规则相看该规则的具体内容,q可以点?#8220;Show Resource”Q查看来源)来查看每条徏议是针对面中哪部分内容提出的?/p>

对于分析l果中的W号说明一下:

  1. U色感叹号代表高优先U提C,表示q一严重媄响了你的面性能Q你需要优先对其进行性能优化Q?
  2. 色三角代表此项提示需要引起你的注意,q进行适当改进Q?
  3. l色的对号代表该规则在你的|站中应用得刎ͼ你在修改了前面两部分的提CZ后,它们有可能变为绿色的对号Q?
  4. 蓝色消息W号是ؓ你提供了额外的帮助信息,L加留意(需要注意的是,如果你的面中出C大量的此cȝP可能是因Z在页面加载完成之前就q行了网站性能分析Q?

二、活动记?/h4>

zd记录是一条页面活动的旉_它记录了包括|络事g、JavaScriptq行在内的所有浏览器zd。你可以使用它ƈ配合性能分析中的数据q一步对|站性能做出评估?/p>

  • 查看面q行q程中所耗费的时_以毫U计;
  • 查看览器事Ӟ包括面加蝲完成后的事gQ?
  • 区分造成面响应~慢的原因,其中包括|络来时、DNS查找、连接徏立、JavaScriptq行{;
  • 获取在特定时间或者事件下才响应的JavaScript事g列表Q?
  • 可以对其它标{或者窗口中打开的页面进行分析;
  • 多页面加载时的页面加载顺序;
  • Ҏ据Page Speed优化前后的表现进行对比?

Page Speed 面zd记录

三、理解Page Speed中的事g

面记录选项卡下是通过旉U来记录各种资源加蝲到页面所有需要的旉。事件的记录旉间隔?0毫秒Q如果事仉要的旉于10毫秒那么它将用较短的色块来表C。时间线中没有Q何颜色的表示Q在览器事件的q行依赖于其它进E,如DOM和CSS渲染、Flash ActionScript、渲染、操作系l事件等?/p>
|络事g 描述
 
DNS 览器查找DNS所需要的旉
 
tq接{待 览器与|站服务器徏立连接(TCPQ需要一定的旉。由于浏览器可以打开的连接数目是有限的,如果辑ֈq个限制他必ȝ其它q接关闭之后才能再重新徏立一个新的连接。(更多关于览器连接的信息可以参照Parallel downloads across hostnamesQ?q个事g昄了浏览器{其它连接完成的旉?/td>
 
q接 览器和web服务器徏立连接。这个事件只有打开新连接时出现Q已有连接重新打开使用不包含在内?/td>
 
h发?/td> 览器发送的HTTPh。只昄GET方式的请求?/td>
 
已连?/td> 览器通过|络{待接收数据。事仉着览器TCPq接的结束而结束?/td>
本地事g 描述
 
~存 览器成功将内容加入到缓存中?/td>
 
可用数据 可用于浏览器呈现的数据。由于web服务器发送大量的数据Q如果文件很大那么有可能一个资源会出现多个该事件?/td>
 
 获取JS 览器获取JavaScript。该事g可能会g~其它事Ӟ如果此种情况出现Q将会在其下一行列出?/td>
 
q行JS 览器执行JavaScript。该事g可能会g~其它事Ӟ如果此种情况出现Q将会在其下一行列出。如果获取JS和运行JS中间有时间间隔,q说明源文g中包括有延时功能的函数?/td>

此外QPage Speedq包括了对已完成的JavaScript函数的信息搜集功能,当页面中的JS函数一旦运行,PageSpeed׃捕捉到相关信息。不通过对Page Speedq行讄q可以对未触发函数、g时加载函数等q行攉?/p>

下面的图片显CZ7800毫秒时已l加载但q未触发的函数列表:

Page Speedzd记录——JS攉

而下面则昄是已l触发运行了的JS函数Q?br />
Page Speed

此外Pge Speedq有诸如JavaScript函数控制、浏览器User Agent讄{更高功能。具体用大家可以与YSlowҎ一下?/p>

怿Q用好这两款工具Q对于站长和|站开发者来说会有极大的帮助?/p>

本文|址Q?nbsp;http://www.dudo.org/article/NewSoftware/using_google_page_speed.htm
转蝲h意出?/p>

菜毛毛 2010-02-05 13:22 发表评论
]]>
վ֩ģ壺 ̨| | ֶ| | ػʵ| ɽ| ͭ| | | | | ¹| Դ| | | | ³| ɽ| ƽ| | ʮ| | ǰ| | | | Ǭ| | | ɽ| | ̺| | | | ͼƬ| żҿ| | | | ԫ|