このトピックでは、メモリー消費を制御するためにDgraphで使用されるロジックについて説明します。
Dgraphの問合せパフォーマンスは、特定のデプロイメントの特性(問合せのワークロードおよび複雑性)、ロードされたレコードの特性、およびDgraphデータベースのサイズに依存します。
次に、Dgraphによるメモリーの利用方法について説明します。
- インストール後、Dgraphの起動時に、システムに相当な量の仮想メモリーを割り当てます。これは、データの収集や問合せの実行(複雑な場合など)に必要です。システム診断ツールを使用する場合、これは予測される動作で、識別可能です。
- 他のプロセスをホストしているマシンにDgraphがインストールされている場合、メモリーが集中している他のプロセスがオペレーティング・システムに存在し、メモリーを必要とします。この場合、Dgraphは、物理メモリーの大部分をすぐに解放します。このようなメモリー不足がない場合、Dgraphはホスティング・マシンで唯一のプロセスとなり、Dgraphは物理メモリーを無制限に保持する可能性があります。これは予測されている動作です。
このため、デプロイメントのサイズなどのデプロイメント要件に応じて、各Dgraphプロセスに専用のサーバー上にDgraphインスタンスをデプロイすることが非常に望ましい可能性があります(これらのマシンはBDDや他のアプリケーションの他のどのプロセスもホストしていないことを意味します)。
- DgraphデータベースがHDFSにある場合は、DgraphをHDFS DataNodeにデプロイする必要がありますが、これは、それらのサーバーで実行される唯一のプロセスである必要があります。特に、Sparkが実行されているサーバー(こちらも多くのメモリーが必要です)には、Dgraphをデプロイしないでください。DgraphとSparkを一緒に配置する必要がある場合、Linux cgroupを使用してDgraphが必要とするリソースへのアクセスを確保する必要があります。詳細は、「Dgraphへのcgroupのセットアップ」を参照してください。
- デフォルトでは、マシンで使用するためにDgraphで許可されているメモリーの制限は、マシンの使用可能なRAMの80%に設定されています。この操作により、Dgraphをホストしているマシン上でDgraphがメモリー不足になることはなくなります。つまり、この制限を設定すると、Dgraphはメモリー不足のパフォーマンスの問題の発生から保護されます。
- RAMのデフォルトのメモリー消費制限である80%に加えて、インストール後に、Dgraphの--memory-limitフラグを使用して、Dgraphが消費できるメモリー量のカスタム制限を設定できます。この制限を設定すると、Dgraphの再起動時に、現在のすべての問合せを処理するためにDgraphが必要とするメモリーの量は、このカスタム制限を超えることはできません。
注意: Dgraph
--memory-limitフラグは、Oracleサポートが使用するためのものです。設定の詳細は、
「Dgraphメモリー制限の変更」を参照してください。また、フラグの値
0は、Dgraphが使用できるメモリーの量に制限が設定されていないことを意味します。この場合、Dgraphは、処理に割り当てることができるマシン上のすべてのメモリーを制限なく使用し、メモリーの最大量を必要とする問合せを取り消そうとしないという点に注意する必要があります。つまり、これにより、メモリー不足によるページのスラッシングが発生する可能性があり、Dgraphを手動で再起動する必要があります。
- Dgraphがメモリー消費制限(デフォルト制限であるRAMの80%、または--memory-limitで設定されたカスタム・メモリー制限)に達すると、現在メモリーの最大量を消費している問合せから、問合せの自動的な取消しを開始します。Dgraphが問合せを取り消すと、問合せで使用されていたメモリーの量、および問合せが取り消された時間が、診断目的で記録されます。
- メモリー消費制限に加えて、Big Data Discoveryのインストール前に、インストール・ディレクトリにあるbdd.confファイルのDGRAPH_CACHEプロパティを使用して、Dgraphキャッシュ・サイズを指定できます。オーケストレーション・スクリプトは、インストール時にこの値を使用します。インストール後のどの時点でも、DGRAPH_CACHEのサイズを後で調整できます。詳細は、「Dgraphキャッシュ・サイズ設定のヒント」を参照してください。
- キャッシュ・サイズの調整を決定する前に、留意しておくと役立つ、Dgraphキャッシュに関する考慮事項がもう1つあります。
Dgraphが通常、構成されたDgraphキャッシュ・サイズの制限内で動作している間、キャッシュは、短期間に過剰にサブスクライブされるようになる可能性があります。このような期間に、Dgraphは、構成されたキャッシュの1.5倍までのキャッシュを使用することがあります。Dgraphは構成されたキャッシュ使用量が常に増加することを想定していない点に注意することが重要です。キャッシュ・サイズがしきい値の1.5倍に達すると、Dgraphは、キャッシュ・メモリー使用量が構成された制限まで減少するように、キャッシュを消費するエントリをより積極的に追い出そうとします。この動作は、システム管理者によって構成できません。