Sun Java System Messaging Server 6 2005Q4 管理ガイド

ディスパッチャー

ディスパッチャーは、複数のマルチスレッドサーバープロセスが SMTP 接続サービスを分担できるようにする、マルチスレッドディスパッチエージェントです。ディスパッチャーを使用すると、複数のマルチスレッド SMTP サーバープロセスを同時に実行し、同じポートへの接続を処理できるようになります。さらに、それぞれのサーバーで 1 つ以上のアクティブな接続が可能になります。

ディスパッチャーは、その設定に指定されている TCP ポートの中心的なレシーバとして機能します。定義された各サービスに対して、ディスパッチャーは 1 つまたは複数の SMTP サーバープロセスを作成し、確立後の接続を処理します。

通常、ディスパッチャーは、定義された TCP ポートの接続を受信すると、そのポートにおけるサービスのワーカープロセスのプールを確認し、その接続用に最適なワーカープロセスを選択します。適当なワーカープロセスがない場合、ディスパッチャーはこの接続と後続の接続を処理するための新しいワーカープロセスを作成します。また、ディスパッチャーは、今後の着信接続を予測して、新しいワーカープロセスを作成することもできます。ディスパッチャーのさまざまなサービスを制御するための設定オプションがいくつかあります。これらの設定オプションは特に、ワーカープロセス数、および各ワーカープロセスが処理できる接続の数を制御するのに使用されます。

詳細は、「ディスパッチャー設定ファイル」を参照してください。

サーバープロセスの作成と有効期限

ディスパッチャーの自動ハウスキーピング機能により、新規サーバープロセスの作成や、アイドル状態の古いサーバープロセスの有効期限を制御することができます。ディスパッチャーの動作を制御する基本的なオプションは、MIN_PROCSMAX_PROCS です。MIN_PROCS は、着信接続用に一定のサーバープロセス数を待機させることにより、一定レベルのサービスを確実に提供します。一方、MAX_PROCS は、指定したサービスに対して同時にアクティブにできるサーバープロセス数の上限を設定します。

すでに処理可能な最大数の接続を処理しているため、またはプロセスの終了がスケジュールされているために、動作中のサーバープロセスが接続を受け入れられないことがあります。ディスパッチャーは、今後の接続に役立つよう追加のプロセスを作成することができます。

MIN_CONNS および MAX_CONNS オプションを使うと、サーバープロセス間で接続を分散できます。MIN_CONNS はサーバープロセスが「十分にビジー」であることを示す接続数を指定し、MAX_CONNS はサーバープロセスが「最高にビジー」な状態となる場合の接続数を指定するものです。

通常、現在のサーバープロセス数が MIN_PROCS 未満である場合、または既存のサーバープロセスがすべて「十分にビジー」(各サーバープロセスに対し、現在アクティブな接続の数が MIN_CONNS 以上) である場合、ディスパッチャーは新しいサーバープロセスを作成します。

たとえば UNIX システムの kill コマンドによってサーバープロセスが突然終了した場合、ディスパッチャーは新しい接続ごとに新規サーバープロセスを作成します。

ディスパッチャーの設定の詳細については、「ディスパッチャー設定ファイル」を参照してください。

ディスパッチャーを起動および停止するには

ディスパッチャーを起動するには、次のコマンドを実行します。

start-msg dispatcher

このコマンドには、ディスパッチャーが管理するように設定された MTA のコンポーネントを起動するために以前使用していた、ほかのすべての start-msg コマンドが組み込まれています。そのため、組み込まれたコマンドはすべて無効になっています。特に、imsimta start smtp は使用しないでください。無効になったコマンドを実行しようとすると、MTA によって警告メッセージが表示されます。

ディスパッチャーを終了するには、次のコマンドを実行します。

stop-msg dispatcher

ディスパッチャーの終了時にサーバープロセスがどのように処理されるかは、その基礎となっている TCP/IP パッケージによって決まります。ディスパッチャーに適用される MTA の設定やオプションを変更した場合は、ディスパッチャーを必ず再起動して新しい設定やオプションを有効にします。

ディスパッチャーを再起動するには、次のコマンドを実行します。

imsimta restart dispatcher

ディスパッチャーを再起動すると、実行中のディスパッチャーが終了し、新しいディスパッチャーが起動します。