Oracle Enterprise Linux 6 (Red Hat Enterprise Linux Serverリリース6)のEndeca Serverには、cgroupsを使用してマシンでホストされるDgraphプロセスのメモリー使用量の合計を制限する新しいオプションが用意されています。コントロール・グループ(cgroupsとも呼ばれる)は、Linux 6オペレーティング・システムのカーネル・リソース制御機能です。システム・リソースを定義して1つ以上の特定のプロセスに割り当てる方法を提供する一方で、これらのリソースの利用を高レベルで制御し、プロセスが過剰なリソースを使用しないようにします。このように、cgroupsを使用すると、ホストされるアプリケーションがホスティング・マシン上の使用可能なリソースをすべて占有することにより、ホスティング・マシンがメモリー不足に陥って機能しなくなり、強制停止する状況を回避できます。
cgroupsの詳細は、
Oracle Linux Documentation: http://linux.oracle.com/documentation/OL6/Red_Hat_Enterprise_Linux-6-Resource_Management_Guide-en-US.pdfから入手できるRed Hat Enterprise Linux 6リソース管理ガイドのcgroupsの使用に関する項を参照してください。
Endeca ServerがLinux 6で開発され、Endeca Serverでcgroupsを有効にしている場合、Endeca Serverのコンテキストではホスティング・マシンでcgroupsを使用できます。インストール後にcgroupsを有効にすると、Endeca Serverはこのメカニズムに依存して、ホストするすべてのデータ・ドメインにリソースを割り当てます。次の各文は、(cgroupsを使用または使用せずに)Endeca Serverがリソースの割当に使用する全体的な戦略を説明しています。
Endeca Serverでのメモリーおよびスレッド使用の制限は、次の方法で実施されます。
- WindowsとLinuxの両方において、Endeca Serverでデータ・ドメイン作成が許可されるのは、それがシステム・リソースによって許可されている場合のみです(このアプローチはWindowsとLinuxの両方に適用され、cgroupsへの依存は伴いません)。この戦略を使用することで、Endeca Serverは使用可能なメモリーと処理スレッドの量に関する内部計算に基づいて各Endeca Serverノードで開始できるDgraphプロセスの数を制限します。
注意: Endeca Serverデータ・ドメインの割当プロセスの背後にある論理の詳細は、Oracle Endeca Serverクラスタ・ガイドを参照してください。データ・ドメイン割当戦略では、Endeca Serverクラスタの管理者が、Endeca Serverがホストできるデータ・ドメインのタイプについて構成上の決定を下していることを前提としています。たとえば、データ・ドメインの自動アイドリングを許可するデータ・ドメイン・プロファイルを作成していることや、使用する予定の各データ・ドメイン・プロファイルに割り当てる計算スレッドの数とメモリーの量を計算していることなどです。
- また、Oracle Linux 6またはRed Had Enterprise Linux 6にデプロイする場合、Endeca ServerはcgroupsのOSレベル構成を使用して各データ・ドメインのDgraphプロセスによってシステムのリソースの使用を制限します(これは、EndecaServer.propertiesを調整してからsetup_cgroups.shを実行することで、Endeca Serverでcgroupsが有効になっていることを前提とします)。スクリプトを実行すると、Endeca ServerはこのマシンでホストされるすべてのDgraphプロセスに対して1つのcgroupを作成して使用します。Endeca Serverでcgroupsが使用されると、すべてのリソースがホスティング・データ・ドメインで使用される場合でも、cgroupsにより、Endeca Serverをホストするマシンが継続して動作してメッセージを記録できるようになり、システム管理者がメンテナンス、ログの確認およびトラブルシューティングのためにそのマシンにアクセスできるようになります。cgroupが有効になっている場合、Endeca Serverは、マシンの仮想メモリー合計ではなく仮想メモリー合計のcgroup制限を使用してデータ・ドメインを割り当てます。
注意: cgroupsが使用されていない、または有効になっていない(Linux 6で実行していないか、cgroupsを有効にしていない)場合、戦略はcgroupsに依存しません。
- さらに、Endeca Serverは未使用のデータ・ドメインを停止し、データ・ドメイン・プロファイルの自動アイドリングの構成に基づいてアクティブなデータ・ドメイン用に解放しようと試みます。Endeca Serverは、計算されたEndeca Serverノードの使用可能なリソース量で許容される場合のみ、これまでアイドル状態だったデータ・ドメインを有効にします。
重要: 割当保証を増やし、多数のデータ・ドメインがプロビジョニングされている場合でもEndeca Serverノードが引き続き動作できるように、Endeca Serverに多数のセルフサービス・アプリケーションをデプロイする場合、Endeca ServerをOracle Linux 6またはRHEL 6 (どちらの場合もEndeca Serverでcgroupsを利用可能)にデプロイすることをお薦めします。