為了優(yōu)化 MSIB 2.0 站點(diǎn)的性能,MSIB 開(kāi)發(fā)組對(duì)以下內(nèi)容做了調(diào)查:
分析 SQL 服務(wù)器
使用高速緩存方案
調(diào)節(jié)硬件
調(diào)節(jié) IIS
橫向擴(kuò)展 Web 群
分析 SQL 服務(wù)器
優(yōu)化站點(diǎn)軟件性能和可擴(kuò)展性的第一步是分析后端 SQL 服務(wù)器的使用情況。 MSIB 項(xiàng)目組為站點(diǎn)內(nèi)的每個(gè)頁(yè)面進(jìn)行了一次 SQL Query Analyzer 追蹤。 以下是免費(fèi)文本搜索頁(yè)面的輸出結(jié)果:
EventClass TextData CPU Reads Writes Duration SPID StartTime
SQL:BatchCompleted SET NO_BROWSETABLE ON 0 0 0 0 52 2000-12-05 11:07:16.513
SQL:BatchCompleted select * from CatalogGlobal where [CatalogName] =N'ANVIL0' 0 2 0 0 52 2000-12-05 11:07:16.513
SQL:BatchCompleted SET NO_BROWSETABLE ON 0 0 0 0 52 2000-12-05 11:07:16.513
SQL:BatchCompleted SELECT A.* FROM CatalogAttributes A, syscolumns SWHERE S.id = OBJECT_ID('ANVIL0_CatalogProducts') AND A.propertyname =S.name ORDER BY A.PropertyName 15 55 0 16 52 2000-12-05 11:07:16.513
SQL:BatchCompleted EXEC sp_GetResults_for_AllColumns N'ANVIL0', N'*',N'FREETEXT (*, N''testasdf'' )', '', 1,11,1,39 32 1147 0 76 52 2000-12-05 11:07:16.530
SQL:BatchCompleted EXEC sp_CheckCatalog '*', 'ANVIL0', 'FREETEXT (*,N''testasdf'' )' 0 29 0 0 52 2000-12-05 11:07:16.607
MSIB 項(xiàng)目組的第一項(xiàng)查詢(xún)優(yōu)化措施是在追蹤分析過(guò)程中發(fā)現(xiàn)的。 MSIB 項(xiàng)目組在頁(yè)面上查找重復(fù)的查詢(xún)并減少冗余的 Select 語(yǔ)句。 MSIB 項(xiàng)目組很好地跟蹤了目標(biāo)的信息并對(duì)代碼重新排序,使得查詢(xún)操作只能進(jìn)行由條件調(diào)用,從而完成了這一步驟。
接下來(lái), MSIB 項(xiàng)目組從磁盤(pán)讀取的角度確定了為昂貴的查詢(xún)。 為了簡(jiǎn)化這些操作,MSIB 項(xiàng)目組嘗試著降低查詢(xún)操作的 I/O 復(fù)雜性。 例如,改變 Select * 語(yǔ)句,使其歸入隔離更好的返回子集中。
后,MSIB 項(xiàng)目組通過(guò) SQL 服務(wù)器調(diào)節(jié)向?qū)е胤帕擞涗浵碌母櫧Y(jié)果。 該向?qū)Ыㄗh對(duì)表格索引進(jìn)行一些變更。 所有這些頁(yè)面級(jí)變更的組合降低了后端 SQL 服務(wù)器的負(fù)荷并因此改善了 MSIB 2.0 Web 站點(diǎn)的可擴(kuò)展性。
在 SQL Server 服務(wù)器上,MSIB 項(xiàng)目組保留了與性能有關(guān)的所有默認(rèn)配置。
使用高速緩存方案
提高吞吐量的下一步是利用應(yīng)用服務(wù)器中的高速緩存。 MSIB 項(xiàng)目組利用了以下的高速緩存方案以?xún)?yōu)化 MSIB 2.0 站點(diǎn)的性能。
頁(yè)面輸出高速緩存
Microsoft .NET Framework 系統(tǒng)內(nèi)內(nèi)置了頁(yè)面輸出高速緩存。 關(guān)于 MSIB 項(xiàng)目組如何使用這種功能的詳細(xì)情況在 MSIB Developers Guide 中有所介紹,該資料隨 MSIB 2.0 提供。 這種高速緩存方案對(duì)于未經(jīng)個(gè)性化的頁(yè)面是有效的,例如那些未用個(gè)性化內(nèi)容對(duì)象(PCO)顯示 Microsoft Content Management Server (MCMS)的頁(yè)面。
MCMS 服務(wù)器的性能
Microsoft Content Management Server (MCMS) 2002 可以在縱橫兩個(gè)方向上進(jìn)行擴(kuò)展。 目前正在編寫(xiě)一份關(guān)于 MCMS 部署的文件,其中討論了各種可用于 MCMS 的高速緩存方法。 在編寫(xiě)完成之后,可以從以下地址得到該文件 http://go.microsoft.com/fwlink/?LinkId=15170。如需了解關(guān)于 MCMS 2002 高速緩存的更多信息,參見(jiàn) MCMS 2002 Help 中的“Optimizing MCMS Site Performance”。 如需了解關(guān)于利用 MCMS 2002 SCA 設(shè)置高速緩存屬性的更多信息,參見(jiàn) MCMS 2002 Help 中的“Specifying cache properties”部分。 如需了解 MCMS 性能的更多信息,參見(jiàn) MCMS 主頁(yè),地址在 http://go.microsoft.com/fwlink/?LinkId=8426.
調(diào)節(jié)硬件
在進(jìn)行性能分析的過(guò)程中,為 Web 服務(wù)器和 SQL 服務(wù)器選擇正確的硬件發(fā)揮著非常重要的作用。 此外知道如何為這些服務(wù)器選擇正確的硬件還能夠讓您為其他用戶(hù)提供相關(guān)硬件的建議。 這一部分介紹了 MSIB 項(xiàng)目組是如何為本文所述的測(cè)試選擇 SQL 服務(wù)器的。
Web 服務(wù)器
在為 Web 服務(wù)器選擇硬件的時(shí)候, MSIB 項(xiàng)目組考慮了以下幾個(gè)方面:
內(nèi)存
磁盤(pán)子系統(tǒng)
網(wǎng)絡(luò)系統(tǒng)
CPU
內(nèi)存
MSIB 項(xiàng)目組為 Web 服務(wù)器配置了較大的隨機(jī)存取存儲(chǔ)器(RAM),所配容量超出了服務(wù)器運(yùn)行任務(wù)所需的量。 為了確定服務(wù)器可以減少多少物理 RAM 內(nèi)存,之后項(xiàng)目組計(jì)算了在工作負(fù)載下服務(wù)器的大工作集。 一個(gè)典型部署所需的 RAM 數(shù)量取決于您為該部署對(duì)高速緩存和內(nèi)存的需求。 不過(guò),在大多數(shù)情況下,1GB 的物理 RAM 已經(jīng)是足夠的了。
磁盤(pán)子系統(tǒng)
MSIB 站點(diǎn)前端 Web 服務(wù)器的磁盤(pán)子系統(tǒng)作為一個(gè)只讀設(shè)備,是用來(lái)存儲(chǔ)自舉分區(qū)和站點(diǎn)內(nèi)容的。 這一子系統(tǒng)必需要有讀/寫(xiě)設(shè)備才能進(jìn)行文件分頁(yè)操作,不過(guò)如果有足夠的物理存儲(chǔ)器支持系統(tǒng)的話(huà),這些操作都是低限度的要求了。 Web 服務(wù)器確實(shí)是利用磁盤(pán)子系統(tǒng)寫(xiě)事件日志和 Web 日志的。 這種操作已經(jīng)由 Windows 2000 操作系統(tǒng)進(jìn)行了很好的調(diào)節(jié),很少需要超過(guò)一個(gè)內(nèi)存芯片才能達(dá)到所需性能的。
網(wǎng)絡(luò)系統(tǒng)
Web 服務(wù)器上的網(wǎng)絡(luò)系統(tǒng)至少應(yīng)當(dāng)包括一塊 100BaseT 的網(wǎng)卡。 要實(shí)現(xiàn)更高的安全性、可管理性和可用性,服務(wù)器應(yīng)該配備兩塊甚至三塊網(wǎng)卡。 在 MSIB 項(xiàng)目組的測(cè)試中,web 服務(wù)器的網(wǎng)路吞吐量并不足以用完一塊 100 兆位的網(wǎng)卡能力。
CPU
后,應(yīng)當(dāng)為服務(wù)器選用當(dāng)前好的 CPU 和處理子系統(tǒng)。 在可以預(yù)見(jiàn)到的將來(lái),這個(gè)特別的硬件子系統(tǒng)仍將是該服務(wù)器的瓶頸。 這是因?yàn)閯?dòng)態(tài) Web 頁(yè)動(dòng)態(tài)和過(guò)程全面的性質(zhì)造成的。
確定適當(dāng)?shù)?CPU 數(shù)量是 Microsoft Server 每處理器許可計(jì)劃的一項(xiàng)要求。 要確定這一需求,需要對(duì)您的 MSIB 2.0 站點(diǎn)進(jìn)行一次 TCA 分析,在本文前面的“使用 TCA 方法進(jìn)行容量規(guī)劃”一部分對(duì)此做了介紹。
SQL 服務(wù)器
MSIB 項(xiàng)目組利用本部分介紹的指南建立起了 SQL 服務(wù)器,使之并未成為 MSIB 2.0 部署中的瓶頸。
在為 SQL 服務(wù)器選擇硬件的時(shí)候, MSIB 項(xiàng)目組考慮了以下幾個(gè)方面:
內(nèi)存
磁盤(pán)子系統(tǒng)
數(shù)據(jù)庫(kù)
內(nèi)存
大量的隨機(jī)存取存儲(chǔ)器(RAM)對(duì)于 SQL 服務(wù)器是有好處的,因此您應(yīng)當(dāng)依照數(shù)據(jù)庫(kù)的工作集權(quán)衡 RAM 的數(shù)量。 在運(yùn)行的時(shí)候測(cè)試網(wǎng)絡(luò)的輸入/輸出 (I/O)。 SQL 服務(wù)器的處理負(fù)荷將是訪(fǎng)問(wèn) SQL 服務(wù)器數(shù)據(jù)庫(kù)的前端服務(wù)器數(shù)量以及負(fù)荷配置文件的正函數(shù)。
磁盤(pán)子系統(tǒng)
一般情況下, SQL 服務(wù)器重要的調(diào)節(jié)選項(xiàng)是安裝物理磁盤(pán)子系統(tǒng)。 為了獲得佳性能,數(shù)據(jù)庫(kù)應(yīng)當(dāng)與它們?cè)诓煌锢眚?qū)動(dòng)器上的業(yè)務(wù)處理記錄分離開(kāi)來(lái)。 您應(yīng)當(dāng)建立起所有的數(shù)據(jù)庫(kù)、業(yè)務(wù)處理記錄和 TempDB ,這樣才不致讓單個(gè)的磁盤(pán)子系統(tǒng)成為瓶頸。 在 MSIB 項(xiàng)目組的測(cè)試方案中,磁盤(pán)子系統(tǒng)并未成為一個(gè)問(wèn)題。 不過(guò),對(duì)于正在運(yùn)行中的站點(diǎn)來(lái)說(shuō),您應(yīng)當(dāng)認(rèn)真地將磁盤(pán)成本和交易聯(lián)系起來(lái)考慮,以便為增加的磁盤(pán)需求做好規(guī)劃。
數(shù)據(jù)庫(kù)
MSIB 2.0 的設(shè)計(jì)使其可以進(jìn)行橫向擴(kuò)展并為后端數(shù)據(jù)庫(kù)系統(tǒng)分區(qū)。 用于營(yíng)銷(xiāo)、用戶(hù)配置文件管理、目錄、數(shù)據(jù)倉(cāng)庫(kù)、交易、內(nèi)容和管理的數(shù)據(jù)庫(kù)可以分離開(kāi)來(lái),放到物理 SQL 服務(wù)器數(shù)據(jù)庫(kù)中。 這樣一來(lái)您能夠輕松地按照數(shù)據(jù)庫(kù)將部署系統(tǒng)分配到獨(dú)立的服務(wù)器或群集上去。 關(guān)于如何做到這一點(diǎn)的詳細(xì)介紹在隨 MSIB 2.0 附帶的 MSIB 2.0 部署指南中可以找到。
調(diào)節(jié) IIS
為了進(jìn)行本分析,MSIB 項(xiàng)目組對(duì)前端 web 服務(wù)器進(jìn)行了小限度的調(diào)節(jié)。 在默認(rèn) Web 站點(diǎn)的 Properties 頁(yè)面的 Performance 選項(xiàng)卡上,性能調(diào)節(jié)塊被改變?yōu)槊刻斐^(guò) 100000 次命中的數(shù)值。 所有其他的設(shè)置都保持原狀。 如果您必需要在測(cè)試站點(diǎn)或?qū)嶋H站點(diǎn)中改變?nèi)魏螀?shù)的話(huà),那么請(qǐng)每次只改變一個(gè),然后將新的結(jié)果與舊結(jié)果加以比較。
重要事項(xiàng): 對(duì)這些參數(shù)中的任何一個(gè)進(jìn)行不適當(dāng)?shù)母淖兛赡軙?huì)給站點(diǎn)管理帶來(lái)麻煩。
Web 群:MSIB 2.0 站點(diǎn)的擴(kuò)展
如果所需的 CPU P4EM 比單臺(tái)服務(wù)器所能提供的能力大,那么 Web 群將需要用到多臺(tái) Web 服務(wù)器。 出于可用性和可靠性的考慮,MSIB 項(xiàng)目組建議在任何部署中少都要使用兩臺(tái) Web 服務(wù)器。
第三部分 — MSIB 2.0 站點(diǎn)的可用性
可用性規(guī)劃和可擴(kuò)展性規(guī)劃是非常類(lèi)似的兩項(xiàng)工作。 可用性規(guī)劃的第一步是要確定您的業(yè)務(wù)需求。 作為一項(xiàng)指導(dǎo),建議您重新審查一下您現(xiàn)有站點(diǎn)的行為,然后將您的站點(diǎn)與競(jìng)爭(zhēng)對(duì)手們的站點(diǎn)加以比較。 如需獲得各個(gè)競(jìng)爭(zhēng)對(duì)手的可用性和頁(yè)面等待時(shí)間等信息的列表,參見(jiàn) http://www.keynote.com,地址在 http://go.microsoft.com/fwlink/?LinkId=15046。
有兩個(gè)站點(diǎn)提供了全面的 Internet 性能和一般性能指導(dǎo)性原則,它們是www.mediametrix.com ,地址在 http://go.microsoft.com/fwlink/?LinkId=15045 和“http://Nielsen-netratings.com”,地址在 http://go.microsoft.com/fwlink/?LinkId=15043。
您可以按照不同級(jí)別的可用性部署 MSIB 2.0 解決方案。 應(yīng)當(dāng)在規(guī)劃階段中確定您的 MSIB 2.0 站點(diǎn)的可用性目標(biāo)。
這一部分介紹了可用性,概述了可能會(huì)造成您的 MSIB 2.0 站點(diǎn)不可用的事件,提供了高可用性技術(shù)和建議,介紹了如何避免單點(diǎn)故障,并討論了 MSIB 2.0 企業(yè)部署的恢復(fù)模型。
本部分包括:
什么是可用性?
使站點(diǎn)不可用的三類(lèi)事件
高可用性技術(shù)和建議
避免單點(diǎn)故障
MSIB 2.0 企業(yè)部署的恢復(fù)模型
確定預(yù)期的可用性