技巧 8:迟一点获得资源,早一点释放资源
这里是一个小技巧供您参考。一般来说,最好迟一点获得资源,早一点释放资源。这适用于 COM 对象以及文件句柄和其它资源。
这种优化方法主要用于 ADO 连接和记录集。当您使用完记录集,比方说在显示一个表及其数据之后,应立即释放它,而不是等到页面结束时再释放。将 VBScript 变量设置为 Nothing 是最好的做法。不要让记录集超出作用域之外。而且,要释放任何相关的 Command 或 Connection 对象(在将记录集或连接设置为 = Nothing 之前,不要忘记调用 Close())。这会缩短数据库必须为您准备资源的时间,并尽快释放数据库到连接池的连接。
技巧 9:进程外执行过程以性能换取可靠性
asp 和 MTS/COM+ 两者都有配置选项,可使您兼顾可靠性和性能。当建立和部署应用程序时,应知道如何兼顾两者的性能。
ASP 选项
可以配置 ASP 应用程序,以便以三种方法之一运行。在 IIS 5.0 中,引入了“隔离级”这一术语以说明这些选项。这三个隔离级分别是低级、中级和高级:
低级隔离。这在 IIS 的所有版本中都得到支持,且是最快的。它在 Inetinfo.exe 中运行 ASP,Inetinfo.exe 是主要 IIS 进程。如果 ASP 应用程序崩溃,IIS 也会崩溃。(要在 IIS 4.0 下重新启动 IIS,Web 站点管理员应使用诸如 InetMon 之类的工具监视站点,如果服务器发生故障,应启用批处理文件以重新启动服务器。IIS 5.0 引入了可靠的重新启动,该方法可使发生故障的服务器自动重新启动。)
中级隔离。IIS 5.0 引入了这个新的级别,它被称为进程外级别,因为 ASP 在 IIS 进程之外运行。在中级隔离中,被配置作为中级隔离运行的所有 ASP 应用程序都共享一个进程空间。这就减少了在一台服务器运行多个进程外 ASP 应用程序所需要的进程数量。中级隔离是 IIS 5.0 中的默认隔离级别。
高级隔离。在 IIS 4.0 和 IIS 5.0 中支持这一级别,高级隔离也是进程外的。如果 ASP 崩溃,Web 服务器并不会崩溃。下次 ASP 请求时,ASP 应用程序就会自动重新启动。在高级隔离中,配置作为高级隔离运行的每个 ASP 应用程序都在其自有进程空间中运行。这样做可保护 ASP 应用程序彼此之间不相互干扰。其缺点是它要求每个 ASP 应用程序都要有一个单独的进程。当在一台服务器上必须运行许多应用程序时,系统开销就会大大增加。
哪个选项最好的呢?在 IIS 4.0 中,进程外运行将显著降低性能。在 IIS 5.0 中,做了许多改进,将进程外运行 ASP 应用程序所产生的开销降到最低限度。事实上,在绝大多数测试中,IIS 5.0 中的 ASP 进程外应用程序比 IIS 4.0 中的进程内应用程序运行得更快。不管怎样,在两个平台上,进程内(低隔离级)性能最佳。但是,如果访问率相对较低或最大吞吐量较低,低隔离级的优势不太明显。因此,在您每一 Web 服务器每秒钟需要数百或成千上万页面时,才会觉得有必要设置低隔离级。与往常一样,应对多种配置进行测试,确定您要采取哪一种折衷方案。
注意 当您运行 ASP 进程外应用程序时(中级或高级隔离),它们在 NT4 中的 MTS 和在 Windows 2000 中的 COM+ 中运行。即,在 NT4 中它们在 Mtx.exe 中运行;而在 Windows 2000 中,它们在 DllHost.exe 中运行。您可以在任务管理器中看到这些进程在运行。您还可以看到 IIS 如何为进程外 ASP 应用程序配置 MTS 程序包或 COM+ 应用程序。
COM 选项
COM 组件也有三种配置选项,虽然与 ASP 选项不完全类似。COM 组件可以是“未配置的”、配置为库应用程序或配置为服务器应用程序。“未配置的”意思是指组件没有注册 COM+。组件将在调用程序的进程空间运行,那就是说,它们是“进程内的”。库应用程序也是进程内的,但使用 COM