挖掘WeblogicServer11g的潜力诊断与调优

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

第三讲:挖掘WeblogicServer11g的潜力:诊断与调优VicoXia(夏卫国)高级技术顾问vico.xia@oracle.comWebLogicServer系列网络研讨会本次培训所有日程安排2011-3-1上午9:45~12:00Session1:快速入门WeblogicServer11g▲Oracle中间件产品家族一览(售前/方案/商务/管理/开发,所有人群)▲WeblogicServer11g整体架构预览▲WeblogicServer11g基础知识和概念(Domain,Server,Machine...)▲WeblogicServer11g安装实例▲问与答2011-3-8上午9:45~12:00Session2:管好您的WeblogicServer11g与群集配置▲管理控制台的使用(参数、监控、日志等)▲部署与管理您的应用(手工与自动化部署)▲管理数据库连接池(JDBC),消息服务(JMS)▲集群安装与配置(重点)---架构,环境准备,创建集群与配置代理服务器▲问与答2011-3-15上午9:45~12:00Session3:挖掘WeblogicServer11g的潜力:诊断与调优▲Weblogic调优方法概览▲调整:OS,网络,JVM,WLS内核,J2EE组件▲TroubleShooting▲高级技术,使用自带工具:诊断包与管理包,打破黑箱子,从Java代码到SQL语句进行全面诊断与优化▲问与答©2009OracleCorporation2Agenda•Weblogic调优方法概览•调整:OS,网络,JVM,WLS内核,J2EE组件•TroubleShooting•高级技术,使用自带工具:诊断包与管理包,打破黑箱子,从Java代码到SQL语句进行全面诊断与优化•问与答性能调优的思路使其运行1使其更快3使其美观2开发软件应用程序时的常见思路性能•性能差的代价:–高成本与应用程序性能差有关–IT的投资回报–给组织收入流带来风险–客户满意度那么,什么是性能?在哪些情况下应开始考虑性能?如何提高性能?软件性能工程•软件性能工程(SoftwarePerformanceEngineering,SPE)是一种构建软件系统以达到系统性能目标的方法。•SPE过程开始于开发周期早期的系统需求分析阶段。–环境所需要的性能目标被记录下来•然后,在整个设计和实施阶段,使用定量方法来确定符合要求的架构。•这些方法可用于排除那些性能可能难以接受的架构。•SPE存在于整个开发过程中,其目的包括:–预测和管理不断发展的软件的性能–依据规范监视实际性能,并报告确定的问题性能测试•测试性能时,应该让系统运行较长时间,例如一天或一周,以生成较长时段的趋势•一些注意事项:–缺少实际网络连接的测试会产生错误的测量结果–模拟的用户少会显著不同于模拟的用户多时的状况–网络吞吐量可能会大于部署的环境–非持久性消息的性能与处理器和内存有关–磁盘速度对持久性消息至关重要性能的衡量标准及关注点•软件系统的性能通常使用如下度量来衡量:–响应时间–时间度量。例如,服务器传递网页所花费的请求响应时间。–吞吐量–速率度量(单位时间的请求数);例如,每秒请求数、每秒比特数。–资源利用率–使用量度量。例如,CPU使用率•可伸缩性是指在以下因素有所增加的情况下,系统在规范范围内的执行能力:–用户负载–数据负载–硬件扩展测试结果集•每个基准测试结果集应(至少)包括以下详细信息:–应用程序的版本和设计–WLS的版本和ServicePack–硬件配置–操作系统配置–WLS域和集群的配置–……•结果报告–平均响应时间–客户端负载–评价吞吐量–……性能调优的准则性能调整并不是万全之策1设计应用程序时要考虑到性能3性能调整是一个持续不断的过程2Agenda•Weblogic调优方法概览•调整:OS,网络,JVM,WLS内核,J2EE组件•TroubleShooting•高级技术,使用自带工具:诊断包与管理包,打破黑箱子,从Java代码到SQL语句进行全面诊断与优化•问与答调优的具体操作思路及更改WLS属性•必须隔离潜在的瓶颈才能确定WLS是不是问题所在•更改属性的步骤:–创建可重复的合适测试–测量基准性能–修改单个WLS的属性–如果合适,重启服务器–重新测量性能找到瓶颈—CPU限制•很容易检查到CPU限制情况,因为此时CPU会以100%或接近100%的使用率运行•可能的原因包括:–垃圾回收–Java应用程序本身效率问题•解决方法:–监视垃圾收集–分析Java应用程序找到瓶颈—I/O限制•I/O限制通常具有以下特征:–CPU未达到饱和–不管客户端负载如何,性能都相同(例如,无论有多少个客户端,到数据库的TPS始终为50个)•I/O限制常见的类型:–数据库限制–网络限制数据库限制•应用程序性能的瓶颈可能是在数据库访问环节•配置解决方法:–使用索引–允许多个数据库连接–使用快速的专用计算机–微调数据库–……网络限制•如果网络达到饱和,则它就会成为瓶颈•可以监视网络来确定网络性能,解决性能问题时,不要忘记检查数据包丢失或错误–数据包再发送、重复数据包、数据包监听丢失–netstat(显示协议统计和当前的TCP/IP网络连接)•netstat[-a][-e][-n][-s][-pprotocol][-r][interval]•网络可能会在带宽使用率低于50%时达到饱和–应该确保应用系统有足够的带宽•如客户端到WLS,WLS到数据库服务器之间的带宽。–在集群中•Servlets和EJBs复制会话信息需要更大的网络带宽•可能的解决方案:–购买更多带宽–使用更大的数据包,从而更好的利用网络带宽–使用特定于操作系统的配置OS限制•每种操作系统缺少的优化参数是不同的–在Windows平台,缺省的设置通常就足够了–在UNIX和Linux通常需要进行适当的调整•UNIX和Linux通常需要调整以下一些参数设置–文件描述符–Timewaitinterval–Swap空间–进程和线程文件描述符•操作系统把TCP套接字当做一种特殊的文件存取格式来处理,并使用文件描述符来跟踪记录操作系统进程打开的套接字和文件。为了控制资源的使用情况,操作系统会限制每个进程打开的文件描述符的数量•默认情况下,一个进程可获得的文件描述符的数量取决于操作系统的类型及它的配置情况TimeWaitInterval•应用程序关闭的TCP连接,在被操作系统释放前,将先进入等待状态。套接字处于等待状态的时间称为timewaitinterval。在这种状态下,操作系统会维护分配给该socket的资源,包括文件描述符•这个参数决定TCPSocket在被执行关闭操作后保持alive状态的时间间隔swap空间•太多的Swap空间–会浪费磁盘空间•太少的Swap空间–则系统会发生错误•如果Swap空间用完–则服务进程无法启动,通常会出现“applicationisoutofmemory”的错误,严重时会造成服务进程的死锁。•Swap分区的数量对性能也有很大的影响Java虚拟机•是在实际计算机(硬件)上以软件形式实现的抽象计算机•读取独立于平台的编译字节码•其设计目的是支持Java编程语言•通常是针对本地操作系统编写的Java堆(Heap)•动态分配块的内存区域称为堆•JVM堆存储正在执行的Java程序创建的所有对象•任何由根引用的对象都是可访问的,因此是活动对象•本地变量驻留在Java堆栈上,每个执行线程都有自己的堆栈垃圾回收(GarbageCollection)•此过程确认如何检测不再引用的对象,以及如何使未使用的内存可用于将来分配•由JVM自动执行,因此程序员无需显式释放对象–垃圾包括任何程序都无法引用的对象•没有任何静态、实例或本地变量直接或间接引用它们JVM调整•JavaEE应用程序部署在JavaEE应用服务器上•作为Java程序,JavaEE应用服务器需要Java虚拟机来运行和支持其上运行的Java应用程序•正确配置JVM参数可以增强应用服务器的性能•JVM调整的内容包括:–内存参数(堆大小)–垃圾回收–堆栈大小–类加载–编译/解释JVM实现与版本选择•不同的供应商针对不同的硬件平台提供不同的JVM实现–HotSpotVM–JRockitJVM–IBMJVM–HPJVM•推荐使用经过WLS认证的Java虚拟机•在IA架构的系统上应考虑使用JRockitHotSpotVM•与其他VM一样,HotSpotVM首先直接解释应用程序的字节码•然后,检测占用应用程序大部分时间的方法(“热点”),并将这些方法转换为本地代码•HotSpotVM使用自适应优化技术•它包括两个可互换的版本:–客户端:调整侧重于快速加载和编译重要类和方法–服务器端:加载速度较慢,但更侧重于生成高度优化的JIT编译,从而获得更高的性能分代垃圾回收•按“代”管理堆内存,“代”用于存放生存权不同的对象•根据详细研究得出的结论,多数服务器端堆对象的生存期都很短。而有些对象的生存期却较长•分代垃圾回收利用这类生存期短的对象来提高垃圾回收的实时性能•分代垃圾回收是对传统垃圾回收算法的重大改进分代堆概述•堆大致可分为三个区域:–年轻代–年老代–持久代•年轻代可进一步分为:–Eden–存活空间(2个)HotspotJVM的监视工具•在5.0版本中,对Java虚拟机(JVM)配备了很多用于监视和管理的工具,包括:–jconsole:符合JMX标准的JVM监视和管理控制台–jps:JVM进程状态工具–jstat:JVM性能和GC统计信息监视工具–jinfo:输出JVM配置信息的工具–jmap:输出堆和共享对象内存映射的工具–jstack:线程堆栈跟踪信息输出工具J2SE5.0监视与管理架构调整垃圾回收相关参数•进行调整时,需要使用专门工具做一系列实验,或凭借良好的判断力来确定垃圾回收效果的好坏。•使用-Xms和-Xmx控制堆的原始值(最小值)和最大值–如:java–Xms128m–Xmx128m•持久代保留给JVM存入类和方法的reflection对象,默认大小为4M。可使用–-XX:PermSize标志设置初始值。–-XX:MaxPermSize用来指定持久代大小的上限调整垃圾回收相关参数(续)•堆中代的大小–-XX:NewSize=[n]-XX:MaxNewSize=[n]–-XX:NewRatio=[n]年老代:年轻代的比例,HotSpot客户端默认为8,服务器端默认为2–-XX:SurvivorRatio=[n]年轻代空间:存活空间比率(默认值是25)–-XX:MaxTenuringThreshold=[n]从年轻代提升到年老代的阈值•开关设置参数–-XX:+DisableExplicitGC禁止显式垃圾回收–-XX:+UsePerfData此标志将启用对JVMVisualGC监视–-verbosegc详细列出垃圾回收信息–-XX:+PrintGCDetails输出有关垃圾回收的其它信息–-XX:+PrintGCTimeStamps输出每次垃圾回收开始时的时间戳垃圾回收算法选项说明代-XX:+UseParallelGC并行/吞吐量垃圾回收年轻代-XX:+UseConMarkSweepGC并发型低暂停垃圾回收年老代-XX:+UseTrainGC增量型/自适应型低暂停垃圾回收年老代default串行垃圾回收—让应用程序暂停年轻代和年老代•影响垃圾回收算法的HotSpot命令行开关项最长暂停时间目标•所谓暂停时间,就是垃圾回收通过停止应用程序来恢复不再使用的堆空间所用的时间•通过设置此目标,可以限制此类应用程序暂停的最长时间•使用以下命令行标志指定:–-XX:MaxGCPauseMillis=nnn•如果指定了此目标,垃圾回收会调整堆大小和其他参数,使暂停时间始终比指定时间短吞吐量目标•设置吞吐量目标时,可指定垃圾回收可以耗费的总垃圾回收时间•使用以下命令行标志指定:–-XX:GCTimeRatio=nnn•垃圾回收时间与应用程序时间之比为1/(1+nnn)•衡量吞吐量目标时,会考虑

1 / 165
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功