我最近将一个MVC应用程序部署到IIS6 Web服务器。我一直有一个奇怪的行为是加载时间会随机爆发30秒+然后恢复正常。我们的测试表明,这种情况同时发生在多个连接上。一旦等待过了,网站就会再次响应。当这种情况发生时,这是完全随机的,但可能每15分钟左右发生一次。
我首先想到的是,由于某种原因,Web服务器正在重新启动应用程序,但我确定情况并非如此,因为进程回收很少设置,我在应用程序启动时放置了一些日志。
它也与数据库连接无关。仅通过在静态页面之间移动也可以实现这种减速。我用SQL分析器观察了数据库,当发生这些减速时,没有任何东西可以击中它。
最后,我在我的控制器动作上放置了进入和退出记录,减速总是发生在控制器之外。控制器操作的进入和退出时间总是相当快。
有没有人对可能导致这种情况的原因有任何想法?我试过在IIS7上本地运行它,我没有遇到问题。我只能认为这与托管服务提供商有关。
答案 0 :(得分:0)
这是在一个已命中的服务器上运行吗?如果不是它可能是你的托管提供者。
从你所说的内容来看,服务器每隔15分钟因某种原因最大化CPU。它可能是代码命中一个无限循环的东西,你有没有在事件日志中查看应用程序的任何崩溃/错误。
答案 1 :(得分:0)
在探查器(例如JetBrains)下运行Web应用程序,并在发生这些30秒锁定之一后转储结果。分析器输出应该使瓶颈定位相当明显,因为它将精确定位正在消耗时间/阻塞其他线程的API调用。
猜测可能是内存压力导致项目从缓存或垃圾收集中被转储,尽管30秒听起来有点过分。