0

WebSphere Message Broker DataFlowEngine プロセスがエラーで異常終了するFailed to allocate memory

これは、着信 XML メッセージが約 12 Mb の場合に発生します。

また、同様の受信 XML メッセージでも、サイズが 10 Mb であっても、この問題は発生しないことがわかりました。

このメッセージの処理時に生成された .abend ログ ファイルの例を 3 つ添付しました。彼らは

  1. http://dpaste.com/1356207/
  2. http://dpaste.com/1356208/
  3. http://dpaste.com/1356209/

これまでのところ、jvmMaxHeapSize を 1 GB に設定しようとしましたが、役に立ちませんでした...この値を設定した後に /var/adm/log に生成されたログは、http: //dpaste.com/1356210/ にあります。

DataFlowEngine プロセスのサイズは、異常終了する前にかなり増加します。NMON ユーティリティを介して、サイズが 1.2 GB に達することを確認できました。

MQSI_FREE_MASTER_PARSERS=1また、Google で見つけたリンクに基づいて変数を設定しようとしましたが、どちらも役に立ちませんでした。

この問題の根源にたどり着くために他に何ができるでしょうか?

4

1 に答える 1

1

DFE プロセスは、ESQL 計算ノードでツリー コピーのターゲットの構文要素を作成するために、より多くのメモリを割り当てようとしています。

最も可能性の高い説明は、巨大なツリーをコピーしていて、DFE がメッセージを処理するために割り当てることができるよりも多くのメモリを必要としているということです。

XML 入力ファイルのサイズは、ブローカーが格納する必要がある各要素に格納されるビットストリームに加えて、ドキュメントを表す構文ツリーの 1 つのコピーを格納するために必要なサイズよりも何倍も小さい場合があることに注意してください。親要素と子要素、型データ、構造データへのポインター。

さらに、この種のデータは、ツリーのコピーごとに保存する必要があります。つまり、小さな XML 入力ドキュメントであっても、適切に処理しないと、処理に大量のメモリが必要になる可能性があります。

あなたの異常終了から判断すると、次のようなセクションの最後でフローが失敗していると思います。

MQInput ノード -> 計算ノード -> Try/CatchNode -> 計算ノード -> 計算ノード -> 計算ノード

不要なツリーのコピーがないか、右から順にすべての計算ノードを確認します。ESQL で繰り返し構造を処理するときに必要なストレージの量を削減するために参照変数を使用する方法に関するヒントを提供する、次の Infocenter トピックを確認することも価値があります。

http://publib.boulder.ibm.com/infocenter/wmbhelp/v8r0m0/topic/com.ibm.etools.mft.doc/ac67176_.htm http://publib.boulder.ibm.com/infocenter/wmbhelp/v8r0m0 /topic/com.ibm.etools.mft.doc/bc23802_.htm

于 2013-08-29T12:16:56.000 に答える