w3wp.exe正在重启,但所有GET请求最终都排队并提供服务?

时间:2013-02-21 18:05:00

标签: asp.net caching iis asp.net-mvc-4 iis-7.5

我有一个在我的IIS服务器上重启的w3wp.exe(请参阅下面的规范)。记忆逐渐上升到~3G然后每1-2分钟随机重启一次。

内存使用情况 enter image description here

奇怪的是,一旦这个内存丢失(看起来像重启 - 顺便说一句......应用程序池没有被回收/重新启动),GET请求就会排队,但是一旦服务变暖/启动就会被服务(导致对我们客户的回复延迟 - 他们最初报告延迟的响应时间)。

一旦.exe重新启动(私有字节转到~0),我已经按照此链接获取堆栈转储,但是一旦服务重新启动,就没有任何记录(没有.dmp文件)和diag调试。

我在网络服务器(IIS)日志中看到了大量的警告,但就是这样:

  

为应用程序池'MyApplication'提供服务的流程遭遇致命   Windows进程激活服务的通信错误。该   进程ID是'1732'。数据字段包含错误编号。

ASK:我不确定这是否是内存限制,如果缓存不能很好地与我的线程/任务一起运行,如果缓存正在爆炸,如果有监视程序服务重新启动我的应用程序等等。有没有人遇到类似w3wp.exe重启的东西?这很难分辨,因为diagdebug一旦重新启动就不会给我转储。

SPECS:

  • MVC4 Web API服务GET请求(代码是debug build with debug = true)
  • 将MemoryCache与模型和Business Objects配合使用,将缓存驱逐设置为2小时...使用
  • 每个新请求的任务(TPS)。
  • 数据库:SQL Server 2008R2
  • Web服务器:Windows Server 2008R2 Enterprise SP1(64位,64G RAM)
  • IIS 7.5
  • 一个应用程序池...此服务器上没有运行其他LOB应用程序

1 个答案:

答案 0 :(得分:1)

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

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