OOM的随机性挂起问题

1、系统基本情况
    这是一个协同办公的应用,IBM Power小机两台(AIX6.1),分别运行DB2v9.5,WAS7.0。
2、故障描述
    前期运行基本正常,一个多月前系统开始随机性挂起,出现频率大概在与个月3次左右,发生时间均在上午9点左右的系统访问高峰期。其中两次重启WAS后恢复正常,一次重启wAS后故障仍在,重启数据库后正常。随后作了一个垂直集群,开了两个WAS成员,10来天了,没有出现整个系统挂掉的情况,但有部分功能(基本上都是涉及附件的)不时出现问题,后台日志中出现内存溢出、栈溢出、本机内存耗尽、无法创建线程等错误。而小机经调整配置后尚有20多G空闲内存,CPU利用率也在10%以内。我估计是压力问题,估计高峰期并发用户在800-1100之间,根据session数判断(不知还有什么更准确的方法)
3、求解问题
    a、这种情况的解决思路是什么?
    b、解决问题的具体步骤如何?
    c、再增加集群的成员有助问题的解决吗?
参与11

7同行回答

guansnowguansnow系统分析师科大讯飞
回复 3# liyuheng     DUMP可以用MDD4J,Core用TMDA显示全部
回复 3# liyuheng


    DUMP可以用MDD4J,Core用TMDA收起
系统集成 · 2013-07-18
浏览890
Luga LeeLuga Lee系统架构师None
B:解决步骤:   1、从你的描述有以下信息采集:      《1》、两次重启WAS后恢复正常      《2》、一次重启wAS后故障仍在,重启数据库后正常。      《3》、后台日志出现内存溢出、栈溢出以及本机内存耗...显示全部
B:解决步骤:

   1、从你的描述有以下信息采集:
      《1》、两次重启WAS后恢复正常
      《2》、一次重启wAS后故障仍在,重启数据库后正常。
      《3》、后台日志出现内存溢出、栈溢出以及本机内存耗尽现象。因此我们可以推断出以下猜测:
     (1)、应用内存问题 (2)数据库问题。

   2、对于OOM问题,首先明确是那种类型的内存溢出呢?Java内存一般主要发生在以下3部分:(1)操作系统本身(2)Java内存区(Heap堆区、permanent区)(3)本地内存区(JVM进程内存、引用的第三方本地代码)。因此,通过工具分析HeapDump、JavaCore文件,定位问题发生源,即“是哪个类或者方法”导致内存问题。
  
   3、至于如何优化,可通过适当调节JVM参数、配置参数、OS参数以及应用程序本身,这部分内容论坛前期活动中有介绍,请关注。

   4、对于db2,通过db2pd分析下数据库当前状态,主要关注缓冲池、排序堆及锁列表等,当然也可以通过其他方式进行。此处“而小机经调整配置后尚有20多G空闲内存,CPU利用率也在10%以内。”描述不是特别清晰,指App Server还是DB Server?

   在整个应用体系架构中,性能问题并非独立存在的,可能会相互依存,因此,在处理性能问题,首先从整体角度出发、层层解析。收起
互联网服务 · 2013-07-18
浏览874
guansnowguansnow系统分析师科大讯飞
肯定是隐式内存泄漏,建议关掉PMI,自己截DUMP和CORE文件分析分析显示全部
肯定是隐式内存泄漏,建议关掉PMI,自己截DUMP和CORE文件分析分析收起
系统集成 · 2013-07-17
浏览857
Luga LeeLuga Lee系统架构师None
针对c:      当然,能有效解决问题,采取什么思路都可以的,在环境允许的条件下。但从成本角度考虑,一般还是从应用程序角度进行优化是首要选择。显示全部
针对c:

      当然,能有效解决问题,采取什么思路都可以的,在环境允许的条件下。但从成本角度考虑,一般还是从应用程序角度进行优化是首要选择。收起
互联网服务 · 2013-07-18
浏览892
Luga LeeLuga Lee系统架构师None
回复 6# guansnow     这2款工具也挺经典的、很不错的显示全部
回复 6# guansnow


    这2款工具也挺经典的、很不错的收起
互联网服务 · 2013-07-18
浏览834
Luga LeeLuga Lee系统架构师None
A:分析思路:   1、看现象:主要是Error日志,例如SystemErr.log、db2diag.log。通过错误日志确定是那些应用或者事物导致的,当然,也可以采集系统资源使用情况(CPU、内存、IO及其他)。   2、抓日志:一般主要是HeapDump、Javacore这2个日志,当然,依据不同问题现象,可...显示全部
A:分析思路:

   1、看现象:主要是Error日志,例如SystemErr.log、db2diag.log。通过错误日志确定是那些应用或者事物导致的,当然,也可以采集系统资源使用情况(CPU、内存、IO及其他)。
   2、抓日志:一般主要是HeapDump、Javacore这2个日志,当然,依据不同问题现象,可能需要获取VerboseGC相关日志。
   3、分析:一般情况下,对于HeapDump可以通过haxxx.jar可以分析;JavaCore可通过jcaxxx.jar进行分析以及VerboseGC可通过gaxxx.jar或者GCLogViewer、MAT等工具查看分析。当然,如有必要进行验证,也可通过其他工具例如:Jprofiler工具进行性能分析,定位可疑的对象。对于DB2数据库,可通过db2top、db2pd命令去分析,到底是因为锁、排序或者参数设置不合理引起。
   4、优化:通过分析结果,进行相关参数调整、应用程序修改。
   5、验证:对修改后的应用进行测试、通过部署相关监控工具或命令,追踪系统运行状况。收起
互联网服务 · 2013-07-17
浏览875
liyuhengliyuheng系统工程师东莞都市丽人工业园
回复 2# guansnow 自己通过什么工具能对dump和core文件进行比较直观的分析呢显示全部
回复 2# guansnow

自己通过什么工具能对dump和core文件进行比较直观的分析呢收起
零售/批发 · 2013-07-17
浏览904

提问者

zy03
软件开发工程师重庆新思维信息技术有限公司
擅长领域: 服务器ds8000分布式架构

相关问题

相关资料

问题状态

  • 发布时间:2013-07-17
  • 关注会员:1 人
  • 问题浏览:5422
  • 最近回答:2013-07-18
  • X社区推广