此外,請留意您的緩存設置--只添加內存不一定能夠解決性能問題。您必須留意 iis 緩存處理設置以及它們如何影響服務器的性能。如果這些設置對放置在服務器上的負載并不適當的話,則可能不是發生內存不足,而是造成性能瓶頸。這些緩存設置的相關信息,請參閱本文中〈iis 設置〉及〈附錄 1:性能設置〉兩節中的說明。如需關于使用 asp 及 iis 緩存的討論,請參閱〈附錄 3:asp 緩存處理〉。
附注:在使用 [性能] 計數器來監視性能時,可以在 [添加計數器]對話框中任選一個計數器,并按一下 [說明] 來查看該計數器的說明。
請記錄下列計數器,以判定是否有和內存相關的性能瓶頸:
· 內存︰可用的字節。試著保留至少 10% 的可用內存,以供尖峰時間使用。請記住 iis 5.0 默認最多會使用 50% 的可用內存,供文件緩存使用。
· 內存︰page faults/sec、memory︰pages input/sec及memory︰page reads/sec。如果有個程序請求內存中的一頁,但系統無法在所需的位置上找到它,就會構成一個分頁錯誤。如果此頁位于內存中的其它位置,則此錯誤便稱為軟件分頁錯誤。如果必須從磁盤獲取此頁,則此錯誤便稱為硬件分頁錯誤。大部分的處理器可以處理大量的軟件錯誤而不會引起任何后果。但是,硬件錯誤卻會導致嚴重的延遲!竝age faults/sec」是指處理器處理錯誤頁 (包括硬件及軟件分頁錯誤) 的整體速度!竝ages input/sec」是指為了解決硬件分頁錯誤而從磁盤讀取的總頁數!竝ages reads/sec」是指為了解決硬件分頁錯誤而讀取磁盤的次數!竝ages input/sec」會大于或等于「page reads/sec」,并且能夠清楚地讓您了解硬件分頁錯誤率。如果這些數字都很低,則服務器應該可以快速地響應請求。如果很高,則可能是因為您用了太多的內存在緩存處理上,而沒有留足夠的內存供系統的其它部份使用。您可能必須在服務器上添加 ram 的容量,但是降低緩存的大小也是可行的。
· 內存︰cache bytes、internet information services global︰file cache hits %、internet information services global︰file cache flushes,及 internet information services global︰file cache hits。第一個計數器「memory : cache bytes」顯示「文件系統緩存」的大小,其默認為最多使用 50% 的可用物理內存。由于當緩存的內存快要不足時,iis 會自動調整它,所以請留意這個計數器行進的方向。第二個計數器是緩存存取次數與緩存請求總數的比例,它會反應出此「iis 文件緩存」的設置表現的好不好。對于主要由靜態文件組成的網站來說,80% 以上的緩存存取次數應是個不錯的數字。請比較最后兩個計數器的記錄文件「iis global: file cache flushes」及「iis global︰file cache hits」,以判定您是否正以適當的速度將對象從您的緩存清除。如果清除發生太快,則對象可能會比其應有的頻率更常從緩存中清除出來。如果清除發生太慢,就會浪費內存。請參閱〈附錄 1︰性能設置〉中關于objectcachettl、memcachesize及 maxcachedfilesize 對象的說明。
· page file bytes : total。這個計數器反應出系統上分頁文件的大小。分頁文件越大,系統提供給它的內存就越多。windows 2000 會自動在系統磁盤驅動器上建立一個分頁文件;您可以在每一個邏輯磁盤上建立一個分頁文件,并改變現有文件的大小。事實上,將一個分頁文件等量分配到不同物理硬盤上可提升分頁文件的性能 (請使用不含您的網站內容或記錄文件的硬盤)。請記住,系統磁盤驅動器上的分頁文件至少應是物理內存的兩倍大,這樣系統才能在發生當機時,將整個 ram 的內容寫入磁盤中。
· memory: pool paged bytes, memory: pool nonpaged bytes, process: pool paged bytes: inetinfo, process: pool nonpaged bytes: inetinfo, process: pool paged bytes: dllhost#n, and process: pool nonpaged bytes: dllhost!竚emory : pool pages bytes」及「memory : pool nonpaged bytes」會監視服務器上所有進程的緩沖池空間。這里列出的其它計數器會監視由 iis 5.0 直接使用的緩沖池空間,不管是用于您服務器上進行的 inetinfo 進程 (即 iis 在其中執行的進程),或是 dllhost 進程 (即把 web 應用程序從 inetinfo 隔離或把 web 應用程序放在緩沖池中一起執行的進程)。請確定監視服務器上所有 dllhost 例項的計數器;否則您將無法取得 iis 使用的緩沖池空間的正確數值。系統的內存緩沖池會保留應用程序及操作系統建立及使用的對象。內存緩沖池的內容只能在專用模式下存取。換言之,只有操作系統的核心才能直接使用內存緩沖池;用戶進程則無法使用。在執行 iis 5.0 的服務器上,服務連接的線程是與該服務使用的其它對象 (例如文件句柄及通訊端) 一起存放在未分頁的緩沖池中。
除了添加更多 ram 外,請嘗試下列技巧以增強內存性能︰改進數據組織、嘗試映像或等量劃分磁盤、以 isapi 或 asp 應用程序取代 cgi 應用程序、加大分頁文件、重新計數「iis 文件緩存」、刪除不需要的功能,以及將「文件系統緩存」的平衡值改成「iis 5.0 工作設置」。其中最后一個技巧將在本文稍后詳細說明。
若想取得影響這些計數器數字的 windows 2000 及 iis 5.0 設置的詳細討論,請參閱〈附錄 1︰性能設置〉。
處理器容量 (processor capacity)
延伸閱讀
文章來源于領測軟件測試網 http://www.kjueaiud.com/