您的位置:首页 > 编程语言 > Java开发

PI JAVA SERVER,启动失败Heap OutOfMemory

2013-12-28 22:34 501 查看
回顾一下,曾经由于无知(初次接触PI)的遭遇战。。

ECC通过PI向第三方系统发送消息,将PI的某条传送连接(传送主数据),发送时间间隔设置为了0,然后无心无肺happy地就去吃饭了。
45分钟之后,酒足饭饱归来,发现PI JAVA Server死掉了。

傻眼。。

0s发送时间间隔(如果想要仅发送一次:值设置足够大,不要设置为0),意味着持续不断的发送;导致吃饭期间,PI需要传送大量的数据,队列里有超多待处理的消息,越加载越多,导致PI JAVA SERVER memory leak。

JAVA SERER Restart也不行,log提示heap out of memory(JAVA SERVER启动时,加载了未处理的消息至队列)。。

使用SAP Memory Analyzer(sap提供的一款基于Eclipse的内存分析工具)分析,确认了上述情形: 系统启动时,传输连接加载未处理消息,占用了大量的heap memory(70%),所以启动失败。

最终查得notes:

note 994433
note 1253826
note 1395622
其中可以获取一附件:changeServiceStartMode.pdf

解决办法:
起JAVA SERVER之前在configtool中将service:com.sap.aii.adapter.jdbc.svc停掉,这样在java server启动的时候不会自动加载未处理的XML messages,也就不会导致heap memory leak。

但是启动之后,毕竟service没起,所以SXI_MONITOR中看到的信息全部会卡在队列。

在NWA中将此service起起来,删除不需要的not yet processed的记录,再在configtool中恢复原样(将之前设置的默认不启动的service删掉)。

好吧,折腾过了,稍微学到点东西。。

经常听到“无知者无畏”,真心不假。
自勉:在没有了解情况,有所把握之前,坚决不能乱操作。想当然/自以为,终会酿成大错。此次庆幸,万幸。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  PI basis heap
相关文章推荐