??xml version="1.0" encoding="utf-8" standalone="yes"?>色操视频在线,18视频在线观看网站,九九热在线视频观看这里只有精品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ƈ不能帮助(zhn)发现瓶颈,提高 Java™ 应用E序速度Q猜也不能帮?zhn)解决。Ted Neward 引导(zhn)关?Java 性能监控工具Q从5 个技巧开始,使用Java 5 的内|分析器JConsole 攉和分析性能数据?/p>

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

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

在本?5 件事 pd中,我将向?zhn)展?5 个方法,使?zhn)可以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 版本以及(qing)正在q行?Java E序数量Q,可能?x)出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Ӟ(zhn)只能双d开始分析?/p>

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

2. q程q接q程

因ؓ(f) Web 应用E序分析工具假设通过一个套接字q行q通性分析,(zhn)只需要进行少?dng)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?zhn)所需要的仅仅是一?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 ?qing)更高版?VM ?JMX 服务器上注册?JMX 对象提供的,是内|到 JVM 的。一个给?JVM 中可?bean 的完整清单在 MBeans 选项卡上列出Q包括一些元数据和一个有限的用户界面来查看数据或执行操作。(然而,注册通知是在 JConsole 用户界面之外。)

使用l计数据

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

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

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

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

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

5. JConsole q不是高p的

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

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

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

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

l束?/strong>

Java 性能监控不止?JConsole ?VisualVM ??JDK 中隐藏着一整套工具Q只是大多数开发h员ƈ不知道?本系? 中的下一文章将深入探究一些实验性的命o(h)行工P可以帮助(zhn)挖掘更多的(zhn)所需要的性能数据。因些工具通常只关注特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正确地找到问题所在,(zhn)需要对症状有全面了解,要做好准备进行大量研I工作,最后?zhn)需要制定正的ȝҎ(gu)。本文讨Z J2EE 应用E序性能问题的一些最常见cd和它们生的原因Q以?qing)如何正地诊断和消除它们的推荐指导原则?br />

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

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


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

http://www.mscto.com

 

?

 

毛病 描述 症状 原因或治?U性内存泄?每单?每事务、每用户{?泄漏造成内存随着旉或负载线性增ѝ这?x)随着旉或负载增镉K低系l性能。只有重启才有可能恢复?随着旉来慢
随着负蝲来慢 虽然可能有多U外部原因,但最典型的是与资源泄漏有?例如Q每单位数据的链表存储,或者没有回收的回收/增长~冲??指数方式内存泄漏 双倍增长策略的泄漏造成pȝ内存消耗表Cؓ(f)旉的指数曲U?随着旉来慢
随着负蝲来慢 通常是由于向集合(VectorQHashMap) 中加入永q不删除的元素造成的?p糕的编码:(x)无限循环 U程?while(true) 语句以及(qing)cM的语句里d?可以预见的锁?(zhn)需要对循环q行大刀阔斧的删剪?资源泄漏 JDBC 语句QCICS 事务|关q接Q以?qing)类似的东西被泄漏了Q造成?Java 桥接层和后端pȝ的媄响?随着旉来慢
可以预见的锁?br /> H然混ؕ 通常情况下,q是׃遗漏?finally 块,或者更单点Q就是忘记用 close() 关闭代表外部资源的对象所造成的?外部瓉问题 后端或者其他外部系l(如鉴权)来慢Q同样减~了 J2EE 应用服务器和应用E序 持箋~慢
随着负蝲来慢 咨询专家Q负责的W三Ҏ(gu)者系l管理员Q,获取解决外部瓉问题的方法?外部pȝ J2EE 应用E序通过太大或太多的h滥用后端pȝ?持箋~慢
随着负蝲来慢 清除冗余的工作请?Q成批处理相似的工作hQ把大的h分解成若q个更小的请求,调整工作h或后端系l?例如Q公共查询关键字的烦?{?p糕的编码:(x)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是因ؓ(f)泄漏Q?随着负蝲来慢
零星的挂h异常错误 分配不Q根据预期的最大负载提高池的最大尺寸。过度用:(x)请参阅外部系l的q度使用?不停止的重试 q包括对p|hq箋?或者在极端情况下无休止?重试?可以预见的锁?br /> H然混ؕ 可能是后端pȝ完全宕机。在q里Q可用性监控会(x)有帮助,或者就是把试与成功分开?U程Q阻塞点 U程在过于积极的同步点上备䆾Q造成交通阻塞?随着负蝲来慢
零星的挂h异常错误
可以预见的锁?br /> H然混ؕ 可能同步是不必要?只要重新设计)Q或者比较外在的锁定{略(例如Q读/写锁)也许?x)有帮助?U程Q死?zd?最普遍Q这是?zhn)基本?#8220;获得序”的问题?H然混ؕ 处理选项包括Q主锁,定的获得顺序,以及(qing)银行家算法?

