IIS 6应用程序池未响应多个请求/未运行多线程

时间:2011-04-19 15:30:53

标签: iis asp-classic iis-6

我有一个经典的ASP应用程序已经稳定多年,现在我们遇到了各种各样的问题。在机器之间移动应用程序并擦拭原件以便我们可以全新安装Windows时,我们遇到了以下“症状”。应用程序池似乎不允许同时发出多个请求。以下是我们所看到的:

  • 该应用程序对大多数人来说都能正常运行,但是当其中一个应用程序池中的某个用户访问一个长时间运行的脚本(通常是一个拥有大量数据库访问权限的脚本)时,池中的所有其他用户都必须等待脚本来完成。脚本完成后,其他所有人的请求都会运行。这最初使我们怀疑数据库连接字符串或其他东西。

  • UNTIL ...我们还注意到,大型文件上传到我们的系统会导致应用程序池停止响应。有趣的是,我们使用SAFileup COM +对象进行上传,在弹出窗口中显示进度。当您上传文件时,将显示进度显示,但从不刷新以显示上载进度。但是,如果您将其等待,该文件最终将上传,其他待处理请求将正常处理。

  • 我们的应用池采用默认配置,使用IWAM帐户启动。我检查以确保IWAM帐户具有所有适当的权限。确实如此。

  • 我们尝试了各种数据库连接字符串,没有解决问题(尽管我认为它不是数据库连接字符串)。以防有人认为是,这是我们的连接字符串:“Provider = SQLNCLI; Trusted_Connection = yes; Server =(local); Database = demo;”。这简直太简单了。此字符串以前不是问题。

  • 我讨论了网络花园的事情,确实让系统响应多个请求,但是花园中的每个工作线程都有自己的会话状态,这会导致我们的用户在他们的请求得到启动时被启动随机分配给新的工作线程。无论如何,在花园中只有一个工人流程从来都不是问题。

  • 我使用SQL Profiler和sp_who2来查看在长时间运行的脚本中SQL Server上是否存在任何死锁或阻塞。没有。

  • 这些问题最初是在我们安装了Microsoft的一些补丁之后开始的。我们擦干机器并安装了Win2k3服务器,然后安装了SP2,之后再没有修补。问题仍然存在,因此它似乎不是一个补丁。

我现在几乎不知所措......有没有人有类似问题的经验?如果是这样,它们是如何修复的?

2 个答案:

答案 0 :(得分:2)

检查您是否在服务器上启用了ASP调试。这将强制ASP脚本引擎在单个线程上运行。

答案 1 :(得分:0)

听起来像是对IIS或Windows Server的并发传入请求数量的限制。

查看http://blogs.msdn.com/b/david.wang/archive/2006/04/12/howto-maximize-the-number-of-concurrent-connections-to-iis6.aspxhttp://forums.iis.net/p/1152112/1880908.aspx#1880908,了解如何调整设置。