リソース制限の確認および変更

制約事項: 本トピックは、Enterprise Server 機能が有効な場合にのみ該当します。

システム全体でのリソース制限のデフォルト値または最大値は、UNIX プラットフォームおよびその構成によって異なります。詳細は、使用しているオペレーティング システムのドキュメントを参照してください。

リソース制限は、個々のプロセスおよびそのプロセスが起動するプロセスに対して設定できます。たとえば、Enterprise Server Administration Console からエンタープライズ サーバーを起動する場合は、Directory Server のプロセス mfds32 (Administration Web インターフェイスを提供する) からリソース制限を継承します。Directory Server を起動する際に加えたリソース制限への変更は、Web インターフェイスを使用して起動されたエンタープライズ サーバーのプロセスにも反映されます。一方、コマンド ラインで casstart コマンドを入力してエンタープライズ サーバーを起動する場合は、casstart コマンドを実行する前に現在のシェルに対してリソース制限を設定でき、これにより、そのエンタープライズ サーバーのリソースを制御できます。

UNIX の ulimit ユーティリティを使用して現在のシェルに設定されているリソース制限を確認または変更できます。ulimit コマンドの正確な構文および出力は、UNIX バージョンによって異なります。詳細は、ご使用のドキュメントを参照してください。一般に、ulimit -a を使用すると、次のように現在設定されているリソース制限がすべて表示されます。

$ ulimit -a
time(seconds)        unlimited
file(blocks)         2097151
data(kbytes)         131072
stack(kbytes)        32768
memory(kbytes)       32768
coredump(blocks)     2097151
nofiles(descriptors) 2000

これは AIX 5.2 システムの場合の出力です。この出力から、このシェルから起動されたプロセスには CPU 時間の制限がないこと、通常ファイルおよびコア ダンプ ファイルのサイズが 2097151 ブロック (1 ブロックは 512 バイトで、合計 1 GB) に制限されていることがわかります。データ、スタック、およびメモリ サイズの制限はすべて、プロセスが使用できるメモリのサイズの制限です。エンタープライズ サーバーの場合には、スタックの設定は mfcs32 プロセスが会話処理のために作成できる最大スレッド数を制限します。データの設定は、mfcs32 プロセスが会話処理のために割り当てることができる仮想メモリのサイズを制限します。メモリの設定は、プロセスが使用できる物理メモリ (RAM) のサイズを制限し、通常、エンタープライズ サーバーにはそれほど重要ではありません。最後の制限はファイル記述子の数です。mfcs32 では、ログ ファイル用などのさまざまな目的で数個と、リスナーについて 1 つのファイル記述子が必要です。残りの記述子は、クライアントとの個別の会話用です。この例では、mfcs32 が同時にクライアントに接続できる数は 2000 より低い数値に制限されています。

ulimit コマンドで設定するリソース制限には、ハード制限およびソフト制限の 2 種類があります。デフォルトでは、ulimit コマンドで表示および設定するのはソフト制限です。ソフト制限は、実際にプロセスに影響する制限です。ハード制限はソフト制限の最大値です。ユーザーまたはプロセスは、ソフト制限をハード制限の値まで引き上げることができます。スーパーユーザー権限を持つプロセスのみがハード制限の値を引き上げることができます。

たとえば、Enterprise Server のリソース制限に達しつつある場合に、スタック制限の値を引き上げることで問題が解決するかどうかを確認するには、次の操作を行います。

  1. 現在設定されているスタックのソフト制限の値を表示します。
    $ ulimit -s
       32768
  2. 現在設定されているスタックのハード制限の値 (最大値) を表示します。
    $ ulimit -H -s
       4194304
  3. スタックのソフト制限の値を、現在値および最大値の間の値に設定します。
    $ ulimit -s 65536
  4. 新たに設定したスタックの制限でエンタープライズ サーバーを起動します。
    $ casstart

手順 4 では、コマンド ラインからエンタープライズ サーバーを起動しています。Administration Web インターフェイスからエンタープライズ サーバーを起動したい場合は、ソフト制限の値を引き上げた後にそのシェルのコマンド ラインから Directory Server を起動して、そこからエンタープライズ サーバーを起動する必要があります。