量关键的统计指?/strong>


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

 

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

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

http://www.mscto.com

 

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

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

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

?

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

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

http://www.mscto.com

 

  (zhn)Ş成了几个假设。也许这里的毛病是一个糟p编码的lgQ也许是后端pȝ的瓶颈。它可能是一个同步阻塞点。?zhn)怎样才能分清它们的不同呢Q假设?zhn)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不能完全确定。?zhn)仍然q有三个主要的假设要排序Q是否数据库本n慢?应用E序是否Ҏ(gu)据库q行了不合理的请求?或者问题是不是出在应用E序和数据库之间的某个层上?(zhn)拿出数据库供应商专用的工具Q从它的角度查看响应旉。假设?zhn)看到如?5 所C的数字?

?

 

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

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

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

 

关于作?/strong>
  John Bley ?Wily Technology 的Y件工E师。他有丰富的 Java ~程和架构经验。ؓ(f)了撰写本文,他ȝ?Wily 的企业客L(fng)l验QW(xu)ily负责理复杂?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么会(x)慢?——用YSlowZ的网站提?/a>》,同时q有我翻译的Yahoo!的文章Yahoo!|站性能最佳体验的34条黄金守则—?a target="_blank">内容?a target="_blank">JavaScript和CSS?a target="_blank">服务?/a>?a target="_blank">囄、Coockie与移动应?/a>Q相信一定会(x)对你提高|站性能有帮助?/p>

一、Page Speed的安装及(qing)使用

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

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

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

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

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

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

二、活动记?/h4>

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

  • 查看面q行q程中所耗费的时_(d)以毫U计;
  • 查看览器事Ӟ包括面加蝲完成后的事gQ?
  • 区分造成面响应~慢的原因,其中包括|络来时、DNS查找、连接徏立、JavaScriptq行{;
  • 获取在特定时间或者事件下才响应的JavaScript事g列表Q?
  • 可以对其它标{或者窗口中打开的页面进行分析;
  • 多页面加载时的页面加载顺序;
  • Ҏ(gu)据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如果文件很大那么有可能一个资源会(x)出现多个该事件?/td>
 
 获取JS 览器获取JavaScript。该事g可能?x)g~其它事Ӟ如果此种情况出现Q将?x)在其下一行列出?/td>
 
q行JS 览器执行JavaScript。该事g可能?x)g~其它事Ӟ如果此种情况出现Q将?x)在其下一行列出。如果获取JS和运行JS中间有时间间隔,q说明源文g中包括有延时功能的函数?/td>

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

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

Page Speedzd记录——JS攉

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

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

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

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

菜毛毛 2010-02-05 13:22 发表评论
]]>
վ֩ģ壺 | Դ| | | | ɳ| Ӫ| | ĩ| | | | | | | Į| Ƹ| ƽ| | | ƽ| ʯȪ| ʡ| ɽ| | ʯɽ| | ɽ| | | | ±| | Ԫ| ˷| | | | | | |