我需要打开Maximum virtual memory (in megabytes)
IIS6 中的设置,并且已启用默认值 500 MB。
从那时起,应用程序池回收就出现了一些不稳定的问题。其实,这根本不是不稳定,而是每 60 秒。监控进程显示虚拟内存远低于 500 MB。只需访问网站启动进程(这会将虚拟内存设置为 30 MB 左右)然后等待 60 秒,即可看到当前进程已回收并启动新进程。
我可以小幅度增加这个数字,这个进程的存活时间似乎会变长一点。大约 750 MB 时,症状完全消失(完全取消检查也是如此)。
Maximum used memory
也经过检查并设置为默认的 192 MB。
我找不到任何文献记录这是否是一个错误。也许我忽略了一些显而易见的机制,或者我只是太愚蠢了。无论如何,我不能仅仅依靠“增加数字,你就不会得到错误”。我必须知道为什么。
答案1
答案是,我很笨。=)
任务管理器是一个穷人的内存监视器,今天我显然已经很好地搞清楚了这一点。使用性能监视器和进程资源管理器,我能够看到,确实,我的应用程序池在第一次访问页面时获得了约 550 MB 的虚拟字节。
我仍然觉得在应用程序池重新启动之前有 60 秒的宽限期很奇怪,但就这样吧。希望这个答案能帮助其他犯了和我一样错误的人。