回顾一下,曾经由于无知(初次接触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 994433note 1253826note 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删掉)。
好吧,折腾过了,稍微学到点东西。。
经常听到“无知者无畏”,真心不假。
自勉:在没有了解情况,有所把握之前,坚决不能乱操作。想当然/自以为,终会酿成大错。此次庆幸,万幸。