故障现象
WAS 服务器连续发生本地内存溢出,产生coredump 文件。抛出以下错误:
1TISIGINFO Dump Event "systhrow" ( 0 0 0 4 0 0 0 0 ) D e t a i l " j a v a / l a n g / OutOfMemor yErr or" "nativ e memor y exhausted" received
分析过程
WAS 版本为:8.0.0.6,OS 版本为:AIX6.1 分析故障点的 coredump 文件:
dmp>(dbx)coremapMapping:Shared Memory (size=0x3b0) from(address): 0x30000000-0x300003b0Mapping: Shared Memory(size=0x800000) from(address):0x40000000-0x40800000Mapping: Shared Memory (size=0x800000) from (address): 0x50000000-0x50800000
发现理论上,每Shard Memory段应该为 256M。但实际上,每段只用到了 8M,这个是造成本地内存溢出的根本原因。
解决方案
WAS7 之后默认为 Xcompressedrefs 模式, 会引起 bug:IV46157
◆调整 JVM 参数为 -Xnocompressedrefs 模式
升级 WAS JDK 到 6.0.1 SR7 以上版本, 即为WAS 8.0.0.8