windows - 防止繁重的进程沉入交换文件

标签 windows performance virtual-memory pagefile

我们的服务往往会在晚上在客户的服务器上睡着,然后很难醒来。似乎发生的是进程堆,有时是几百 MB,被移动到交换文件。这发生在晚上,此时我们的服务未被使用,而其他服务计划运行(数据库备份、AV 扫描等)。发生这种情况时,在几个小时不活动后,对服务的第一次调用最多需要几分钟(后续调用需要几秒钟)。

我很确定这是虚拟内存管理的问题,我真的很讨厌强制操作系统将我们的服务保存在物理内存中的想法。我知道这样做会损害服务器上的其他进程,并降低整体服务器吞吐量。话虽如此,我们的客户只是希望我们的应用程序能够响应。他们不关心每晚的工作是否需要更长的时间。

我依稀记得有一种方法可以强制 Windows 将页面保留在物理内存中,但我真的很讨厌这个想法。我更倾向于一些将启动更高级别功能的内部或外部看门狗(已经有一些内部调度程序做的很少,并且没有区别)。如果有提供这种服务的第 3 方工具就好了。

我很想听听针对此类问题的任何评论、建议和通用解决方案。该服务使用VC2005编写,运行在Windows服务器上。

最佳答案

正如您所提到的,强制应用保留在内存中并不是在机器上共享资源的最佳方式。您可能会发现一个行之有效的快速解决方案是简单地安排一个事件,在您的客户开始使用服务之前,每天早上在特定时间唤醒您的服务。您可以使用简单的脚本或 EXE 调用在 Windows 任务计划程序中安排它。

关于windows - 防止繁重的进程沉入交换文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/833497/

相关文章:

linux - 虚拟地址空间与虚拟内存

windows - 创建一个 Windows 进程以静默检查丢失的 DLL

javascript - MongoDB 确定一条记录是否会通过 findOne

python - 零填充数据,直到其长度等于 2 的幂

从 C 中的虚拟地址计算物理地址

windows - 当物理内存中的可用空间非常低时,Windows 是否仍能分配内存?

c++ - Qt 写入 xml:QIODevice::write (QFile, "D:/logs.xml"): device not open

C 控制台 API 窗口

c# - Windows 窗体->DataGridView->DataGridViewCheckBoxColumn 取消选中所有留下一项选中

运行大约一天或更长时间后,Java ConcurrentHashMap putIfAbsent 变慢