1、weblogic日常维护总结与故障诊断中间件故障诊断总结一、 步骤:1、准确描述现象:客户说的和自己查看到的:平台、版本、操作、信息等。特别是,故障前是否有做过什么操作:网络调整、设备调整、主机参数调整、配置文件修改反正将这一切都列入排查的对象。2、使用工具收集数据,收集配置文件、日志、dump文件等等。3、 使用分析数据,根据问题或收集的数据,使用适当的工具分析数据,当然包括了在网上和在官方支持站点搜索类似的问题的解决办法。 4、 尝试解决问题,根据找到的问题点,尝试解决。如修改错的,复原正确的;运行有问题的,适当调整运行的环境和运行的参数等等。5、 给出最佳解决方案,一般就是继续观察了。6
2、、总结经验并加以重用,知识积累。二、 通过前台收集基本的信息:1、重点是故障前做过的操作2、比对运行平台是否在官方的兼容性列表中,一般就是关注各个版本,特别是一些比较怪异的问题3、检查环境和参数,如能打开控制台,就在控制台中初步观察,一般进入控制台的格式是http:/ip地址:端口/console 如:http:/192.168.0.89:7001/console/。常用的留意点如下:A、 域运行状态(域-监视-健康状况);一般为running状态,如果不是running,那这些界面就没有了。B、 服务器运行状态(域-环境-服务器),正常的为running。C、 各个server性能(JVM)
3、状态(域-环境-服务器,点击具体的serve后进入,监视-健康状况);留意JVM 堆中当前可用的内存量。不同的JVM,所显示的内容可能不一样,以下为sun的:D、 各个server线程状态(域-环境-服务器,点击具体的serve后进入,监视-线程);一般来说,空闲线程要多;健康状况为ok如下图health状态为:Warning,这个是有线程阻塞的。阻塞线程的内容为:# Servers右侧菜单:AdminServer(admin)-logging只找到examplesServer.log、access.log配置如图: 4、其他如果日志太少,里面没有记载相关信息,可参照日志文件的回滚设置。在“滚
4、动类型:”属性页中可以设置这些日志文件的回滚方式,当日志文件到一定得大小或过了设定的时间后,把日志信息保存到一个新的文件中。WebLogic提供按文件大小和时间两种方式。如下面的设置种,选择Rotation Type 为BY SIZE。也就是当日志文件的大小达到500K时,重新写一个新的文件。假如Rotation Type 为BY TIME,那么是每隔一段时间重新写一个新的文件。并且对这些文件编号设置日志文件名如:_%yyyy%_%MM%_%dd%_%hh%_%mm%5、日志的处理:查看日志中输出的具体内容,再进行处理。如:BEA-下面是一个线程阻塞的一个信息# STUCK ExecuteTh
5、read: 1 for queue: weblogic.kernel.Default (self-tuning) has been busy for 2,503 seconds working on the request weblogic.work.SelfTuningWorkManagerImpl$WorkAdapterImpldeab5f, which is more than the configured time (StuckThreadMaxTime) of 2,400 seconds. Stack trace:四、 产生hread Dump来分析问题hread Dump是非常有用
6、的诊断Java应用问题的工具,每一个Java虚拟机都有及时生成显示所有线程在某一点状态的thread-dump的能力。虽然各个Java虚拟机thread dump打印输出格式上略微有一些不同,但是Thread dumps出来的信息包含线程;线程的运行状态、标识和调用的堆栈;调用的堆栈包含完整的类名,所执行的方法,如果可能的话还有源代码的行数。Thread Dump特点: 能在各种操作系统下使用 能在各种Java应用服务器下使用 可以在生产环境下使用而不影响系统的性能 可以将问题直接定位到应用程序的代码行上 Thread Dump能诊断的问题包括: 查找内存泄露,常见的是程序里load大量的数据
7、到缓存 发现死锁线程 收集 Thread Dump 进行 Thread Dump 的方法取决于安装挂起服务器实例的操作系统。有关在不同的操作系统上进行 Thread Dump 的信息,Solaris OS- (Control-Backslash)kill -QUIT LinuxLinux 操作系统查看线程的方式不同于其它操作系统。该操作系统将每个线程视为一个进程。若要在 Linux 上进行 Thread Dump,查找通过其启动所有其它进程的进程 ID。使用命令: 若要获得根 PID,使用: ps -efHl | grep java *. * 使用一个作为字符串的 grep 参数(可在与服务器
8、启动命令匹配的进程堆栈中找到该字符串)。如果 ps 命令还没有管道传送到另一个例程,则报告的第一个 PID 将是根进程。IBM AIX在AIX上用IBM的JVM,内存溢出时默认地会产生javacore文件(关于cpu的)和heapdump文件(关于内存的)。执行kill -3 命令可以生成javacore文件和heapdump文件(pid为was java进程的id号,可以用ps -ef|grep java 查到),可以多执行几次。有些Java应用服务器是在控制台上运行,如Weblogic,为了方便获取threaddump信息,在 weblogic启动的时候,最好将其标准输出重定向到一个文件,用nohup sh startWebLogic.sh sta
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1