我们有一个传统的ERP应用程序,我们需要继续运行6个月。 ERP应用程序本身是用微软停产的产品FoxPro编写的。 FoxPro环境是单线程的devise,不能扩展为multithreading。 通过扩展,用FoxPro语言编写的任何程序也将是固有的单线程; ERP应用程序通过一次处理单个窗口来“虚拟”线程,使用任何重点窗口。 虽然我们可以修改软件(它带有源代码), 但是现在还没有,也不会有一种安全的multithreading处理FoxPro程序的方法, 这是在Stackoverflow中处理类似问题的build议方法 。 这不是一个可以通过编程来解决的问题。
该应用程序正在使用Citrix进行Server 2012r2安装,用于terminal服务; 而ERP应用程序的供应商build议运行Server 2008 / 2008r2,因此无法运行2008
该应用程序不发布,只有桌面。
在这种背景下,问题很简单:应用程序随机“崩溃”,从用户会话中消失。 没有致命的错误对话框,没有崩溃消息,没有什么。 它只是消失。 我设法跟踪到这个应用程序长时间没有响应,这对于FoxPro实际上是正常的; 当您在该语言中运行大型查询时,解释程序可能会停止响应数十秒。 显然2012R2认为,FoxPro已经崩溃,并自动closures程序。 这不是所需的行为,我们希望应用程序完成其长时间运行的查询并恢复正常操作。
这个假设是由(消毒的)事件日志条目支持的,例如:
The program XXXX.exe version 0.0.0.0 stopped interacting with Windows and was closed. To see if more information about the problem is available, check the problem history in the Action Center control panel. Process ID: 3810 Start Time: 01d1c0d181b3e14e Termination Time: 4294967295 Application Path: \\{server}\{ERP share}\{ERP install directory}\XXXX.exe Report Id: 1a2c27bb-2cd5-11e6-80f2-141877520cd8 Faulting package full name: Faulting package-relative application ID:
我们如何让Server 2012r2在短时间内不会自动closures遗留应用程序,因为它在忙时显示为“冻结”?
我发现了下面的registry项,但是他们似乎都不适用于这种情况(除非当然其中一个实际上是这样,但是MS再次没有完全logging下来,不像之前没有发生过):
仅供参考,所有人都了解所涉及的延迟,我必须在FoxPro中运行的查询时间最长的查询大约需要8分钟。 所以无论答案如何,最多8分钟的时间内都不会有回应。