0

我有一个 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 应用程序
4

1 回答 1

1

您的第一步是在您的测试环境中重现问题。设置某种负载生成应用程序(您可以很容易地自己编写)并遇到同样的问题。然后在 web.config 中关闭调试,看看是否能解决问题。然后将其更改为发布版本并再次测试。

我从未使用过 memorycache - 尝试减少缓存逐出时间或将其关闭,看看是否能解决问题。祝你好运 :)

于 2013-02-22T02:39:41.777 回答