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

标签 iis asp-classic iis-6

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

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

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

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

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

  • 我对网络花园的事情很感兴趣,它确实让系统响应多个请求,但是花园中的每个工作线程都有自己的 session 状态,这会导致我们的用户在他们的请求收到时被引导随机分配给一个新的工作线程。无论如何,花园中只有一个工作进程以前从来都不是问题。

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

  • 问题最初是在我们安装了 Microsoft 的一些补丁后出现的。我们擦干净了一台机器,安装了 Win2k3 服务器,然后是 SP2,之后就不再打补丁了。问题仍然存在,所以它似乎不是补丁。

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

最佳答案

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

关于IIS 6 应用程序池不响应多个请求/不运行多线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5718882/

相关文章:

swift - multipart/form-data upload 任务不会对 iOS 中的大文件调用身份验证质询

docker - 在Docker容器上运行iis

debugging - 是否可以从同一网络上的另一台计算机访问 Azure 模拟器?

asp.net - 将 MVC 用于 Webforms 项目的新部分

asp-classic - 经典 ASP 文本替换和 UTF-8 编码

asp.net - 一个 IIS 网站可以托管多个不同 ASP.NET 版本的 Web 应用程序吗?

asp.net - 寻找一些 ASP session 管理教程

javascript - 为什么得到有值(value)的回应?

php - 未启用 PHP 中的套接字传输 "ssl"

asp.net - 为什么 OPTIONS 请求未到达我的 ASP.NET 应用程序?