2.5 Weblogic 基础 TroubleshootingPPT_第1页
2.5 Weblogic 基础 TroubleshootingPPT_第2页
2.5 Weblogic 基础 TroubleshootingPPT_第3页
2.5 Weblogic 基础 TroubleshootingPPT_第4页
2.5 Weblogic 基础 TroubleshootingPPT_第5页
已阅读5页,还剩53页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Troubleshooting,BEASystems(China),内容,WLS系统架构WLSHangWLSCrash(Coredump)常见的程序异常,WLS系统架构,WLS,WebLogicServer是一个纯java应用上层应用的稳定性和其下层的支撑系统紧密相关,WLS的请求处理,Request与WLSExecuteQueue,处理WLS问题的技巧,Troubleshooting基本技巧,了解相关的应用环境操作系统的版本和patch,TCP/IP参数的设定JDK版本及其设置WLS版本及其设置(config.xml)数据库连接的设置服务与应用组件的部署建立可重现问题的环境,不要在porduction系统上测试查看操作系统,JVM,WLSAdminconsole资料和Logs借助工具找出真正问题通常应用程序所造成的问题较多,但调整产品比较容易,Debugflag,-Dweblogic.kernel.debug=true-Dweblogic.StdoutDebugEnabled=true-Dssl.debug=true显示目前可用的Debugflagsweblogic.AdminGET-pretty-type(ServerDebug|kernelDebug|JDBCConnectionPool)设定DebugFlagsjavaweblogic.Admin-urlt3:/cxu01:7001-usernameweblogic-passwordweblogicSET-mbeanmydomain:Name=myserver,Server=myserver,Type=ServerDebug-propertyDebugSSLtrueDebuggingWebLogicPlatformInternals,分析log,Log类型:domainlog:.log或weblogic.logServerLog:.logHttpLog:access.logstandardoutput相关的信息:操作系统,JDK版本,WLS版本与patch环境变量,如classpath启动参数(javaoptions,systemproperties,wlsproperties.)debug信息注意error与warning,wls监控的信息,openSocketsopenConnectionshttpSessioins的数目Primary-SecondaryDistributionIdleThreads数目ExecuteQueue中PendingRequestsTransactionsJmsDestinations中pendingMessages以下资源的等待者JDBC,JOLT,与其他资源的connectionpoolsEJBs,Java与WLS的工具,JVMGC:javaverbosegcjvmstatJRociktManagementconsole与APIWLSweblogic.AdminToolsandUtilitiesWLShellWLSConsoleExtension第三方工具Jprobe,OptimizeIT,LoadRunner,Introscope,分析问题思路,检查系统状态确保运行于已认证平台确保正确的JDK版本及相关补丁检查列表中已有平台的bug及解决方案确保操作系统相关参数,尤其是TCP参数建议设置Config.xml应用部署描述文件Server,domain,http,JDBC等log信息WLSConsole上的监控信息操作系统的监控信息ps/top/vmstat/iostat/dbx/gdb,分析问题思路,打开跟踪调试信息设置日志级别到debug在config.xml中设置ServerDebug相关选项DebugHttp,DebugEjb,DebugCluster,DebugJMSStore等待threaddump多次,间隔1020秒分析线程状态,排除死锁,WLSHang,Hang,Hang即通常所说的挂起运行WebLogic的java进程还存在WebLogic不响应请求WebLogic处理请求很慢(sluggish,原则上并不属于hang,但其解决办法同挂起基本类似)确认JVM不是忙着GC,Hang的原因,Hang产生的原因一般为:系统内存不足系统cpu忙系统文件描述符数目不足WLSExecuteThread或SocketReaderThread不足线程死锁JVM有GC方面的问题或是bug对于一些特定的情况可以使用truss命令跟踪系统调用来进行分析(一般通过threaddump就够了),Hang-系统内存不足,系统内存不足出现OutOfMemoryError或是观察到内存吃紧操作系统本身的剩余内存通过top或是vmstat观察操作系统的swap区Swap区太小可能导致编译jsp时报“Notenoughspace”的错操作系统kernel参数中maxdsiz的大小如果观测到数据库连接池里的ConnectionLeak,极可能是内存泄漏的先兆,Hang-系统内存不足,JVM的heap区大小通过java命令行中的-Xms,-Xmx指定,建议最小值和最大值设成一样可以通过weblogicconsole上server/monitor/performance来观察其使用情况建议生产系统最少256M,一般情况下可以设置为系统剩余物理内存的80Heapsize太大在一些jvm上会有问题对于sun和hp的jvm,permanentsize太小也会出OutOfMemoryError在java命令行上加-XX:MaxPermSize=128m,Hang-系统内存不足,内存泄漏可以通过weblogicconsole来观察jvm的heapmemory使用情况来获知是否有内存泄漏情况采用第三方辅助工具(Jprobe/Optimizeit)来获取更详细信息有可能是weblogic的bug,但绝大部分情况是由用户的应用引起的最常见的代码问题是数据库连接没正常关闭,JDBCConnectionLeak,连接泄漏产生的原因没有正确释放JDBC资源在jsp中发生页面跳转(如errorPage),没有关闭连接连接泄漏的检测检测数据库超长时间的session设置ConnectionLeakProfiling选项使用P6Spy工具解决办法设置InactiveConnectionTimeoutSeconds时间(只是临时的办法)修改程序问题,JDBC程序范例,Hang-系统内存不足,尽量减少内存消耗Session中不要放大的数据,并尽量在不再需要的时候remove掉;如果可以调整sessiontimeout到较小的值避免在J2EEserver端应用里边调用awt/swing作图调整ejb的cache/pool设置,Hang-系统cpu忙,系统cpu忙如果用户访问量很大,cpu占用很高(user态)并不是异常如果是kernel态很多,需要OS厂商调整操作系统采用top找到占用cpu很多的进程,如果是非weblogic进程,应该考虑将其移到另外的server上运行。如果是运行weblogic的java进程,通过做threaddump来确认是那段代码导致了这么高的cpu使用(也有可能是os/jvm本身不正常,此时可用truss命令跟踪),Hang-系统文件描述符数目不足,系统文件描述符数目不足文件描述符表示达到了系统对一个进程能同时打开的文件数的限制Log中有“toomanyopenfiles”的错误,ulimitaH可以查看当前限制ulimitnnumber可以来更改当前环境的设置,建议至少设到4096Solaris上可以通过/usr/proc/bin/pfilespid来查看指定进程的限制和当前使用的filedescriptor数目Solaris上root用户可以通过/usr/proc/bin/plimit-nsoft,hardpid来动态更改进程的文件描述符的限制,Hang-ExecuteThread或SocketReaderThread不足,ExecuteThread不足QueueLength不断增长,未被处理通过threaddump,确认wls是不是很忙确认有没有死锁调整ExecuteQueue大小SocketReaderThread不足还有空闲的Executethread,但WLS没响应确认有没有死锁调整Socketreader的数目,Hang-线程死锁,threaddump对于原因不明的hang或是响应慢,最根本的方法就是获取threaddump信息对于windows系统,在运行java的窗口按CtrlBreak对于unix系统,首先用ps找到运行weblogic的java进程的pid,然后执行kill3pidJVM将负责将所有java进程的状态、执行堆栈dump到其标准输出为了方便获取threaddump信息,在weblogic启动的时候,最好将其标准输出重定向到一个文件为了反映线程状态的动态变化,需要接连多次做threaddump,每次间隔10-20s,Hang-线程死锁,线程死锁对于threaddump信息,主要关注的是线程的状态和其执行堆栈线程的状态一般为三类RunnableWaitingonmonitor(CW)Waitingformonitorentry(MW)一般关注的都是第一和第三种状态的线程Cpu很忙则关注runnable的线程,Cpu闲则关注waitingformonitorentry的线程一种典型的死锁是由于在server端应用(比如servlet)中请求由同一weblogic实例serve的资源,解决办法就是将该servlet放到另外的执行队列里去执行,Hang-JVMGC,怀疑JVM一直在GC打开jvm的gclog在java命令行上加上-verbose:gcGC的log输出在java进程的标准输出里在hp的jvm上,可以通过在java命令行上加-Xverbosegc:file=gcfilename来将gclog写到指定的文件解决方法:调整jvm的heap设置和gc算法升级jvm或是ospatch,Hang-JVMGC,怀疑JVM一直在FullGC(System.gc()打开JVM的GClog-verbosegc-XX:+PrintGCDetails-XX:+PrintGCTimeStamps-XX:+PrintTenuringDistribution-XX:+PrintHeapAtGC解决方法:调整jvm的heap设置和gc算法升级jvm或是ospatch-XX:DisableExplicitGc,WLS消失或终止,检查是否有人为结束WLS检查WLS启动目录是否产生Core文件检查程序中是否有System.exit(),WLSCrash,Crash,Crash即通常所说的当机运行WebLogic的java进程已经异常退出,WLSCrash的原因,WLScore的原因OutOfMemoryJNI代码Jvm的bugOs的bug,Crash-OutOfMemory,OutOfMemoryJvm一旦发生OutOfMemory的error,其行为将不再稳定“toomanyopenfiles”也可能导致jvm不稳定,Crash-OutOfMemory,操作系统生成的core文件一般在当前目录下采用gdb、dbx等debug工具来打开core文件gdb/usr/java/bin/sparc/native_threads/javacore使用where和bt命令来获取退出时的堆栈信息在windows平台上,可以通过Dr.Watson(WINNTsystem32DRWTSN32.EXE)来查看其日志,Crash-OutOfMemory,JVM生成的javacore文件一般在$WEBLOGIC_HOME下Sun和hp的jvm生成的是一个以hs_err_pid开头的log文件Ibm的jvm生成的是一个以javacore开头的txt文件其中会显示导致退出的函数名,库文件名和当前的执行堆栈如果其中函数名/库文件名为未知,则多半是从jit编译后的java代码中退出的,Crash-JNI代码,JNI代码关闭weblogic的nativeIO,nativeIO是指weblogic为了提高性能而采用的一部分jni代码,通过weblogicconsole上的server/configuration/tuning来设置,默认为enabled更换type2的jdbcdriver(比如将oracleocidriver/weblogicjdriverfororacle替换为oraclethindriver)检查使用的第三方api里边有没有jni代码检查自己的应用里边有没有jni代码,Crash-JVM的bug,JVM的bug换用不同小版本的jvm更改jvm的jit引擎(client/server)关闭jit,改用纯解释执行模式对于Sun和hp的jvm,在java命令行上加上-XintXfuture对于ibm的jvm,在java命令行上加上-Dpiler=NONE指定jvm忽略系统信号,在java命令行上加上-Xrs设置恰当的stacksize,在java命令行上加上-Xss指定。Stacksize过小可能会有stackoverflow,Stacksize过大可能会出“unabletocreatenativethread”的错误,Crash-OS的bug,OS的bugJVM厂商明确指出要求的ospatch必须打上按照beaedocs文档调整os的kernel参数尽量升级os到较高的patchlevel,常见的程序异常,java.lang.NoClassDefFoundError,程序调用到的Java类文件没有找到Classpath设置对于包含.class文件的.zip或.jar文件,路径以.zip或.jar文件名结尾对于未命名包中的.class文件,路径以包含.class文件的目录结尾对于已命名包中的.class文件,路径以包含“root”包(完整包名中的第一个包)的目录结尾。,java.lang.NullPointerException,空指针异常主要跟与对象的操作相关为了确保进行操作或引用的对象非空,对某对象进行操作或引用,首先需要检查该对象是否已经实例化且不为空;并且在系统中加入针对对象为空时情况的处理对象为空时,设置对象值为空字符串或一个默认值对象为空时,根本不执行某操作,直接跳转到其他处理中对象为空时,提示用户操作错误,java.lang.NumberFormatException,在任何用到字符串转化为数字时,捕捉异常,对异常情况进行处理检查到异常发生,即赋给某变量一个默认值检查到异常发生,提示用户使用正确的数字格式输入,java.lang.StringIndexOutOfBoundsException,对字符串进行截取(substring,charAt)、转换为字节数组(getBytes),字符数组转换为字符串(valueOf)操作时,先对操作字符串对象的存在性(是否为空)及长度进行检查后,再进行操作。,java.lang.Error,造成java.lang.Error的原因对系统所访问外部资源,未执行关闭操作,导致外部资源大量浪费,最终可能导致系统无法正常运行;对系统所访问的外部资源关闭次数太多,外部系统无法正常处理;系统访问的外部资源出现异常情况解决方案访问外部资源前,首先检查该资源(如数据库)是否可正常连接或操作。访问外部资源时,如果进行了连接,一定进行关闭操作,并仅进行一次关闭操作。尽量在同一操作中共享外部资源,以减少该操作对资源的消费,提高程序的执行效率。,TroubleshootingJsp&Servlet,Error404NotFound,CheckthatyouhavetypedtheURLoftheJSPfilecorrectly,andthatitisrelativetotherootdirectoryofyourWebApplication,Error500InternalServerError,ChecktheWebLogicServerlogfileforerrormessages.ThiserrorusuallyindicatesaClasssNotFoundexceptionhasoccuredduringJSPcompilation.,Error503ServiceUnavailable,IndicatesthatWebLogicServercannotfindthecompileritrequirestocompileyourJSPs,ErrorsUsingthetag,IfyouusethetaginyourJSPandtheappletfailstoload,carefullycheckthesyntaxofthetag.YoucancheckforpossiblesyntaxerrorsbyexaminingthegeneratedHTMLpa

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论