我正在寻找简单的方法来监控和限制终端服务器(2003和2008)下的应用程序实例数。
此限制的目的是确保我们不会使服务器超载。这是内部管理要求 - 我不是在寻找许可解决方案。
有问题的应用程序是用Python 2.6(32位)编写的,但我很高兴收到开发工具不可知的答案。虽然我们没有使用Citrix,但我很高兴收到Citrix相关的想法,希望我能在终端服务器上使用类似的技术。
答案 0 :(得分:1)
您的应用程序的各种实例需要某种方式来相互通信。当一个实例启动时,它会询问“有多少已经在运行?”的问题。如果超过允许的n
,则选择不启动。
一种实现方法可能是使n
个文件锁定您允许同时运行的应用程序的n
个实例。然后,应用程序尝试锁定其中一个文件;如果不能,它会立即退出。完成后释放锁定,但如果崩溃,操作系统可能会释放锁定。
另一种方法是在启动时在中央位置(某个数据库)注册一些每进程唯一信息(PID?)。
还有三分之一可能是使用仅限主机的网络服务器,其中专用服务器程序或其中一个实例协调与其他实例的通信。如果主机退出,则其他一个实例可以自我升级为服务器。
答案 1 :(得分:1)
根据对Python Win32 API邮件列表的反馈,我也在考虑以下技术之一:
使用Windows信号量
使用互斥锁池(提供比信号量更好的可恢复性)
使用一系列端口