Asp classic 经典的ASP网站偶尔会挂起来

Asp classic 经典的ASP网站偶尔会挂起来,asp-classic,iis-7.5,session-cookies,Asp Classic,Iis 7.5,Session Cookies,我们在IIS 7.5上有一个经典的ASP网站 用户遇到随机响应缓慢的问题。当这种情况发生时,用户在几分钟内不能做任何事情,这非常令人沮丧 例如,我可以打开主页,然后在类别中单击几次,然后网站就会停止响应 我并没有注意到网站何时停止响应的任何规则。有时,它一直运行良好,有时它只是停止 当它响应缓慢时,我可以等待几分钟,然后获取页面。我试图停止页面加载,并刷新页面,但这没有帮助。发生这种情况时,我无法刷新页面,也无法转到其他页面。网站上的每个页面都没有响应 但,若我打开其他浏览器,比如说我在Chro

我们在IIS 7.5上有一个经典的ASP网站

用户遇到随机响应缓慢的问题。当这种情况发生时,用户在几分钟内不能做任何事情,这非常令人沮丧

例如,我可以打开主页,然后在类别中单击几次,然后网站就会停止响应

我并没有注意到网站何时停止响应的任何规则。有时,它一直运行良好,有时它只是停止

当它响应缓慢时,我可以等待几分钟,然后获取页面。我试图停止页面加载,并刷新页面,但这没有帮助。发生这种情况时,我无法刷新页面,也无法转到其他页面。网站上的每个页面都没有响应

但,若我打开其他浏览器,比如说我在Chrome中,打开IE,那个么新浏览器中的站点又快了

我唯一的线索是,若我删除客户端的ASP会话cookie,那个么页面在同一浏览器中的加载速度会很快。所以,这显然与ASP会话cookie有关。IIS或ASP引擎是否可以出于某种原因阻止ASP会话

我注意到,如果我快速点击网站,会有更多的机会反应缓慢。看起来在快速点击几下之后,服务器可能会出于某种原因拒绝该会话

另外,我不确定它是否有用,是否与问题有关,我经常看到许多不同的ASP会话cookie。我想在浏览器中每个用户应该只有一个会话cookie,但我看到几个不同的会话cookie具有不同的值

有人见过类似的东西吗?你知道如何解决这些偶尔的缓慢反应吗

谢谢

编辑: 我发现当响应速度慢时,我甚至无法加载空的ASP页面(我创建的页面只有一行代码,只有response.Write“working”)。
当然,如果我在另一个浏览器中打开该页面,它很快就会工作。当问题发生时,网站仅在该会话中挂起。若我在其他浏览器中尝试相同的页面,或在同一浏览器中清除会话cookie,则页面加载速度很快

对于这些问题,我只编写了一个粗略的函数(包含在include中),并将其放入问题页面。该函数将时间戳、计时器(捕捉毫秒范围内的时间)和任何其他变量写入文本文件

然后,我只需在代码的每个可疑部分之前和之后调用该函数,并在几天后返回查看它发现了什么


记住使用timer()作为其中的一部分,因为正常的时间戳是usless,用于以毫秒级捕获时间

我想我找到了答案。ASP网站正在使用多个自定义COM组件

其中一些组件正在将日志文件写入光盘。这些日志是.txt文件

日志文件随时间增长,其中一个超过4GB。不知何故,写入大文件导致服务器在加载多个页面后响应缓慢。有趣的是,当页面挂在其他浏览器上时,新的浏览器窗口可以快速打开页面

所以,我从ASP代码中删除了写入日志文件的部分,网站现在可以正常运行了


谢谢大家

我也有这个问题。我没有任何数据库或任何自定义activex对象,我在每次操作后立即清理每个对象(如scripting.filesystemobject),但我在应用程序中启用了会话,以便设置会话代码页等等。我注意到服务器生成了很多aspsessionid cookies;也就是说,当页面挂起时,可能有50个aspsessionid cookies。如果启用了会话,而我对此无能为力,IIS将生成这些会话。每隔20-30分钟,页面就会突然只挂在我的会话中。启动另一个浏览器实例(例如,另一台机器或私人浏览模式)将再次正确响应。离开浏览器5分钟也会导致它开始正确重新发送。我知道,通过循环,我可以检查response.isclientconnected并执行response.end(如果它们的连接已断开)以终止服务器进程,但我的客户端仍在连接,因此这没有帮助。

通常的原因是数据库查询失控。在不知道你的应用程序是如何工作的情况下,这个问题不是很容易回答。我怀疑它是数据库,因为每个页面都可能出现响应缓慢的情况。没有规则。当问题发生时,网站上的任何页面都无法访问。但,若我手动清除ASP会话cookie,那个么该站点又快了。另外,如果我打开另一个浏览器,网站也会很快。这是个难题。您可能希望改为在serverfault.com上发布。我不认为您会在这里得到答案。您在会话cookie中存储了多少信息?请查看IIS日志,查看执行时间长和/或状态代码为500的请求。除了DB长响应时间外,外部ActiveX组件(例如OWC)中可能会出现挂起。另外,检查代码中的无限循环和application.lock/application.unlock语句。哇,这是个好主意。这一页挂着,但我不知道具体在哪里。因为它在随机页面上,我想它是一些包含文件。嗯,我试过了,但看起来它和任何页面都没有关系。然后我点击网站上的链接,过了一段时间它就挂了。当这种情况发生时,我甚至无法加载空的ASP页面(我创建了一个空页面,以查看当站点挂起时,没有代码的页面是否正常工作)。