3

Terminal Server (2003 および 2008) でアプリケーションのインスタンス数を監視および制限する簡単な方法を探しています。

この制限の目的は、サーバーが過負荷にならないようにすることです。これは社内の管理上の要件です。ライセンス ソリューションを探しているわけではありません。

問題のアプリケーションは Python 2.6 (32 ビット) で書かれていますが、開発ツールにとらわれない回答を喜んで受け取ります。私たちは Citrix を使用していませんが、Terminal Server で同様の手法を使用できることを期待して、Citrix 関連のアイデアを喜んで受け取ります。

4

2 に答える 2

1

アプリケーションのさまざまなインスタンスには、相互に通信するための何らかの方法が必要です。インスタンスが起動すると、「すでに実行されているのはいくつですか?」という質問が表示されます。許可されている数を超える場合はn、起動しないことを選択します。

実装アプローチの1つは、同時に実行を許可するアプリケーションnのインスタンスをロックするファイルを作成することです。n次に、アプリケーションはこれらのファイルの1つをロックしようとします。できない場合は、すぐに終了します。完了したらロックを解除しますが、クラッシュした場合はおそらくOSがロックを解除します。

もう1つのアプローチは、開始時に中央の場所(データベース)にプロセスごとの固有の情報(PID?)を登録することです。

さらに3つ目は、専用サーバープログラムまたはインスタンスの1つが他のインスタンスとの通信を調整するホストオンリーネットワークサーバーを使用することです。ホストが終了すると、他のインスタンスの1つがサーバーになるように自己昇格できます。

于 2010-03-09T15:16:03.180 に答える
1

Python Win32 API メーリング リストのフィードバックに基づいて、次の手法のいずれかを検討しています。

  1. Windows セマフォの使用

  2. Mutexes のプールを使用する (セマフォよりも優れた回復性を提供します)

  3. ポートの範囲を使用する

于 2010-03-12T07:46:47.933 に答える