我们的服务往往在晚上在我们客户的服务器上睡着,然后很难醒来。似乎发生的情况是,有时数百 MB 的进程堆被移动到交换文件中。这发生在晚上,当我们的服务未被使用,而其他服务被安排运行(数据库备份、反病毒扫描等)时。发生这种情况时,在几个小时不活动后,对服务的第一次调用最多需要几分钟(后续调用需要几秒钟)。
我很确定这是虚拟内存管理的问题,我真的很讨厌强迫操作系统将我们的服务保留在物理内存中的想法。我知道这样做会损害服务器上的其他进程,并降低整体服务器吞吐量。话虽如此,我们的客户只是希望我们的应用程序能够响应。他们不在乎夜间工作是否需要更长的时间。
我隐约记得有一种方法可以强制 Windows 将页面保留在物理内存上,但我真的很讨厌这个想法。我更倾向于一些内部或外部的看门狗,它们将启动更高级别的功能(已经有一些内部调度程序做的很少,并且没有区别)。如果有提供这种服务的第 3 方工具会同样好。
我很想听听针对此类问题的任何意见、建议和常见解决方案。该服务是用VC2005编写的,运行在Windows服务器上。