WAS7 EJB OOM问题
在WAS7.0.0.13版本上分布式发布ejb和web,web和ejb不在一个集群,且不在一个server哦情况下,web调用EJB的时候出现OOM错误,报错信息如下:
?
??heapdump分析如下:
?
?发现CORE文件里面很奇怪,Free Java Heap 有2,104,902,904,98%空闲,但是在内存段分析中,Object即heap占用2,147,483,648 100%占用,heapdump里面分析占用heap内存42,565,544,和core文件的第一种说法匹配,即98% free,排除应用占用内存的可能。
?
分析了下出错的代码行 com.ibm.rmi.iiop.CDRReader.readBytesForString,发现是由web端调用ejb的时候,从ejb容器传递ejb stud的时候出现问题,好,那就避开这个,我将应用发布到同一个server上,这样ejb应该优化为本地调用,验证成功。
?
那为了解决分布式调用的问题,我还要想一个办法,让系统在分布式情况下也不用传递ejb stud,这让我想到了早期中间件需要手动打stud然后引入web容器的事情,查了下infocenter,找到{WAS_HOME}\bin\ejbdeploy.sh命令。
?