我有一个网站每5或10个请求挂起。当它工作时,它工作得很快,但如果你离开浏览器坐几分钟,然后单击一个链接,它只是挂起而没有响应。用户必须在浏览器中刷新几次,然后再次快速运行。
我在IIS 7.0(Windows Server 2008)上运行.NET 3.5,ASP.NET MVC 1.0。 Web应用程序连接到在同一实例上本地运行的SQLServer 2005 DB。数据库有大约300兆的RAM,其余的是免费的,我认为是网页请求。
它托管在GoGrid的云服务器上,这个实例有1GB的RAM和1个Core。我意识到这并不多,但目前我是唯一一个使用该网站的人,我仍然会收到这些挂起。
我知道排除故障是一件困难的事情,但我希望有人可以指出我可能的IIS配置问题的正确方向,或者每1000个用户使用这些技术的“粗略”平均硬件要求,也许对于网络服务器来说,我应该拥有的最小内容是2个内核,这样如果它很忙,你仍然会收到回复。或者也许slashdot人是对的,我是使用Windows期间的白痴,哈哈。根据我的经验,它通常是我的算法/配置错误而不是底层技术的错误。
任何见解都表示赞赏。
答案 0 :(得分:1)
您可以使用哪种诊断方法?你能说出当用户第一次点击按钮时会发生什么吗?您的应用程序是否看到了该请求,然后花了很长时间来处理它,或者是否有延迟,然后您的应用程序开始运行并且一如既往地工作?或者第一次要求完全丢失?
我的猜测是,正在进行某种分页,我相信Windows倾向于习惯于将最近使用过的应用程序放在一边,然后再将它们分页。这是发生在您的应用程序中,或者数据库,或两者兼而有之?
作为一项实验 - 如果您的应用中有一个小小的“howAreYou”页面会发生什么。是否有最小的工作量,例如从数据库获取使用计数并显示它。每隔一分钟就有一个小监控客户端点击该页面。随时间测量性能。尖峰?一致性?活动的存在是否会保持您的应用程序的存在并防止分页?
另一个想法:你依赖于任何缓存吗?你在那个缓存上有任何老化吗?
答案 1 :(得分:1)
由于不活动,您的应用程序池可能正在关闭。每个池有一个空闲超时设置,以分钟为单位(在池的高级设置 - 流程模型下)。应用程序关闭后需要一段时间才能重新启动。
当然,它可能就像其他人建议的虚拟化一样,但这值得一试。
答案 2 :(得分:0)
网站是否获得了大量流量?如果是这样,我会寻找未经优化的查询或循环查询。
假设您的整体流量相对较低,您的配置听起来不错。
答案 3 :(得分:0)
许多数据库连接没有发布? 连接导致超时的某些服务/组件? 资源发布不好? 网络流量? 循环查询或代码逻辑?