DataWeave メモリ管理

DataWeave 2.2 は Mule 4.2 と互換性があり、Mule 4.2 にバンドルされています。 このバージョンの Mule は、拡張サポートが終了する 2023 年 5 月 2 日にその すべてのサポート​が終了しました。

このバージョンの Mule を使用する CloudHub には新しいアプリケーションをデプロイできなくなります。許可されるのはアプリケーションへのインプレース更新のみになります。

標準サポートが適用されている最新バージョンの Mule 4 にアップグレード​することをお勧めします。これにより、最新の修正とセキュリティ機能強化を備えたアプリケーションが実行されます。

Mule Runtime Engine で DataWeave を介して大きなファイルを処理する場合、どれだけのメモリをいつ使用するかを詳細に調整するためにセットアップできるいくつかの項目があります。

RAM の使用とディスクの使用

DataWeave はディスクデータストレージを使用して、メモリ不足にならないようにします。作成されたファイルはデフォルトの一時ディレクトリに配置されます。このファイルを代わりにカスタムディレクトリに保存する場合は、​java.io.tmpdir​ プロパティを使用してディレクトリを指定できます。

2 つの種別の DataWeave ファイルが生成されます。どちらも名前は ​dw-buffer-​ で始まります。

  • dw-buffer-output-${count}.tmp
    変換の結果がしきい値の ​1572864 バイト​よりも大きい場合に、変換の出力を保存するために使用されます。 このしきい値を変更するには、システムプロパティ ​com.mulesoft.dw.max_memory_allocation​ を追加し、新しいしきい値として使用するバイト数をそのプロパティに割り当てます。システムプロパティはいくつかの方法で定義できます。詳細は、​システムプロパティ​を参照してください。 Mule Runtime Engine は、値が参照されなくなった、JVM GC によって値が収集された、または Mule イベントの実行が終了した場合に、ファイルを削除します。

  • dw-buffer-index-${count}.tmp
    読み取られている値のインデックス情報を保存するために使用されます。このファイルは、DataWeave がデータにすばやくアクセスするのに役立ちます。Mule Runtime Engine は、変換の実行が終了した場合にファイルを削除します。また、foreach ループなどのストリーミングのユースケースでは、ストリームが終了した場合 (foreach の実行が終了した場合) にファイルを削除します。

  • com.mulesoft.dw.directbuffer.disable
    Mule 4.2.2 で導入されたこのオプションは、DataWeave がオフヒープメモリ (デフォルト) またはヒープメモリのどちらを使用するかを制御します。DataWeave は、内部バッファにはオフヒープメモリを使用します。ただし、メモリの搭載量が少ないマシンでは、この設定によって問題が起きる場合があります。