我一直在解决一个问题,已经持续了几天。每次重建我的网站或回收应用程序池时,第一次加载页面将永远挂起(好吧,我只等了30分钟)。这仅发生在约10个站点中的一个特定站点上。这是一个ASP.NET网站。
以下是我观察到的情况:
- 在IIS管理器中,在工作进程下可以看到请求。动词= GET,状态= ExecuteRequestHandler,模块名称= ManagedPipelineHandler。当然,经过的时间不断增加。
- 如果我关闭最初发出请求的浏览器,然后打开一个新的浏览器发出另一个请求,页面将立即加载。
- 在我的代码中,我的Global.asax文件的Application_Start没有在第一次请求时被调用。它会在第二个请求时被调用。
- 工作进程会导致我的机器上的内存使用量飙升
我对排查IIS并不熟悉,但是数小时的搜索都没有结果。
我们最近在该网站上唯一进行的重大代码更改是开始使用log4net进行日志记录。虽然我尝试删除任何log4net代码,包括我的web.config文件和Global.asax,但仍然没有运气。
其他人有没有遇到过这种情况,如果有,您是如何解决的?
非常感谢任何帮助。
补充: 如果我将一个.txt文件放在站点的根目录中并将其作为构建后的第一件事加载,它将立即加载。 然而,工作进程仍然与以前完全相同,内存使用量仍然飙升。
最后编辑:
我感觉自己像个白痴。我无法解释为什么,但由于某种原因,我的Global.asax中的断点突然被命中,我能够确定问题。这是通过Entity Framework调用数据库时编写不良的(即,在获取有关该列的所有行之后进行筛选)。更糟糕的是,筛选是在foreach循环内完成的。无论如何,现在一切都恢复正常了,我很高兴。