SlideShare una empresa de Scribd logo
1 de 54
Descargar para leer sin conexión
WebLogic问题排除概览
孟和
渠道售前咨询顾问
以下内容旨在概述产品的总体发展方向。
此信息仅供参考,不可纳入任何合同。此
信息不承诺提供任何资料、代码或功能,
并且不应该作为制定购买决策的依据。此
处所述有关 Oracle 产品的任何特性或功能
的开发、发布以及相应的日程安排均由
Oracle 自行决定。
议程
• Guardian
• JVM层面的问题诊断
• Java应用程序及服务器层面问题诊断
议程
• Guardian
• JVM层面的问题诊断
• Java应用程序及服务器层面问题诊断
通过Guardian能做什么?
• Oracle Guardian:
• 就像是WLS的杀毒软件或者病毒扫描器
• 检查域的常见配置问题和运行时问题,并针对性的提供建议的
解决方案
• 包括图形化界面和命令行方式
• 也可以监控运行于WLS之上的其他Oracle产品
• 有Oracle支持账户的用户可以免费使用
• 可以自动创建售后服务Case
使用Guardian
• 在如下的场景可以使用Guardian对域进行评估:
• 域创建并配置之后
• 作为开发环节之一,在部署到生产系统之前
• 在打过WLS补丁之后
• 在系统中引入或者对其它第三方软件进行升级后
• 生产系统可以进行周期性的评估
• 在压力测试中,对域进行评估
Guardian工作架构
安装Guardian代理
• WLS安装会自带Guardian代理(以war包的形式)
• 可以手动将代理部署到所有服务器,或者使用管理控
制台的快捷方式部署
• 当Oracle支持部门发布新版本代理后,对其进行更新或
重新部署
收集数据
• 在评估过程中, Guardian代理会收集如下类型数据:
• JMX(包括配置和运行时数据)
• 应用部署描述符设置
• JVM系统属性
• JRockit JVM 运行时的统计数据
Guardian客户端安装
• 从Oracle支持站点下载Guardian客户端的安装介质
• 需要用到JVM 1.5 或更新的版本
• 启动Guardian,并且选择workspace位置,该位置将存
储用户偏好和评估数据
Guardian用户界面
激活Guardian对域的管理
• 激活域的过程:
• 在Workspace中注册域信息
• 利用代理生成初始化的域Inventory
创建域Inventory
• 域的Inventory是:
• 域配置快照(包括服务器、应用、数据源等)
• 在每次域评估之前自动生成
• 也可以手动生成,用来开Case
特征模式及特征包
Signature Patterns & Signature Bundles
• 特征模式( Signature Patterns):
• 域评估数据的某种潜在问题模式的标识
• 由Oracle支持部门创建
• 也有不同的严重层次(Info,Warning,Critical等等)
• 特征包( Signature Bundles )
• 带有相似特征的Signature Patterns的集合
• 可以作为一个单元被评估
更新特征库
• 通过如下方式更新Guardian的最新特性和特征模式:
• 运行Update Wizard
• 从支持站点下载文件,手动安装
对域进行评估
1. 选择要评估的域
2. 选择要测试的特征模式
评估结果
生成SR(Support Request)
• 可以用Guardian生成文件附在支持Case中
• 生成的car文件包括:
• 所选择的特征模式的详细信息
• 域Inventory和评估结果
• 域配置文件(可选)
• 服务器的日志文件(可选)
议程
• Guardian
• JVM层面的问题诊断
• Java应用程序及服务器层面问题诊断
Out of Memory
• 当JVM没有足够的内存执行任务时,会触发
java.lang.OutOfMemoryError
• 当没有更多内存可以分配时
• 或空闲的内存有太多碎片,无法利用时
• 可能不足的内存类型有:
• Native (操作系统内存)
• Heap (堆内存)
• 特定Java 内存代(例如,permanet)
对Out of Memory的响应
• JVM会发送error到标准输出流和错误输出流
• WLS会将应用程序没有处理的Java异常和错误都输出
到服务器日志
• Out-of-Memory和类似的系统错误不应该由应用程序直
接处理
• 如果应用程序发生错误,会给客户端返回错误信息(
例如HTTP 500)
• 如果WLS子系统发生错误,则服务器处于不稳定状态
,需要重启
内存泄漏
• 内存泄漏:
• 最常见的引发Out-of-Memory错误的原因
• 在Java中,内存泄漏并不常发生(相对传统语言)
• 内存泄漏的原因是当对象不再被需要时,没有显式声明,进而
没有被垃圾回收处理
• 常见的场景有:
• 太大的缓存造成内存泄漏
• 太多使用HTTP会话,导致内存泄漏
• 对数据库操作结束时,没有正常关闭数据集及数据连接
• 动态类加载问题
JVM错误日志
• 该日志文件通常包括如下类型的信息:
• 操作系统错误消息
• JVM版本
• 硬件和操作系统参数
• 系统环境变量
• 堆和垃圾回收汇总
• 线程汇总
JVM工具类型
• 大多数的JVM诊断工具可以归为如下两大类:
• 代理
• 在JVM里面运行
• 可以通过JVM命令行属性启用或配置
• 周期性触发或在特定情况下触发
• 客户端工具
• 与JVM通信并提取数据的外部进程
• 可以使用图形化界面或命令行接口
JRockit Flight Recorder概念
• JRockit R28 版本的新添特性
• JRockit JVM 中的“循环缓冲” 存储诊断
数据
• 时刻缓冲
• 新的数据进入缓冲,旧的数据溢出
• 与JRMC的预集成
• 代替原来的JRMC Runtime Analyzer 和
Latency Analyzer
• 接近零开销
• 收集的数据本身就是JVM使用的数据
• 数据除了来自于JVM的事件,也可以是
其他事件提供者
• WebLogic Server (WLDF)
• Fusion Middleware (DMS)
FlightRecording
New Data
Old Data
Time
• 适合使用JRockit Flight Recorder的场景?
• 提供正在运行的生成系统的诊断信息
• 捕获导致故障问题的最新活动信息进行分析
• 捕获各个层次的事件JVM, WLS, DMS, …
• 可以使用JRMC GUI进行在线和离线分析
• JRockit dumps 捕获crash相关信息进行辅助分析
• 不适合使用JRockit Flight Recorder的场景?
• 大事件负载和大事件规模
• 长时间事件分析
• 不作为Debug日志或服务器日志的代替品
JRockit Flight Recorder使用场景
WebLogic诊断框架与JFR的集成
WLDF Events
WLDF
触发JFR 写缓冲
在Diag Image中捕获JFR
• WLS事件可以传播到JFR
– 可以把WLS数据在JFR中进
行统一的展示,进行黑盒和
性能分析
– 来自所有数据源的事件(JVM,
WLDF, DMS) 可以进行统一
分析
• JFR文件与WLDF Watch
rule/diagnostic image的集
成
– 可以基于Watch rule捕获事件
– RADAR - Diagnostic image
可以触发JFR文件生成; JFR
文件包含在 WLDF diagnostic
image中
– 包含所有事件生成器生成的
全部的JFR数据
JRMC图形界面的Flight Recorder数据
Java Stack Trace
• 列出和描述程序中特定语句的方法调用序列
• 清晰的给出程序中各个层次的调用关系
• 包括源代码的行数,除非在编译时显式的删除了这些
行信息
Java Thread Dump
• Thread Dump提供程序中正在运行的线程的快照,包
括:
• 当前状态(运行、阻塞、等待……)
• 当前的Stack Trace
Thread Dump 信号量
• 触发WLS实例的Thread Dump
• 通过管理控制台或者WLST脚本
• 在UNIX系统,可以通过发送QUIT信号量触发
• 在Windows系统,可以通过发送Break信号量触发
• 通过其他JVM工具
管理控制台对JVM的监控
配置WLS低内存检测
防患于未然
• 服务器可以根据某些特定的阈值来识别此类情况,并
将服务器的状态标记为WARNING
• 包括的阈值有:
• Low Memory GCThreshold
(判断内存低的GC阈值)
• Low Memory Granularity Level
(判断内存低的粒度级别)
• Low Memory Sample Size(判断内存低的样例大小)
• Low Memory Time Interval(判断内存低的时间间隔)
JVM Crash
• 虽然JVM非常稳定,但极少数情况JVM本身也会出错
,进而导致服务器Crash
• 根据JVM和出差类型的不同,会生成日志或core file
• Core File:
• 虚拟机出错时,进程内存的二进制数据快照
• 由Native Code出错而触发(例如JVM、Native WLS库,
Native数据库驱动等)
• 可使用操作系统工具查看
• 可根据操作系统设置进行禁用或跟踪分析
JVM Crash行为
• 大多数的JVM在Crash时,支持额外选项:
• 暂停执行,进行最后的thread dump,或使用操作系统的调试
工具
• 执行自定义脚本
议程
• Guardian
• JVM层面的问题诊断
• Java应用程序及服务器层面问题诊断
Java异常处理概念
• 异常会给出JVM、WLS或应用程序的问题所在
• Checked Exception是可恢复的问题,应该被捕获并且
在应用程序代码中进行处理
• Unchecked Exception或者error:
• 是底层系统问题
• 通常不需要应用程序处理
• 通常WLS会捕获该类问题,并作为error输出到日志
客户端类库错误
• 远程EJB/JMS客户端通常需要在类路径中引用WLS客
户端Jar文件
• 远程EJB客户端通常需要访问到生成的EJB客户端类或
stubs(这些内容通常被打包到jar文件中)
• 客户端找不到需要的WLS客户端jar包,或者找到老版
本的jar包,或者EJB客户端jar包找不到都会引起运行
时错误
使用jarbuilder为客户端应用生成wlfullclient.jar
• 解决办法:
• 使用 jarbuilder 生成 wlfullclient.jar
• 具体操作:
• cd C:/beahome/wlserver_10.3/server/lib
• java –jar wljarbuilder.jar // creates wlfullclient.jar which contains all
the classes from weblogic.jar plus some of the exploded modules.
Null Pointer Errors
• 这类错误是因为程序中预期访问到一个有值的变量,
但是该变量却并没有被赋值造成的
• 常见的原因可能是:
• 应用程序设计和实现有问题
• 应用的某些使用场景没有被很好的测试
• 配置文件中缺少参数
• 程序中没写错误处理逻辑
• 这类错误通常需要使用调试工具查找具体出错的代码
Stack Overflow Errors
• 递归做为一种算法在程序设计中广泛应用,指函数在
运行过程中直接或间接调用自身而产生的重入现象
• Stack Overflow 这类错误通常是因为:
• 一些递归调用太深,达到了JVM调用堆栈的最大值
• 递归调用的程序实现本身有问题
• 周期性的进行thread dump来找到有问题的递归代码
Too Many Open Files Errors
• JVM需要操作系统的文件描述符对象来:
• 打开文件
• 建立TCP Socket连接
• 大多操作系统会限制单线程可以使用的描述符的数量
• 如果描述符打开的数量达到限制值,则JVM会触发
error
Class Not Found Errors
• 这类错误通常是由于:
• JVM找不到某个被创建或被调用对象的类定义文件
• 类定义在编译时是有的,但是运行时却找不到
Class Cast Errors
• 这类错误当程序调用某类型的对象,却得到的不是期
望的类型时发生
• 通常,由下面的原因造成:
• 应用程序设计和实现有问题
• 应用的某些使用场景没有被很好的测试
• 可能是JVM中存在多个相同类的不同版本
• 自定义的类加载器配置
Classpath概览
• Java classpath是JVM查找类和包的路径的静态列表,
包括:
• 文件夹
• Jar包
• 可以如下配置classpath:
• 使用JVM的-classpath属性
• 通过环境变量:CLASSPATH
WebLogic启动脚本概览
Manifest文件与Classpath
• Jar文件通常会包含META-INF/manifest.mf文件
• 可以在Jar的manifest中添加更多类库到classpath
• 在启动时,WLS会输出这些manifest内容
域的类库
• WLS支持将域的lib文件夹中的Jar文件添加到系统
classpath
• 该方式将对域中所有服务器有效
Java Class Loader
• 系统的classpath的修改必须重启后才会生效
• Class Loader
• 表示类定义所在路径
• 以层次结构组织,即父子方式
• 由WLS动态创建和销毁,以实现热部署
• JVM采用托管模式进行类加载
WLS的缺省Class Loader层次
Prefer Web Application Classes
• 缺省情况下,父类加载器中定义的类定义会覆盖当前
类加载器
• 特定情况下,Web应用或模块希望使用与系统类加载
器中类库不同的版本
• 这时,需要通过weblogic.xml部署描述符重写该缺省:
Prefer Enterprise Application Classes
• 针对企业应用(EAR)提供类似的功能
• 在weblogic-application.xml中指定要加载的java包
• 支持通配符
WLS子系统调试
• 大部分WLS的子系统都可以输出非常详细的调试日志
信息
• 用户可以动态打开特定服务器和任何子系统的调试日
志
06.wls ts

