在终端服务器上限制应用实例数量的技术

3 投票
2 回答
773 浏览
提问于 2025-04-15 20:12

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

这样做的目的是为了确保我们的服务器不会过载。这是一个内部管理的要求——我并不是在寻找与许可相关的解决方案。

这个应用程序是用Python 2.6(32位)写的,但我也欢迎任何与开发工具无关的建议。虽然我们没有使用Citrix,但我也乐意接受与Citrix相关的想法,希望能找到类似的技术来应用于终端服务器。

2 个回答

1

根据在Python Win32 API邮件列表上的反馈,我也在考虑以下几种方法:

  1. 使用Windows信号量

  2. 使用一组互斥锁(比信号量更容易恢复)

  3. 使用一系列端口

1

你的应用程序的不同实例需要一种方式来相互沟通。当一个实例启动时,它会问自己:“现在有多少个实例在运行?”如果运行的实例数量超过了允许的n个,它就选择不再启动。

一种实现方法是为你允许同时运行的n个实例创建n个文件来进行锁定。然后,应用程序会尝试获取其中一个文件的锁;如果获取失败,它会立即退出。当你完成工作后释放锁,但如果程序崩溃,操作系统应该会为你释放这个锁。

另一种方法是在你启动时,在一个中心位置(比如某个数据库)注册一些每个进程唯一的信息(比如进程ID)。

还有第三种方法是使用一个仅限主机的网络服务器,这样一个专门的服务器程序或者某个实例就可以协调其他实例之间的通信。如果主机退出,其他实例中的一个可以自我提升为服务器。

撰写回答