背景环境:
服务器环境:windows 2003
数据库:db2 8.2
was环境:6.0.2.43
问题:每个月来这么两三次内存溢出
请教几个问题
1,从程序限制入手,我如何能监控或者获取耗资源大导致溢出的地方?
2,从数据库入手,我在数据库上监控耗资源高的动态SQL,优化后会改善内存溢出问题?
3,各位有什么高招
感谢各位的围观,ths!!!
1.到底是WAS内存溢出导致WAS进程挂了,还是整个操作系统内存溢出,蓝屏?如果是前者,直接分析javacore即可知道到底是那个JAVA方法耗了大量内存。如果是机器溢出,需要定时观察到底是那个进程耗用了内存,并且不断增长
2.数据库上的动态SQL耗用资源高,主要还是消耗在CPU和IO上,跟内存没有关系,这条路不通,要查数据库内存需要通过db2mtrk来看是哪个部分消耗了内存。
你这环境是数据库跟WAS跑在一台机器上?那么一步一步分析:
首先确定是由于WAS应用服务器分配的堆空间不足导致的溢出,还是说堆外空间不够导致的溢出。
假设主机8G,给Java堆分配了4G.
实际上发生OOO的时候日志里都会有一条发生OOO的原因吧,你看看那个原因是什么大概也就能知道是怎么回事了。
收起