Más contenido relacionado

Similar a 06.wls ts

阿里巴巴 肖劲青 阿里巴巴运维自动化的探索与规划
阿里巴巴 肖劲青 阿里巴巴运维自动化的探索与规划阿里巴巴 肖劲青 阿里巴巴运维自动化的探索与规划
阿里巴巴 肖劲青 阿里巴巴运维自动化的探索与规划colderboy17
 
阿里巴巴运维自动化的探索与规划
阿里巴巴运维自动化的探索与规划阿里巴巴运维自动化的探索与规划
阿里巴巴运维自动化的探索与规划mysqlops
 
02.wls概览
02.wls概览02.wls概览
02.wls概览Meng He
 
6.web 安全架构浅谈
6.web 安全架构浅谈6.web 安全架构浅谈
6.web 安全架构浅谈Hsiao Tim
 
Java 1(Java概述)
Java 1(Java概述)Java 1(Java概述)
Java 1(Java概述)xzdbd
 
数据库性能诊断的七种武器
数据库性能诊断的七种武器数据库性能诊断的七种武器
数据库性能诊断的七种武器Leyi (Kamus) Zhang
 
盛大游戏运维体系
盛大游戏运维体系盛大游戏运维体系
盛大游戏运维体系Ken Liu
 
十个最好的Java性能故障排除工具
十个最好的Java性能故障排除工具十个最好的Java性能故障排除工具
十个最好的Java性能故障排除工具wensheng wei
 
