台灣最大程式設計社群網站
線上人數
756
 
會員總數:245975
討論主題:189551
歡迎您免費加入會員
討論區列表 >> 專欄文章 >> 改善ASP效能的訣竅-9 (Nancy Cluts 著)
[]  
[我要回覆]
回應主題 加入我的關注話題 檢舉此篇討論 將提問者加入個人黑名單
改善ASP效能的訣竅-9 (Nancy Cluts 著)
價值 : 0 QP  點閱數:2171 回應數:0
樓主

站務人員 站長
門外漢
0 1580
542 9
發送站內信

捐贈 VP 給 站務人員
訣竅 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 選項
雖然與 ASP 選項不完全類似,COM 元件也有三種組態選項。COM 元件可以是「未設定的」、「設定為程式庫應用程式」,或「設定為伺服器應用程式」。「未設定的」意思是指元件沒有向 COM+ 註冊。元件將在呼叫程式的程序空間執行,那就是說,它們是「同程序」。程式庫應用程式也是同程序,但使用 COM+ 的服務,包括安全、交易和內容支援。伺服器應用程式被設定為在它們自有程序空間內執行。

您可以看到未設定的元件比程式庫應用程式略有一些優勢。您還可能看到程式庫應用程式比伺服器應用程式的效能優點更大。這是因為程式庫應用程式與 ASP 在同一程序執行,而伺服器應用程式在它們的自有程序執行。程序間的呼叫比同程序呼叫虛耗空間更大。而且,當在程序之間傳遞諸如記錄集之類的資料時,必須在兩個程序之間複製所有的資料。

陷阱!當使用 COM 伺服器應用程式時,如果您在 ASP 和 COM 之間傳遞物件,要確保物件建置「按值封送」或 MBV。建置 MBV 的物件將它們自己從一個程序複製到另一個程序。這比採用物件仍在建立者的程序中而另外一個程序反覆地呼叫建立程序以使用該物件的方法好。中斷連線的 ADO 記錄集將「按值封送」,連線的記錄集則不會。Scripting.Dictionary 不執行 MBV 並不在程序之間傳遞。最後,VB 程式編寫人員請注意:MBV 不透過傳遞參數 ByVal 獲得。MBV 由原始的元件作者建置。

怎麼辦?
如果讓我們建議一個權衡效能與可靠性的合理組態,它們應是如下的組態:

在 IIS 4.0 中,使用 ASP 低隔離等級,使用 MTS 伺服器套裝軟體。
在 IIS 5.0 上,使用 ASP 的中隔離等級,並使用 COM+ 程式庫應用程式。
這些是非常一般的原則,主機公司一般情況下以中或高隔離等級執行 ASP,而單一用途的 Web 伺服器可以以低隔離級執行。權衡各種利弊,並自己決定哪個組態更能符合您的需要。

本篇文章發表於2000-09-09 00:00
目前尚無任何回覆
   

回覆
如要回應,請先登入.