管理与远程共享的连接

如果网站将虚拟目录与运行 Windows 2000 或更高版本的远程计算机上的共享相连接,IIS 将通过服务器信息块 (SMB) 工作上下文检测远程计算机上的目录更改通知。IIS 侦听更改通知以清除 ASP 模板缓存和 IIS 静态文件缓存中的文件,并用远程共享上的已更改文件中的新数据替换这些文件。如果这些缓存没有打开,IIS 必须从远程共享检索内容。而对于 ASP 网页,则需要针对每个用户请求编译内容中包含的所有脚本。这些进程占用很多资源。

默认情况下,Windows XP 接受对 50 个 SMB 工作上下文的请求,但是最大限度只能建立 2048 个 SMB 工作上下文。因为远程计算机限制它所接受的 SMB 工作上下文的数量,因此自动更新缓存的文件将会失败。下列错误表示 SMB 调用失败:

当 SMB 调用失败时,IIS 继续为 ASP 模板缓存中未更改的过期 ASP 脚本以及 IIS 静态文件缓存中的过期静态页提供服务。这种情况下,刷新缓存需要重新启动 IIS。可以用下列方法管理与远程共享连接有关的问题:

构建虚拟目录

如果需要创建几千个从一台远程计算机上获取数据的虚拟目录,请建立一个深的虚拟目录树,而不是宽的虚拟目录树。IIS 可以监视高层虚拟目录下的子目录中的更改。例如,如果需要 2500 个虚拟目录中的数据,而这些目录都访问一个远程服务器,则可以创建 25 个顶层虚拟目录,每个目录下再创建 100 个子目录。Windows XP 的默认远程连接限制为每个客户端最多 50 个远程连接,而以这种方式创建出来的虚拟目录树的远程连接数要小于此值。

移动内容

可以用下列方法解决动态数据和静态文件数据的连接限制问题:

在两台或多台远程服务器之间分配内容可以解决此问题,而不必重新构建网站的虚拟目录。例如,假设要将网站上的 3000 个虚拟目录连接到一台远程服务器,如果将一半内容移到第二台服务器,就可以将半数虚拟目录连接到第二台远程服务器,使每台远程服务器的连接数降为 1500。

将部分内容存到本地也可以获得类似效果,即减少所需的过程调用总数。通过将所有内容移到或复制到本地服务器,可以消除与“管理与远程共享的连接”有关的问题,并且不必侦听 UNC 目录更改。

提高远程服务器上的连接限制

还可以将远程计算机上的连接限制提高到每个客户端最多 2048 个连接来解决这一问题。这样,网站就可以与服务器建立更多的并发连接。

若要将连接数设置为最大,服务器需要在注册表中设置两个注册表项:

有关更改注册表的详细信息,请参阅“在注册表编辑器中添加和删除信息”以及 RegEdt32.exe 帮助主题中的“编辑注册表数据”。

关闭 ASP 模板缓存

如果无法使用上述某个方法有效地解决连接限制问题,可以关闭 ASP 模板缓存、IIS 静态文件缓存,或同时关闭这两个缓存,以减少或消除连接远程服务器以侦听更改的需要。但是,这会降低向客户端传送页面的速度,使性能低得让人无法接受。

关闭 ASP 模板缓存:

  1. Internet 信息服务管理单元中,选择网站或独立应用程序的开始位置目录。
  2. 打开此目录的属性页,然后单击“应用程序设置”部分的“配置”按钮。如果“配置”按钮是非活动的,则此目录或开始位置不包含独立应用程序。可以单击“创建”按钮创建一个新应用程序。

  3. 单击“缓存选项”选项卡。如果“缓存选项”选项卡不可用,请确认“应用程序设置”部分的“应用程序保护”设置为“高(独立)”。将“应用程序保护”改为“高(独立)”后,必须单击“应用”,更改才会生效。

  4. 在“ASP 文件缓存”下面,选择“不缓存 ASP 文件”。
  5. 单击“确定”。
  6. 重新启动 IIS。

关闭 IIS 文件缓存:

  1. 使用下列注册表路径:

    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\InetInfo\Parameters

  2. 将 DisableMemoryCache 设置为 1。
  3. 重新启动 IIS。

© 1997-2001 Microsoft Corporation. 保留所有权利。