Ch13 整合 Spring MVC/Security
Ch13 整合 Spring MVC/SecurityCh13 整合 Spring MVC/Security
Ch13 整合 Spring MVC/SecurityJustin Lin
 
05.wls调优
05.wls调优05.wls调优
05.wls调优Meng He
 
000 北京圣思园教育科技有限公司第一期面授培训大纲
000 北京圣思园教育科技有限公司第一期面授培训大纲000 北京圣思园教育科技有限公司第一期面授培训大纲
000 北京圣思园教育科技有限公司第一期面授培训大纲ArBing Xie
 
Jvm基础调优实践(v1.0)
Jvm基础调优实践(v1.0)Jvm基础调优实践(v1.0)
Jvm基础调优实践(v1.0)ddviplinux
 
美团前端架构简介
美团前端架构简介美团前端架构简介
美团前端架构简介pan weizeng
 
Nodejs & NAE
Nodejs & NAENodejs & NAE
Nodejs & NAEq3boy
 
Oracle saa s paas overview
Oracle saa s paas overviewOracle saa s paas overview
Oracle saa s paas overviewChris Lee
 
Oracle雲端服務介紹 taiwan
Oracle雲端服務介紹   taiwanOracle雲端服務介紹   taiwan
Oracle雲端服務介紹 taiwanChieh-An Yu
 
