# Dgraphのメモリー消費

デフォルトでは、Dgraphはホスト・マシンで使用可能なRAMの最大80%を使用できます。これにより、メモリー不足によるパフォーマンスの問題になることが回避されます。また、Dgraphではデータの取込みおよび問合せの実行に仮想メモリーが必要となり、かなりの量が使用されます。これは予期された動作であり、システム診断ツールを使用して監視できます。

Dgraphがメモリー消費の制限に達すると、最もメモリーを使用している問合せから順に問合せが取り消されます。Dgraphが問合せを取り消すたびに、問合せで使用されていたメモリーの量、および問合せが取り消された時間が、診断目的で記録されます。

Dgraphは、使用している物理メモリーを無期限に保持します(他のメモリーを集中的に使用するプロセスと同じノードで実行されている場合を除きます。そのようなプロセスと同じノードで実行されている場合は、大部分がかなり迅速に解放されます)。このため、要件および使用可能なリソースによっては、Dgraphを専用ノードでホストできます。

場合によっては、他のプロセスに使用されているノードでDgraphをホストする必要があります。たとえば、データベースがHDFSにある場合、HDFS DataNodeでDgraphをホストする必要があります。これらのノードで実行されるプロセスの数を制限することをお薦めします。特に、Sparkと同じノードでDgraphをホストしないでください。また、Linux cgroup (コントロール・グループ)を使用してDgraphが必要とするリソースへのアクセスを確保する必要があります。詳細は、「Dgraphへのcgroupのセットアップ」を参照してください。

`--memory limit`フラグを使用して、Dgraphが消費できるメモリーの量におけるカスタム制限を設定することもできます。詳細は、Dgraphメモリー制限の変更を参照してください。