将测试环境与实际运行的环境相匹配,甚至防火墙也不例外。这听起来代价很高,但我曾经听说过开发人员因为没有考虑到防火墙,而丢失了工作。
有关使用 Web Application Stress Tool 测试 ASP 应用程序的详细信息,请参阅“I Can''t Stress It Enough -- Load Test Your ASP Application”(英文)。
使用隔离功能保护您的应用程序过程能够极大地增强服务器的稳定性。谈到 Internet 应用程序,是否使用隔离功能的后果可能会有巨大的差别:一个是应用程序崩溃,一个是服务器当机。保护主 IIS 进程 (InetInfo.exe) 通常会排在优先级列表的较高位置。在您使用组件时,这一点尤为突出。
通常所采用的保护主 ISS 进程的技术是使 Web 应用程序运行在各自的内存空间中。在 Internet Services Manager 中,您可以针对每一个 Web 设置这一选项。虽然因对进程进行编组而开销的系统资源会对性能有些微的影响,但对应用程序所起的保护作用值得付出这一代价。 在 IIS 4.0 下,您可以采用进程内 (in-process) 和进程外(out-of-process,OOP)两种方式运行应用程序。OOP 应用程序会运行在新的 Mtx.exe 实例中。在 IIS 5.0 下,您还能使用其他的隔离选项。可以将隔离级别设置为“低”(对 Inetinfo.exe 来说是进程内应用程序)、“中”(DllHost.exe 共享实例)或“高”(Dllhost.exe的非共享实例)。
除了将 Web 应用程序隔离在它们自己的内存空间中之外,您可能还希望隔离不信任的组件。不信任的组件通常是在实际环境中没有通过测试时间的考验的组件。您可以在 Server 包中运行这些组件,这样它们会运行在新的 Dllhost.exe 实例中。
一般而言,如果要在性能和保护措施之间采取中庸之道,方式如下:在“高”隔离状态运行 Web 应用程序,在库包中运行组件。这种方式最大限度地减少了编组开支,同时在进程之间提供了最强的保护作用。
详细信息,请参阅文章“Server Reliability Through Process Isolation”(英文)。
在 IIS 4.0 下,针对每个受 MTS 管理的处理器,ASP 的默认共用组是 10 个线程。在 IIS 5.0 中,默认值是 20。这就意味着每一线程都是一份潜在的宝贵资源,能够处理多个客户机请求。您同样需要避免调用会出现阻塞的方法,如进行大的数据库调用。如果您有要执行这种操作的工作,它将阻止 ASP 应用程序将响应快速返回到客户机,则请考虑使用队列功能。例如,在 NT 4.0 中,可以使用 MSMQ。在 Windows 2000 中,可以使用 Queued Components(排队组件)。
在会话中不要存储 Single-threaded Apartment (STA) 组件,这种方式的一个共同缺陷是会填满会话范围中的 Visual Basic 对象。会将用户锁定到某一线程,与线程共用组的目的背道而驰。潜在的用户会被阻塞在其他用户的后面,等待创建他们组件的线程变得有效。您应该采用别的方式,设计能基于每一页进行创建和破坏的无状态组件。
快速提示:确保已在服务器上禁用了 ASP Script Debugging 功能(使用 Internet Services Manager)。如果启用了 ASP Script Debugging,则 ASP 的执行过程将被锁定到某一线程。
详细信息,请参阅以下文章: