在终端服务器下限制我们的应用程序实例数的技术

时间:2010-03-09 13:12:34

标签: python terminal-services citrix

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

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

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

2 个答案:

答案 0 :(得分:1)

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

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

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

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

答案 1 :(得分:1)

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

  1. 使用Windows信号量

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

  3. 使用一系列端口