Btrace intro(撒迦)
Btrace intro(撒迦)Btrace intro(撒迦)
Btrace intro(撒迦)ykdsg
 
04.wls jndi jms
04.wls jndi jms04.wls jndi jms
04.wls jndi jmsMeng He
 
GlassFish特性介绍
GlassFish特性介绍GlassFish特性介绍
GlassFish特性介绍Jim Jiang
 

Similar a 06.wls ts (20)

Android工作坊
Android工作坊Android工作坊
Android工作坊
 
阿里巴巴 肖劲青 阿里巴巴运维自动化的探索与规划
阿里巴巴 肖劲青 阿里巴巴运维自动化的探索与规划阿里巴巴 肖劲青 阿里巴巴运维自动化的探索与规划
阿里巴巴 肖劲青 阿里巴巴运维自动化的探索与规划
 
阿里巴巴运维自动化的探索与规划
阿里巴巴运维自动化的探索与规划阿里巴巴运维自动化的探索与规划
阿里巴巴运维自动化的探索与规划
 
02.wls概览
02.wls概览02.wls概览
02.wls概览
 
6.web 安全架构浅谈
6.web 安全架构浅谈6.web 安全架构浅谈
6.web 安全架构浅谈
 
Java 1(Java概述)
Java 1(Java概述)Java 1(Java概述)
Java 1(Java概述)
 
