我正在努力解决我这几天遇到的问题。每次我的一个站点被重建或 AppPool 被回收时,第一个页面加载将永远挂起(好吧,我只等了 30 分钟)。它只发生在大约 10 个站点中的一个特定站点上。它是一个 ASP.NET 站点。
以下是我观察到的事情:
- 在工作进程下的 IIS 管理器中,我可以看到该请求。动词 = GET,Sate = ExecuteRequestHandler,模块名称 = ManagedPipelineHandler。当然,经过的时间只会不断增加。
- 如果我关闭发出初始请求的浏览器,然后打开一个新的浏览器发出另一个请求,页面将立即加载。
- 在我的代码中,我的 Global.asax 文件的 Application_Start 不会在第一次请求时调用。在第二个请求时调用它。
- 工作进程导致我机器上的内存使用量激增
我在对 IIS 进行故障排除方面缺乏经验,但是数小时的搜索使我无处可去。
我们最近在网站上所做的唯一主要代码更改是我们已经开始使用 log4net 实现日志记录。我已经尝试从我的 web.config 文件和 Global.asax 中删除任何 log4net 代码 - 仍然没有运气。
有没有其他人经历过这种情况,如果有,你是如何解决的?
任何和所有的帮助将不胜感激。
添加: 如果我在站点的根目录中放置一个 .txt 文件并将其作为构建后的第一件事加载,它将立即加载。然而,工作进程仍然像以前一样工作,内存使用量仍然很高。
最终编辑:
我觉得自己像个白痴。我无法解释为什么,但由于某种原因,我在 Global.asax 中的断点突然被击中,我能够确定问题所在。这是通过实体框架对数据库的调用,写得不好——即过滤是在提取了相关列中的所有行之后完成的。更糟糕的是,过滤是在 foreach 循环中完成的。不管怎样,现在一切都恢复正常了,我很高兴。