3

我正在寻找简单的方法来监控和限制终端服务器(2003 和 2008)下我们的应用程序实例的数量。

此限制的目的是确保我们不会超载我们的服务器。这是内部管理要求 - 我不是在寻找许可解决方案。

有问题的应用程序是用 Python 2.6(32 位)编写的,但我很高兴收到与开发工具无关的答案。虽然我们没有使用 Citrix,但我很高兴收到与 Citrix 相关的想法,希望我可以在终端服务器上使用类似的技术。

4

2 回答 2

1

您的应用程序的各种实例需要某种方式相互通信。当一个实例启动时,它会问一个问题,“有多少已经在运行?”。如果超过了 allowed n,则选择不启动。

一种实现方法可能是使n文件锁定n您允许同时运行的应用程序实例。然后,应用程序尝试锁定其中一个文件;如果不能,它会立即退出。完成后释放锁,但如果你崩溃,操作系统可能会为你释放锁。

另一种方法是在启动时在中央位置(某个数据库)中注册一些每个进程的唯一信息(PID?)。

第三种可能是使用仅主机网络服务器,其中专用服务器程序或其中一个实例协调与其他实例的通信。如果主机退出,其他实例之一可以自我提升为服务器。

于 2010-03-09T15:16:03.180 回答
1

根据对 Python Win32 API 邮件列表的反馈,我也在考虑以下技术之一:

  1. 使用 Windows 信号量

  2. 使用互斥池(提供比信号量更好的可恢复性)

  3. 使用一系列端口

于 2010-03-12T07:46:47.933 回答