COM+ アプリケーション リサイクルの概念
アプリケーションのリサイクルでは、既知の問題を迅速に修正し、予期しない問題から保護することで、COM+ アプリケーションの全体的な安定性を大幅に向上させることができます。 たとえば、メモリ リーク、スケーリング不可能なリソースの使用、プロセス エラーなどの問題により、アプリケーションのパフォーマンスが時間の経過と共に低下する可能性があります。 COM+ では、これらの問題の解決策としてアプリケーションのリサイクルを提供しています。 アプリケーションのリサイクルを使用すると、プロセスを自動的にシャットダウンして再起動できるため、失敗したプロセスを再初期化して、使用するメモリを再割り当てできます。
アプリケーションのリサイクルは、アプリケーションに関連付けられている Dllhost プロセスの複製を作成することによって機能します。 この重複 Dllhost プロセスは、今後のすべてのオブジェクト要求を処理し、古い Dllhost は残りのオブジェクト要求の処理を終了させます。 古い Dllhost プロセスは、プロセス内のオブジェクトへのすべての外部参照の解放を検出したとき、または有効期限のタイムアウト値に達したときにシャットダウンされます。 この動作により、アプリケーションのリサイクルにより、クライアント アプリケーションでサービスの中断が発生しないようにします。
Note
Windows サービスとして実行するように構成されている COM+ アプリケーションをリサイクルすることはできません。 また、ライブラリ アプリケーションには、ホスト プロセスのリサイクルとプールのプロパティがあります。
アプリケーションのリサイクルは、コンポーネント サービス管理ツールを使用して管理的に構成することも、COM+ 管理 SDK を使用してプログラムで構成することもできます。 Application コレクション内の COMAdminCatalogObject オブジェクトの次のプロパティによって決定される、いくつかの基準に基づいてプロセスをリサイクルできます。
- RecycleLifetimeLimit。 プロセスがリサイクルされるまでに実行できる最大時間 (分)。 有効な範囲は 0 から 30, 240 分 (21 日) です。 既定の分数は 0 です。これは、プロセスが有効期間の制限に達するまでリサイクルされないことを示します。
- RecycleMemoryLimit。 プロセスをリサイクルする前のプロセス メモリ使用量の最大量 (KB 単位)。 プロセスのメモリ使用量が指定された数を 1 分以上超えた場合、プロセスはリサイクルされます。 有効な範囲は 0 から 1,048,576 KB です。 メモリ使用量の既定の量は 0 KB です。これはプロセスがメモリ制限に達してもリサイクルしないことを示します。
- RecycleCallLimit。 プロセスをリサイクルする前に、アプリケーション オブジェクトが受け入れることができる呼び出しの最大数。 呼び出し回数の有効な範囲は 0 から 1,048,576 です。 既定の呼び出し回数は 0 です。これは、プロセスが呼び出し回数の制限に達してもリサイクルしないことを示します。
- RecycleActivationLimit。 プロセスをリサイクルする前に受け入れるアプリケーション オブジェクトのアクティブ化の最大数。 有効なアクティブ化回数の値の範囲は、0 ~ 1,048,576 です。 既定のアクティブ化回数は 0 です。これは、プロセスがアクティブ化回数の制限に達してもリサイクルしないことを示します。
さらに、COMAdminCatalogObject オブジェクトの RecycleExpirationTimeout プロパティは、リサイクルされたプロセスを強制的にシャットダウンするために使用されます。 これは、プロセスを強制的にシャットダウンする前に、リサイクルされたプロセス内のオブジェクトへのすべての外部参照が解放されるのを待つ分数を示します。 有効な範囲は 1 から 1440 分 (24 時間) で、既定の有効期限のタイムアウトは 15 分です。 この値は、他の条件に基づいてプロセスがリサイクルされることが既に決定されている場合にのみ使用されます。
アプリケーションをリサイクルするための条件は、複数選択することができます。 COM+ は、条件の最初のセットが満たされた後、アプリケーションをリサイクルします。 有効期限のタイムアウト値を設定して、古い Dllhost プロセスが強制的にシャットダウンされる前に残りのサービス要求の完了に費やすことができる時間を決定できます。
ApplicationInstances コレクションは HasRecycled プロパティを提供し、アプリケーションがリサイクルされたかどうかを判断する方法を提供します。
関連トピック