【问题标题】:Classic Asp Application pool hanging and generate freezes经典的 Asp 应用程序池挂起并生成冻结
【发布时间】:2014-09-09 04:56:31
【问题描述】:
Dim objXMLHTTP,xml,gString 
Set xml = Server.CreateObject("Microsoft.XMLHTTP")
 xml.Open "GET", "http://www.ourdomain.com/checkout/receiptdisplay.asp?orderid=" & ORDERNUMBER , False
xml.Send
ObjSendMail.HTMLBody    =   xml.responseText  
Set xml = Nothing

我经常谈论由于某种未知原因,IIS 应用程序池挂起并且大多数经典 ASP 站点无法加载(永远加载)然后我必须回收应用程序池以使所有工作正常的情况。

我在网站上使用 defaultAppPool。

【问题讨论】:

  • 这是一个相当广泛的问题。首先,如果我是你,我会查看来自 IIS 的日志以尝试找出耗时最长的内容。寻找任何错误,也。之后,尝试评估您正在使用的对象和文件,看看它们在您使用时是否可用。
  • 我检查了所有东西,这段代码挂起或冻结了应用程序池
  • 您是否尝试过使用浏览器直接调用该地址?即http://www.ourdomain.com/checkout/receiptdisplay.asp?orderid=123?
  • 投反对票的人能解释一下原因吗?
  • 是的,它直接工作正常。

标签: asp-classic


【解决方案1】:

如果某些部分比其他部分占用更多内存,请将您的应用程序分隔到不同的应用程序池中。不要使用可能导致您的问题的Microsoft.XMLHTTP,而是使用更新的版本:http://msdn.microsoft.com/en-us/library/ms766431%28v=vs.85%29.aspx

另一方面,如果您对同一个应用程序池中的同一个网站执行 HTTPRequests,您将遇到线程饥饿,这将导致这样的问题。为了帮助解决这个问题,您需要将它们分开到各自的应用程序池中,如下所示:

这个HTTPRequest 脚本应该在一个应用程序池中

并且您的 receiptdisplay.asp 脚本应该位于不同的应用程序池中。

Microsoft 更详细地说明了您应该在此处执行此操作的原因: Do Not Send ServerXMLHTTP or WinHTTP Requests to the Same Server

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-12-09
    • 2015-09-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-31
    • 1970-01-01
    相关资源
    最近更新 更多