Windows下对WebSphere运行时内存溢出.CPU占用率高和自动停止的问题的监控
1. 出现内存溢出的时候.
在WebSphere运行的时候,如果出现了内存溢出,那么原因是多样的.可能是因为程序中有不良的代码,引致申请了的内存不能在使用后被释放. 可能因为程序结构不善,引致websphere容器花费大量开销用于优化造成.
这里有一点要特别注意,内存溢出的时候,通常的表现是Websphere的服务没有了响应,所以当服务没有响应的时候,我们可以假设其为内存溢出,然后按步骤做相应的信息收集.
无论哪种原因. 内存溢出的问题可以分成两类.
NATIVE 这一类内存溢出,是整个Websphere进程在操作系统中的内存溢出,Websphere自身已经不能控制
HEAP 这一类内存溢出是在容器管理下的程序运行出现了内存溢出.这一类的溢出能够在websphere的javacore中找到信息(下面我们会再次提到.)
先说一下,出现NATIVE类内存溢出的时候要如何处理.
要对Websphere进行设置.开放详细垃圾收集选项.
步骤如下.(Webshpere版本 6.0.2.7)
在浏览器中输入http://服务器ip:9060/ibm/console
进入Websphere 管理控制台-> 登录->服务器->应用程序服务器->在服务器列表中选择需要调试的服务器->java和进程管理->进程定义->java虚拟机->将详细垃圾回收选项选上.
使用userdump工具生成系统的内存境像,然后通过对境像的分析定位出现内存溢出的进程(userdump工具的下载路径: http://download.microsoft.com/do ... 5/EN-US/Oem3sr2.zip
)
首先运行netstat -an > netstat_before.out 将收集数据时的网络状态记录下来.
打开Websphere的SystemOut.log文件,将文件最近的一次服务器启动记录找到.在这个记录中会找到现在正在运行并发生内存溢出的
java进程的进程号.(如果最近一次启动服务器是失败的,那么在服务器对应的log目录中能找到一个server_name.pid文件记录中找到对应
的进程号.)
然后在windows的命令行模式下,运行
userdump PID
这个PID就是先前的步骤中找到的websphere进程号
这样会生成一个叫java.dmp的文件. 将其改名成java1.dmp.
两分钟后再运行多一次userdump.生成的文件改名为java2.dmp.
两分钟后再运行多一次userdump.生成的文件改名为java3.dmp.
这样就能生成用于分析的系统内存映像文件.
(如果上面的步骤出现了问题,例如生成java.dmp的过程不能完成.还可以使用dr. watson强制生成userdump文件.方法如下:
在命令行中运行:
drwtsn32 -p pid
生成的userdump文件会放在
operating_system_root\Documents and Settings\
All Users\Application Data\Microsoft\Dr Watson
但这种做法的会同时停止java.exe进程.因此只有其它的生成userdump方法失效的情况下才合适使用.)
使用wsadmin生成javacore,从javacore看出内存问题. (具体步骤请参阅2出现CPU占用率高的时候)
2. 出现CPU占用率高的时候
如果在WebShpere运行的过程中出现了高CPU占用率的引起的原因是多样的.但这里要分清楚瞬时高CPU占用率和占用率居高不下两种情况.
前者是正常的,因为有很多不同的程序在系统中运行,因为进程间的优先级,和CPU的能力所致,很多时候会出现一小段时间内CPU占用率的大幅提高.我们这
里要描述的问题,是指CPU占用率高上去之后下不来的情况.
先要在Windows系统中设置CPU占用率的监控.步骤如下.
在Windows的管理工具中选择 性能 打开性能监控器
点击工具栏上的”添加”增加监控内容,将右边方框中所有的java线程都进行选择.左边则选择Processor Time , ID Process ,ID Thead,如图
同样的操作,在计数器日志中要设置.
选择性能监控器中的计数器日志,点击右键->新建日志设置->输入名称->确定->添加计数器->然后仍是将所有的java线程选中,也选上Processor Time , ID Process ,ID Thead
如是图
这样做的目的,是让性能监控中内容,能在固定的log文件中记录下来.
当cpu出现高占用率的时候,要在windows命令行方式中手动生成websphere的javacore,步骤如下.
netstat -an > netstat_before.out
这个命令用于记录生成javacore时的网络状况.
在没有开启websphere soap安全方式情况下,使用
wsadmin.bat
打开websphere管理台.
如果在SOAP方式下,就要加入参数,命令行格式如下:
wsadmin.bat [-host host_name] [-port port_number] [-user userid[-password password]
在启动了wsadmin的状态后,运行以下命令设置好环境
wsadmin>set jvm [$AdminControl completeObjectName type=JVM,process=server1,*]
上面的server1就是要生成javacore的服务器的名称
环境设置好后,在wsadmin状态下运行
wsadmin>$AdminControl invoke $jvm dumpThreads
这样会生成一个javacore.
然后2分钟后再次运行
然后2分钟后再次运行
这样,就能在%Websphere%/AppServer/profiles/服务器名/ 这个目录下找到手动生成的三个javacore
生成了javacore后,就通过性能监控器中,找到CPU占用率高的线程,然后我们可以看到下图
ID Thread中就是占用率高的线程号. 这个号是十进制的,将其转换成16进制的数字.例如图中的数字的十六进制形式是0xD98
这样我们能在刚才生成的javacore中找到这样的句子
"SoapConnectorThreadPool : 0" (TID:0x10A25A98, sys_thread_t:0x24A31B30, state:R, native ID:0xD98) prio=5
这个十六进制的进程号就是对应javacore中native id = 0xD98的内容,这样我们就能大致知道这个引起cpu占用率高的线程在做什么,然后进行排错调试.
3. 出现自动停止的问题的时候.
当出现了更严重的情况,websphere的线程自动停止了.那以首先要需要两个方面的数据.
程序中止时的自动NATIVE 的内存镜像.
这个工作需要借助Dr.Watson,
点击开始菜单->运行….->运行
drwtsn32
打开dr.Watson程序的窗口
对Dr.Watson的设置如图中所视,特别注意的内容是设置故障转储目录.当程序中止,我们在所设置的目录中找到需要的userdump文件.
设置好后
点击开始菜单->运行….->运行
drwtsn32 –i
这样,dr.Watson被设置为系统默认的调试器,会在程序中止时生成内存映像
至于Heap类型的内存映象,因为在Webshpere在中止时,会自动生成javacore文件,因为在程序中止后,直接到
%Websphere%/AppServer/profiles/服务器名/ 这个目录下找到自动生成的最新javacore就可以了
以上三个问题中所收集的数据,可以进行自己分析,对于javacore文件,分析工具是mddfj.IBM的网站上有相关文章介绍,在这里不再赘述.
也可以将这些文档发给IBM的客户服务中心,让他们的技术人员帮助分析.
分享到:
相关推荐
通常,它们会被配置为在特定条件下运行,例如当CPU使用率过高或内存达到一定阈值时,以帮助实时监控和诊断。 `ha457.jar` 和 `jca4614.jar` 是IBM WebSphere相关的库文件,可能包含与高可用性(HA)和Java连接器(JCA)...
### Websphere内存溢出问题解析与解决方案 #### 一、引言 Websphere作为一款广泛应用于企业级环境的应用服务器软件,其稳定性和性能至关重要。然而,在实际使用过程中,经常会遇到内存溢出(Out Of Memory, OOM)的...
1. **内存溢出概述**:内存溢出(Out Of Memory,OOM)是Java应用中常见的问题,当应用程序请求的内存超过了JVM分配的内存空间时,就会出现这种情况。对于WebSphere来说,这可能表现为服务器崩溃、应用程序响应缓慢...
在Java应用程序中,内存溢出(Out of Memory)是一个常见的问题,尤其是在处理大量数据或者长时间运行的服务时。ha456.jar工具通过深入分析Websphere的内存使用情况,帮助开发者定位并解决这个问题。 内存溢出发生...
jar包,官方版本,自测可用
WebSphere® MQ (也称MQSeries)以一致的、可靠的和易于管理的方式来连接应用程序,并为跨部门、企业范围的集成提供了可靠的基础。通过为重要的消息和事务提供可靠的、一次且仅一次的传递,Websphere MQ 可以处理...
Prentice.Hall.PTR.IBM.WebSphere.Deployment.and.Advanced.Configuration.Aug.2004.eBook-DDU.chm
WebSphere是IBM开发的一款企业级应用服务器,是Java EE(现在称为Jakarta EE)平台的实现,用于构建、部署和管理分布式...在实际操作过程中,可能会遇到各种问题,但随着对WebSphere的理解加深,这些问题都将迎刃而解。
【描述】:本文将深入探讨当Websphere Application Server (WAS)出现异常高的CPU占用率时,如何识别问题源头并采取相应的故障排除措施。这涉及到对操作系统层面的数据收集、线程分析以及使用调试工具如dbx进行详细...
webSphere-jps-plugin.jar
WebSphere® MQ (也称MQSeries)以一致的、可靠的和易于管理的方式来连接应用程序,并为跨部门、企业范围的集成提供了可靠的基础。通过为重要的消息和事务提供可靠的、一次且仅一次的传递,Websphere MQ 可以处理...
websphere_plugin-cfg.xml 文件内容解析 概览 websphere_plugin-cfg.xml 文件是 IBM WebSphere 服务器插件配置文件,用于定义插件的配置信息。该文件包含多个元素和属性,用于控制插件的行为和性能。了解该文件的...
标题中的“WebSphere CPU高分析工具”指的是针对IBM WebSphere Application Server(简称WAS)的一种性能监控和诊断工具,主要用于解决服务器CPU使用率过高的问题。WebSphere是IBM提供的一个企业级Java应用服务器,...
【WebSphere Application Server 7 在 Windows 下的安装】 WebSphere Application Server 7 是 IBM 提供的一款企业级的应用服务器,用于部署和管理Java EE应用程序。在Windows操作系统上安装WebSphere Application ...
还在为找不到jar文件烦心吗,不用了到我空间来有你想要的,持续更新。。。 websphere_uow_api.jar
- **性能指标监控**:CPU使用率、内存使用情况、线程状态等,以评估系统整体运行状况。 - **应用响应时间**:监控应用程序响应时间和事务处理效率,及时发现性能瓶颈。 - **日志分析**:定期检查系统日志和应用日志...
在Websphere Application Server中,当服务器遇到严重问题时,例如OutOfMemoryError,系统会自动生成一个heap dump文件,这个文件包含了服务器在崩溃时刻的内存快照。heap dump文件通常位于服务器配置文件(profile...
WebSphere MQ,原名MQSeries,是IBM推出的一款企业级的消息中间件产品,它在IT领域扮演着重要的角色,尤其在分布式系统、企业应用程序集成(EAI)以及业务流程自动化中发挥着关键作用。WebSphere MQ V6.0是这个系列...