故障現象
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 文件:
<core.20150505 .095649 .7799012 .0001 .
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