IIS6 0 學習心得體會(一) 理論篇

2021-03-31 14:37:33 字數 1790 閱讀 4047

web伺服器的效能和可靠性問題絕大部分是由於質量低劣的web應用造成。i***info.exe執行在使用者態下,應用程式失程序本身下執行敗會導致i***info.exe掛起,iis服務失效。過去的iis被設計成為只有乙個程序--i***info.exe,iis在使用者模式下執行,執行在使用者模式下的應用程式不直接與硬體通訊,它們呼叫的winsock,winsock將資料傳入核心模式的元件(例如網絡卡驅動程式)。

毛病1:

從效能上,i***info程序作為使用者態程序工作。使用者模式和核心模式之間的轉換是一項開銷很大的操作。伺服器首先從核心模式的tcp/ip棧將傳入的http請求傳遞給使用者模式的winsock,由winsock將請求傳遞給iis。這叫context switching

毛病2:

違背了作業系統穩定性的基本原則:

1 把系統**和使用者**隔離;

2 把應用程式進行隔離。

web服務的所有組成部分都執行在i***info.exe,包括系統**,也包括使用者**。

對質量低劣的**優化,對提供虛擬主機的isp來說,通常一台伺服器上承載多個web應用, 不可能isp來排錯, 乙個web應用出問題,會株連九族。還有客戶**和作業系統**在共享同乙個程序,應用**有可能對系統**造成威脅,黑客可能使自己的**讓i***info執行一些底層的系統操作,同時i***info以system系統許可權執行,因此緩衝區溢位會使入侵者獲得system許可權,進行任何操作。

iis 5.0減輕這類問題。在iis 5.0中,我們可以將應用程式保護設定為低階(iis程序)、中級(緩衝池)、高階(隔離),在iis 5.0中,應用一旦崩潰,一般不會波及到iis本身,因為應用程式在i***info之外的程序中執行,但所有web應用都會終止——在預設情況下,應用程式保護是中級,所有的應用程式都在乙個dllhost.exe池之中執行。在這種情況下,排解故障很不容易,因為要確定哪乙個應用程式導致了問題非常困難。就算你程式隔離設成'高'(web應用隔離在多個dllhost.exe的程序中,這要消耗很多資源),這dllhost.exe 只負責動態程式。比如說asp程式。 在iis5.0,static 內容是由i***info.exe負責,比單一程序內執行速度要慢,因為很多應用程式的執行還是依賴i***info,會有更多的context switching, 崩潰的應用雖然不會對其它程序中的應用,但是還是無法恢復,仍要對整個i***info重啟,來重啟崩潰的應用,也沒解決安全問題(i***info仍然使用system特權)還有,但如果我們想要在乙個池(乙個dllhost.exe的例項)中執行兩個應用程式,在另乙個池(另乙個dllhost.exe的例項)中執行另外兩個應用,該怎麼辦?iis 5.0沒有提供命名dllhost.exe例項的途徑,因而也就不能將兩個特定的應用放入某個池執行。

iis6.0全新的設計:

(1)iis 6.0體系設計中最重大的變化是加入了http.sys驅動程式。

在win 2k和nt 4.0中,使用者模式和核心模式之間的轉換是一項開銷很大的操作,伺服器首先從核心模式的tcp/ip棧將傳入的http請求傳遞給使用者模式的winsock,由winsock將請求傳遞給iis。從核心模式到使用者模式的切換很快發生,但不可避免地給處理過程帶來瞬間的延遲。當負載較大時,這種延遲不斷累加,同時由於這種轉換是必不可少的,所以管理員根本沒有辦法優化處理過程。

iis 6.0體系設計中最重大的變化是加入了http.sys驅動程式,http.sys驅動程式的任務是處理http請求,而且它在核心模式下執行操作。不要小看這一改變,將處理http請求的任務從iis 5.0、iis 4.0的使用者模式改變到iis 6.0的核心模式標誌著新一代iis伺服器的誕生。微軟在http.sys驅動程式中採用了許多優化的演算法, http.sys直接從應答緩衝區提取靜態內容,不必再切換到使用者模式。

學習心得體會1

首先我定義了乙個類 sealed class usermodel set public string username set public usermodel string name,int32 age public void displaymember userage this.username...

angular學習心得體會

1 ionic的自定義服務factory,service,provide等.factory hots function hots 這個名字是自定義服務的名字,可以注入到不同controller裡面公用,一般邏輯處理,資料處理,都會放在自定義服務內,當你初試 angular 時,很自然地就會往 con...

陣列學習心得體會

這一章的主要內容是陣列,通過對陣列的學習,我能夠運用陣列解決更多複雜的問題,但是儘管用陣列解決問題,更加方便,但不得不承認,這一章的題目難度也明顯增高,挑戰性也隨之增強,下面是我對陣列這一章的主要內容的總結。一維陣列 一,一維陣列的定義 速度就是一堵相同的變數,他們往往都是為了表達同一批物件的統一屬...