版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、Troubleshooting,BEA Systems(China),内容,WLS系统架构 WLS Hang WLS Crash(Core dump) 常见的程序异常,WLS系统架构,WLS,WebLogic Server是一个纯java应用 上层应用的稳定性和其下层的支撑系统紧密相关,WLS的请求处理,Request与WLS Execute Queue,处理WLS问题的技巧,Troubleshooting 基本技巧,了解相关的应用环境 操作系统的版本和patch,TCP/IP参数的设定 JDK版本及其设置 WLS版本及其设置(config.xml) 数据库连接的设置 服务与应用组件的部署 建
2、立可重现问题的环境,不要在porduction系统上测试 查看操作系统,JVM,WLS Admin console资料和Logs 借助工具找出真正问题 通常应用程序所造成的问题较多,但调整产品比较容易,Debug flag,-Dweblogic.kernel.debug=true -Dweblogic.StdoutDebugEnabled=true -Dssl.debug=true 显示目前可用的Debug flags weblogic.Admin GET -pretty -type(ServerDebug|kernelDebug|JDBCConnectionPool) 设定Debug Fla
3、gs java weblogic.Admin -url t3:/cxu01:7001 -username weblogic -password weblogic SET -mbean mydomain:Name=myserver,Server=myserver,Type=ServerDebug -property DebugSSL true Debugging WebLogic Platform Internals,分析log,Log类型: domain log: .log或weblogic.log Server Log:.log Http Log:access.log standard ou
4、tput 相关的信息: 操作系统,JDK版本,WLS版本与patch 环境变量,如classpath 启动参数(java options,system properties,wls properties.) debug信息 注意error与warning,wls监控的信息,open Sockets open Connections http Sessioins的数目 Primary-Secondary Distribution Idle Threads数目 Execute Queue中Pending Requests Transactions Jms Destinations中pending
5、Messages 以下资源的等待者 JDBC,JOLT,与其他资源的connection pools EJBs,Java与WLS的工具,JVM GC: java verbosegc jvmstat JRocikt Management console与API WLS weblogic.Admin Tools and Utilities WLShell WLS Console Extension 第三方工具 Jprobe, OptimizeIT, Load Runner, Introscope,分析问题思路,检查系统状态 确保运行于已认证平台 确保正确的JDK版本及相关补丁 检查列表中已有平台的
6、bug及解决方案 确保操作系统相关参数,尤其是TCP参数建议设置 Config.xml 应用部署描述文件 Server,domain,http,JDBC等log信息 WLS Console上的监控信息 操作系统的监控信息 ps/top/vmstat/iostat/dbx/gdb,分析问题思路,打开跟踪调试信息 设置日志级别到debug 在config.xml中设置ServerDebug相关选项 DebugHttp,DebugEjb,DebugCluster,DebugJMSStore等待 thread dump 多次,间隔1020秒 分析线程状态,排除死锁,WLS Hang,Hang,Hang
7、即通常所说的挂起 运行WebLogic的java进程还存在 WebLogic不响应请求 WebLogic处理请求很慢(sluggish,原则上并不属于hang,但其解决办法同挂起基本类似) 确认JVM不是忙着GC,Hang的原因,Hang产生的原因一般为: 系统内存不足 系统cpu忙 系统文件描述符数目不足 WLS Execute Thread或Socket Reader Thread不足 线程死锁 JVM有GC方面的问题或是bug 对于一些特定的情况可以使用truss命令跟踪系统调用来进行分析(一般通过thread dump就够了),Hang-系统内存不足,系统内存不足 出现OutOfMem
8、oryError或是观察到内存吃紧 操作系统本身的剩余内存 通过top或是vmstat观察 操作系统的swap区 Swap区太小可能导致编译jsp时报“Not enough space”的错 操作系统kernel参数中maxdsiz的大小 如果观测到数据库连接池里的Connection Leak,极可能是内存泄漏的先兆,Hang-系统内存不足,JVM的heap区大小 通过java命令行中的-Xms,-Xmx指定,建议最小值和最大值设成一样 可以通过weblogicconsole上server/monitor/performance来观察其使用情况 建议生产系统最少256M,一般情况下可以设置为
9、系统剩余物理内存的80 Heap size太大在一些jvm上会有问题 对于sun和hp的jvm,permanent size太小也会出OutOfMemoryError 在java命令行上加-XX:MaxPermSize=128m,Hang-系统内存不足,内存泄漏 可以通过weblogic console来观察jvm的heap memory使用情况来获知是否有内存泄漏情况 采用第三方辅助工具(Jprobe/Optimizeit)来获取更详细信息 有可能是weblogic的bug,但绝大部分情况是由用户的应用引起的 最常见的代码问题是数据库连接没正常关闭,JDBC Connection Leak,
10、连接泄漏产生的原因 没有正确释放JDBC资源 在jsp中发生页面跳转(如errorPage),没有关闭连接 连接泄漏的检测 检测数据库超长时间的session 设置Connection Leak Profiling选项 使用P6Spy工具 解决办法 设置InactiveConnectionTimeoutSeconds时间(只是临时的办法) 修改程序问题,JDBC程序范例,Hang-系统内存不足,尽量减少内存消耗 Session中不要放大的数据,并尽量在不再需要的时候remove掉;如果可以调整session timeout到较小的值 避免在J2EE server端应用里边调用awt/swing
11、作图 调整ejb的cache/pool设置,Hang-系统cpu忙,系统cpu忙 如果用户访问量很大,cpu占用很高(user态)并不是异常 如果是kernel态很多,需要OS厂商调整操作系统 采用top找到占用cpu很多的进程,如果是非weblogic进程,应该考虑将其移到另外的server上运行。如果是运行weblogic的java进程,通过做thread dump来确认是那段代码导致了这么高的cpu使用(也有可能是os/jvm本身不正常,此时可用truss命令跟踪),Hang-系统文件描述符数目不足,系统文件描述符数目不足 文件描述符表示达到了系统对一个进程能同时打开的文件数的限制 Lo
12、g中有“too many open files”的错误, ulimita H 可以查看当前限制ulimitn number可以来更改当前环境的设置,建议至少设到4096 Solaris上可以通过/usr/proc/bin/pfilespid来查看指定进程的限制和当前使用的file descriptor数目 Solaris上root用户可以通过/usr/proc/bin/plimit-n soft,hardpid 来动态更改进程的文件描述符的限制,Hang-Execute Thread或Socket Reader Thread不足,Execute Thread不足 Queue Length不断增
13、长,未被处理 通过thread dump,确认wls是不是很忙 确认有没有死锁 调整ExecuteQueue大小 Socket Reader Thread不足 还有空闲的Execute thread,但WLS没响应 确认有没有死锁 调整Socket reader的数目,Hang-线程死锁,thread dump 对于原因不明的hang或是响应慢,最根本的方法就是获取thread dump信息 对于windows系统,在运行java的窗口按CtrlBreak 对于unix系统,首先用ps找到运行weblogic的java进程的pid,然后执行kill 3 pid JVM将负责将所有java进程的
14、状态、执行堆栈dump到其标准输出 为了方便获取thread dump信息,在weblogic启动的时候,最好将其标准输出重定向到一个文件 为了反映线程状态的动态变化,需要接连多次做thread dump,每次间隔10-20s,Hang-线程死锁,线程死锁 对于thread dump信息,主要关注的是线程的状态和其执行堆栈 线程的状态一般为三类 Runnable Waiting on monitor(CW) Waiting for monitor entry(MW) 一般关注的都是第一和第三种状态的线程Cpu很忙则关注runnable的线程,Cpu闲则关注waiting for monitor
15、 entry的线程 一种典型的死锁是由于在server端应用(比如servlet)中请求由同一weblogic实例serve的资源,解决办法就是将该servlet放到另外的执行队列里去执行,Hang- JVM GC,怀疑JVM一直在GC 打开jvm的gclog 在java命令行上加上-verbose:gc GC的log输出在java进程的标准输出里 在hp的jvm上,可以通过在java命令行上加-Xverbosegc:file=gcfilename来将gclog写到指定的文件 解决方法: 调整jvm的heap设置和gc算法 升级jvm或是ospatch,Hang- JVM GC,怀疑JVM一直
16、在Full GC(System.gc() 打开JVM的GC log -verbosegc -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:+PrintTenuringDistribution -XX:+PrintHeapAtGC 解决方法: 调整jvm的heap设置和gc算法 升级jvm或是ospatch -XX:DisableExplicitGc,WLS消失或终止,检查是否有人为结束WLS 检查WLS启动目录是否产生Core文件 检查程序中是否有System.exit(),WLS Crash,Crash,Crash即通常所说的当机 运行WebLo
17、gic的java进程已经异常退出,WLS Crash的原因,WLS core的原因 OutOfMemory JNI代码 Jvm的bug Os的bug,Crash- OutOfMemory,OutOfMemory Jvm一旦发生OutOfMemory的error,其行为将不再稳定 “too many open files”也可能导致jvm不稳定,Crash- OutOfMemory,操作系统生成的core文件 一般在当前目录下 采用gdb、dbx等debug工具来打开core文件 gdb/usr/java/bin/sparc/native_threads/java core 使用where和bt
18、命令来获取退出时的堆栈信息 在windows平台上,可以通过Dr.Watson(WINNTsystem32DRWTSN32.EXE)来查看其日志,Crash- OutOfMemory,JVM生成的java core文件 一般在$WEBLOGIC_HOME下 Sun和hp的jvm生成的是一个以hs_err_pid开头的log文件 Ibm的jvm生成的是一个以javacore开头的txt文件 其中会显示导致退出的函数名,库文件名和当前的执行堆栈 如果其中函数名/库文件名为未知,则多半是从jit编译后的java代码中退出的,Crash-JNI代码,JNI代码 关闭weblogic的nativeIO,
19、nativeIO是指weblogic为了提高性能而采用的一部分jni代码,通过weblogicconsole上的server/configuration/tuning来设置,默认为enabled 更换type2的jdbcdriver(比如将oracleocidriver/weblogic jdriverfor oracle替换为oracle thin driver) 检查使用的第三方api里边有没有jni代码检查自己的应用里边有没有jni代码,Crash-JVM的bug,JVM的bug 换用不同小版本的jvm 更改jvm的jit引擎(client/server) 关闭jit,改用纯解释执行模式
20、 对于Sun和hp的jvm,在java命令行上加上-XintXfuture 对于ibm的jvm,在java命令行上加上-Dpiler=NONE 指定jvm忽略系统信号,在java命令行上加上-Xrs 设置恰当的stack size,在java命令行上加上-Xss指定。Stack size过小可能会有stack overflow,Stack size过大可能会出“unable to create native thread”的错误,Crash-OS的bug,OS的bug JVM厂商明确指出要求的ospatch必须打上 按照bea edocs文档调整os的kernel参数 尽量升级os到较高的pa
21、tch level,常见的程序异常,java.lang.NoClassDefFoundError,程序调用到的Java类文件没有找到 Classpath设置 对于包含 .class 文件的 .zip 或 .jar 文件,路径以 .zip 或 .jar 文件名结尾 对于未命名包中的 .class 文件,路径以包含 .class 文件的目录结尾 对于已命名包中的 .class 文件,路径以包含“root”包(完整包名中的第一个包)的目录结尾。,java.lang.NullPointerException,空指针异常主要跟与对象的操作相关 为了确保进行操作或引用的对象非空,对某对象进行操作或引用,首
22、先需要检查该对象是否已经实例化且不为空;并且在系统中加入针对对象为空时情况的处理 对象为空时,设置对象值为空字符串或一个默认值 对象为空时,根本不执行某操作,直接跳转到其他处理中 对象为空时,提示用户操作错误,java.lang.NumberFormatException,在任何用到字符串转化为数字时,捕捉异常,对异常情况进行处理 检查到异常发生,即赋给某变量一个默认值 检查到异常发生,提示用户使用正确的数字格式输入,java.lang.StringIndexOutOfBoundsException,对字符串进行截取(substring,charAt)、转换为字节数组(getBytes),字符
23、数组转换为字符串(valueOf)操作时,先对操作字符串对象的存在性(是否为空)及长度进行检查后,再进行操作。,java.lang.Error,造成java.lang.Error的原因 对系统所访问外部资源,未执行关闭操作,导致外部资源大量浪费,最终可能导致系统无法正常运行; 对系统所访问的外部资源关闭次数太多,外部系统无法正常处理; 系统访问的外部资源出现异常情况 解决方案 访问外部资源前,首先检查该资源(如数据库)是否可正常连接或操作。 访问外部资源时,如果进行了连接,一定进行关闭操作,并仅进行一次关闭操作。 尽量在同一操作中共享外部资源,以减少该操作对资源的消费,提高程序的执行效率。,T
24、roubleshooting Jsp&Servlet,Error 404Not Found,Check that you have typed the URL of the JSP file correctly, and that it is relative to the root directory of your Web Application,Error 500Internal Server Error,Check the WebLogic Server log file for error messages. This error usually indicates a Classs
25、NotFound exception has occured during JSP compilation.,Error 503Service Unavailable,Indicates that WebLogic Server cannot find the compiler it requires to compile your JSPs,Errors Using the tag,If you use the tag in your JSP and the applet fails to load, carefully check the syntax of the tag. You can check for possible syntax errors by examining the generated HTML page. If you see jsp:plugin . anywhere in the page, the synt
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 中国石化2027年度毕业生招聘统一初选考试考试模拟试题及答案解析
- 2026年陵川县教师招聘笔试参考题库及答案解析
- 2026安徽黄山市徽城投资集团有限公司人才选聘1人笔试备考题库及答案解析
- 2026年合肥市怀宁路幼儿园招聘保育员1名考试备考试题及答案解析
- 2026四川巴中经济开发区人力资源和社会保障服务中心第十四批就业见习岗位需求8人考试备考试题及答案解析
- 2026福建三明市宁化县安乐镇公开招聘2名公益性岗位人员考试模拟试题及答案解析
- 2026年孙吴县教师招聘笔试备考试题及答案解析
- 2026年南通建交建筑工程有限公司公开招聘工作人员5人考试参考题库及答案解析
- 2026藤县事业单位招聘梁耀宇等2名工作人员考试备考题库及答案解析
- 2026-黑龙江供电局宣传新媒体专员招聘考试参考题库-含答案
- 2026孙吴县供销合作社联合社社有企业面向社会联合公开招聘8人笔试备考试题及答案详解
- 2026年群众文化专业人员职称考试真题
- 二次函数与一元二次方程 (课件) 2026-2027学年人教版九年级数学上册
- 牙科手机注油机使用方法
- 雨课堂学堂在线学堂云《创新思维与创业实验(东南)》单元测试考核答案
- 2025年国才杯日语笔试真题及答案
- 慢性病管理APP开发
- 函数的单调性 第一课时 课件(共18张) 高一上学期数学人教A版必修第一册
- 光伏项目施工安全管理方案
- 压力容器安全知识培训课件
- 2024(苏教版)劳动六年级上册全册教学案
评论
0/150
提交评论