数据库性能诊断的七种武器
数据库性能诊断的七种武器数据库性能诊断的七种武器
数据库性能诊断的七种武器
 
盛大游戏运维体系
盛大游戏运维体系盛大游戏运维体系
盛大游戏运维体系
 
十个最好的Java性能故障排除工具
十个最好的Java性能故障排除工具十个最好的Java性能故障排除工具
十个最好的Java性能故障排除工具
 
Ch13 整合 Spring MVC/Security
Ch13 整合 Spring MVC/SecurityCh13 整合 Spring MVC/Security
Ch13 整合 Spring MVC/Security
 
05.wls调优
05.wls调优05.wls调优
05.wls调优
 
000 北京圣思园教育科技有限公司第一期面授培训大纲
000 北京圣思园教育科技有限公司第一期面授培训大纲000 北京圣思园教育科技有限公司第一期面授培训大纲
000 北京圣思园教育科技有限公司第一期面授培训大纲
 
Jvm基础调优实践(v1.0)
Jvm基础调优实践(v1.0)Jvm基础调优实践(v1.0)
Jvm基础调优实践(v1.0)
 
美团前端架构简介
美团前端架构简介美团前端架构简介
美团前端架构简介
 
Nodejs & NAE
Nodejs & NAENodejs & NAE
Nodejs & NAE
 
Oracle saa s paas overview
Oracle saa s paas overviewOracle saa s paas overview
Oracle saa s paas overview
 
Oracle雲端服務介紹 taiwan
Oracle雲端服務介紹   taiwanOracle雲端服務介紹   taiwan
Oracle雲端服務介紹 taiwan
 
Btrace intro(撒迦)
Btrace intro(撒迦)Btrace intro(撒迦)
Btrace intro(撒迦)
 
04.wls jndi jms
04.wls jndi jms04.wls jndi jms
04.wls jndi jms
 
GlassFish特性介绍
GlassFish特性介绍GlassFish特性介绍
GlassFish特性介绍
 

Más de Meng He

Soa best practices_1013x_drop3
Soa best practices_1013x_drop3Soa best practices_1013x_drop3
Soa best practices_1013x_drop3Meng He
 
F428435966 odtug web-logic for developers
F428435966 odtug   web-logic for developersF428435966 odtug   web-logic for developers
F428435966 odtug web-logic for developersMeng He
 
大唐电信—物联网开放架构2010
大唐电信—物联网开放架构2010大唐电信—物联网开放架构2010
大唐电信—物联网开放架构2010Meng He
 
03.osb概览
03.osb概览03.osb概览
03.osb概览Meng He
 
01.ofm11g概览
01.ofm11g概览01.ofm11g概览
01.ofm11g概览Meng He
 
02.wls集群
02.wls集群02.wls集群
02.wls集群Meng He
 

Más de Meng He (6)

Soa best practices_1013x_drop3
Soa best practices_1013x_drop3Soa best practices_1013x_drop3
Soa best practices_1013x_drop3
 
F428435966 odtug web-logic for developers
F428435966 odtug   web-logic for developersF428435966 odtug   web-logic for developers
F428435966 odtug web-logic for developers
 
大唐电信—物联网开放架构2010
大唐电信—物联网开放架构2010大唐电信—物联网开放架构2010
大唐电信—物联网开放架构2010
 
03.osb概览
03.osb概览03.osb概览
03.osb概览
 
01.ofm11g概览
01.ofm11g概览01.ofm11g概览
01.ofm11g概览
 
02.wls集群
02.wls集群02.wls集群
02.wls集群
 

06.wls ts