关于WAS 6.0.2.43内存溢出问题?

背景环境:
服务器环境:windows 2003
数据库:db2 8.2
was环境:6.0.2.43
问题:每个月来这么两三次内存溢出
请教几个问题
1,从程序限制入手,我如何能监控或者获取耗资源大导致溢出的地方?
2,从数据库入手,我在数据库上监控耗资源高的动态SQL,优化后会改善内存溢出问题?
3,各位有什么高招
感谢各位的围观,ths!!!

参与20

4同行回答

jxnxsdengyujxnxsdengyu课题专家组系统工程师江西农信
1.到底是WAS内存溢出导致WAS进程挂了,还是整个操作系统内存溢出,蓝屏?如果是前者,直接分析javacore即可知道到底是那个JAVA方法耗了大量内存。如果是机器溢出,需要定时观察到底是那个进程耗用了内存,并且不断增长2.数据库上的动态SQL耗用资源高,主要还是消耗在CPU和IO上,跟内存没...显示全部

1.到底是WAS内存溢出导致WAS进程挂了,还是整个操作系统内存溢出,蓝屏?如果是前者,直接分析javacore即可知道到底是那个JAVA方法耗了大量内存。如果是机器溢出,需要定时观察到底是那个进程耗用了内存,并且不断增长
2.数据库上的动态SQL耗用资源高,主要还是消耗在CPU和IO上,跟内存没有关系,这条路不通,要查数据库内存需要通过db2mtrk来看是哪个部分消耗了内存。

收起
银行 · 2017-08-09
  • 追加个问题:我的是WAS内存溢出导致,发生转存储,java进程异常中断,生产corexxx.dmp和sna.xxx.trc文件,我想打开core文件要用到哪个工具,因为我想看到是调用程序中的哪个java类,方法导致的。谢谢!!!
    2017-08-10
  • 可以去IBM官网下载个IBM Thread and Monitor Dump Analyzer试试
    2017-08-24
qiaodeli111qiaodeli111系统运维工程师IBM
你这环境是数据库跟WAS跑在一台机器上?那么一步一步分析:首先确定是由于WAS应用服务器分配的堆空间不足导致的溢出,还是说堆外空间不够导致的溢出。假设主机8G,给Java堆分配了4G.如果是堆空间不足,那发生OOO的时候从操作系统来看肯定8G里面还是会有很多富裕的。此时应该查看堆...显示全部

你这环境是数据库跟WAS跑在一台机器上?那么一步一步分析:

首先确定是由于WAS应用服务器分配的堆空间不足导致的溢出,还是说堆外空间不够导致的溢出。

假设主机8G,给Java堆分配了4G.

  1. 如果是堆空间不足,那发生OOO的时候从操作系统来看肯定8G里面还是会有很多富裕的。此时应该查看堆dump(使用jstat生成,WAS是可以配置发生OOO的时候自动生成的),然后查看每个对象的深堆(用JDK自带的vmstat,或者下载MAT,推荐这个),非常直观的就能知道是哪个对象占用大量资源没有正常释放了。然后结合代码解决问题。或者适当增加堆空间。
  2. 如果是堆外空间不足,那就有两种可能,一种是过度使用直接内存,改代码或者加内存都能解决;一种是线程过多,线程栈大小 * 线程数 > 总内存-堆内存-其他进程所占用的内存。这时合理减小整线程栈大小(Xss),或者加内存,或者加机器平衡负载都可以解决。
  3. 还有一种可能就是总内存-除WAS以外的进程 < 分配的对内存,比如除WAS意外的进程已经占用掉7G内存了,显然WAS就拿不到自己的4G空间了。。。

实际上发生OOO的时候日志里都会有一条发生OOO的原因吧,你看看那个原因是什么大概也就能知道是怎么回事了。

收起
IT咨询服务 · 2017-09-05
浏览2233
liaobin429liaobin429系统工程师北京农商银行
兄弟,看你这些软件,都这么旧了,该升级了,现在运维,不要费力去搞老版本的出现的莫名其妙的问题,真的,显示全部

兄弟,看你这些软件,都这么旧了,该升级了,现在运维,不要费力去搞老版本的出现的莫名其妙的问题,真的,

收起
系统集成 · 2017-08-13
浏览2072
wodese7enwodese7en其它其他
[此回答已删除]
浏览1753
彬彬 邀答

提问者

liujiacai
其它广州大厦
擅长领域: 数据库云计算服务器

相关问题

相关文章

问题状态

  • 发布时间:2017-08-09
  • 关注会员:5 人
  • 问题浏览:3448
  • 最近回答:2017-09-05
  • X社区推广