我有一个 w3wp.exe 在我的 IIS 服务器上重新启动(请参阅下面的规范)。内存逐渐攀升至约 3G,然后它大约每 1-2 分钟随机重新启动一次。
内存使用情况:
奇怪的是,一旦这种内存下降(看起来像重新启动 - 顺便说一句......应用程序池没有被回收/重新启动)发生 GET 请求排队,但一旦服务预热/启动就会得到服务(导致延迟响应我们的客户——他们最初有时会报告延迟的响应时间)。
一旦 .exe 重新启动(私有字节转到 ~0),我已经按照此链接获取堆栈转储,但是一旦服务重新启动,诊断调试不会记录任何内容(没有 .dmp 文件)。
我在我的网络服务器 (IIS) 日志中看到大量警告,仅此而已:
为应用程序池“MyApplication”提供服务的进程与 Windows 进程激活服务发生了致命的通信错误。进程 ID 为“1732”。数据字段包含错误号。
问:我不确定这是否是内存限制,如果缓存不能很好地与我的线程/任务一起使用,如果缓存正在爆炸,是否有看门狗服务重新启动我的应用程序等等。有没有人遇到过类似 w3wp.exe 重启的问题?很难说,因为 diagdebug 重新启动后不会给我转储。
眼镜:
- MVC4 Web API 为 GET 请求提供服务(代码是 debug=true 的调试版本)
- 将 MemoryCache 与模型和业务对象一起使用,并将缓存逐出设置为 2 小时...使用
- 每个新请求的任务 (TPS)。
- 数据库:SQL Server 2008R2
- Web 服务器:Windows Server 2008R2 Enterprise SP1(64 位,64G RAM)
- IIS 7.5
- 一个应用程序池...此服务器上没有运行其他 LOB 应用程序