性能調(diào)整概述
為什么要進(jìn)行性能調(diào)優(yōu)呢?因為我們的應(yīng)用系統(tǒng)在運行一段時間后,用戶報告系統(tǒng)運行會變慢,使他們不能完成所有的工作,完成事務(wù)和處理查詢花費了過長的時間,或者應(yīng)用程序在一天中的某些時段變慢。要確定造成問題的本質(zhì)原因,必須評估系統(tǒng)資源的實際使用情況并進(jìn)一步地分析資源使用的瓶頸所在。
用戶通常報告以下性能問題:
●?事務(wù)或查詢的響應(yīng)時間比預(yù)期的長
●?事務(wù)吞吐量不足以完成必需的工作負(fù)載
●?事務(wù)吞吐量減少
為了維持?jǐn)?shù)據(jù)庫應(yīng)用程序的最優(yōu)性能,應(yīng)該制定一個計劃用于評估系統(tǒng)性能,以便在性能出現(xiàn)問題的時候,該計劃可以根據(jù)性能問題的情況對數(shù)據(jù)庫做出調(diào)整,以維持良好的性能。定期的、特定的評估能夠幫助您預(yù)見并糾正性能問題。通過盡早識別出問題,可以有效地防止這些問題嚴(yán)重地影響用戶。
本章我們將通過一個實際生產(chǎn)中的客戶案例,展開對性能調(diào)整的講解。本章主要內(nèi)容包括:
●?性能概述
●?性能目標(biāo)
●?性能評估
●?性能模型
●?什么時候需要性能調(diào)整
●?性能調(diào)整準(zhǔn)則
●?性能調(diào)整的方法和過程
●?保持良好性能
1.1? 性能概述
首先讓我們以一個真實的某移動公司應(yīng)用案例來展開性能調(diào)整的話題,圖1-1和圖1-2分別為該移動公司營賬應(yīng)用系統(tǒng)的邏輯架構(gòu)部署圖和物理架構(gòu)部署圖。
?
圖1-2中的某移動公司營賬系統(tǒng)是一個大型的復(fù)雜系統(tǒng)。在這個系統(tǒng)中,從上至下包括以下幾個層次:應(yīng)用程序、中間件應(yīng)用服務(wù)器、數(shù)據(jù)庫、主機系統(tǒng)(操作系統(tǒng))、光纖交換機和SAN存儲網(wǎng)絡(luò)(IBM ESS)。在系統(tǒng)發(fā)生性能問題時,性能問題的定位和調(diào)優(yōu)很復(fù)雜。
?
該移動公司營賬應(yīng)用系統(tǒng)的信息架構(gòu)如下:
●?存儲:采用的是IBM ESS 800存儲系統(tǒng)
●?操作系統(tǒng):IBM AIX 5.3(p 690)
●?數(shù)據(jù)庫:IBM DB2 V8.2.1
●?中間件:IBM WebSphere 5.1
●?Web服務(wù)器:IBM Http Sever
●?應(yīng)用:采用基于J2EE的Java應(yīng)用
該移動公司計費業(yè)務(wù)中心營賬系統(tǒng)從年初開始陸續(xù)上線,營賬系統(tǒng)在上線運行一段時間后出現(xiàn)性能問題。主要表現(xiàn)在對最終用戶的交互響應(yīng)速度不如預(yù)期,尤其在業(yè)務(wù)繁忙時更是無法得到及時的交互響應(yīng)。從主機系統(tǒng)上觀察,主要表現(xiàn)在系統(tǒng)的I/O等待時間較長。營賬系統(tǒng)是由業(yè)務(wù)應(yīng)用程序、DB2數(shù)據(jù)庫、AIX主機、ESS存儲多個部分組成,因此性能瓶頸的定位和性能的優(yōu)化都比較復(fù)雜。
那么我們?nèi)绾蝸斫鉀Q這些性能問題呢?有兩種方法:
●?第一種方法是我們可以通過擴容硬件物理資源(增加CPU、內(nèi)存以及購買更快的存儲系統(tǒng))來實現(xiàn)。
●?第二種方法是我們試圖對應(yīng)用系統(tǒng)作出相應(yīng)的調(diào)整來優(yōu)化系統(tǒng)以改善目前的情況。
第一種方法我們需要投入更多的經(jīng)濟成本,而第二種方法需要我們利用經(jīng)驗來對整個系統(tǒng)作出調(diào)整。本書中我要介紹的是第二種方法。
在進(jìn)行調(diào)整之前,您有必要先了解關(guān)于性能調(diào)優(yōu)方面的某些話題。
首先,性能的概念是什么呢?性能是業(yè)務(wù)應(yīng)用系統(tǒng)(例如我們本章所舉的移動公司營賬系統(tǒng)案例)在特定硬件資源(例如32路CPU、128GB內(nèi)存)和工作負(fù)載下所表現(xiàn)出來的處理能力。性能主要通過系統(tǒng)響應(yīng)時間、吞吐量和可用性來衡量。
性能受以下因素影響:
●?系統(tǒng)中可用的物理資源
●?如何充分合理地利用這些資源
一般情況下,通過性能調(diào)整我們可以完成以下目標(biāo):
●?處理更大的或更緊迫的工作負(fù)載,而不增加處理成本,例如增加工作負(fù)載而不用購買新硬件或占用更多處理器時間
●?獲得更快的系統(tǒng)響應(yīng)時間或更大的吞吐量,而不增加處理成本
●?降低處理成本,而不會降低對用戶的服務(wù)
1.2? 性能評估
以下評估描述了事務(wù)處理系統(tǒng)的性能:
●?吞吐量
●?響應(yīng)時間
●?每個事務(wù)的成本
●?資源利用率
1. 吞吐量
吞吐量用于評估系統(tǒng)的整體性能。對于事務(wù)處理系統(tǒng),吞吐量通常用每秒事務(wù)數(shù)(TPS)或每分鐘事務(wù)數(shù)(TPM)來計量。吞吐量取決于以下因素:
●?服務(wù)器硬件資源配置
●?軟件中的處理開銷
●?磁盤上數(shù)據(jù)的布局
●?硬件和軟件都支持的并行度
●?正在處理的事務(wù)類型
2. 響應(yīng)時間
響應(yīng)時間用于評估單個事務(wù)或查詢的性能。通常認(rèn)為,響應(yīng)時間是從用戶輸入一個命令或激活一個功能開始一直到應(yīng)用程序指示已完成該命令或功能所消耗的時間。典型DB2應(yīng)用程序的響應(yīng)時間包括以下操作序列(每個操作都需要一定的時間,響應(yīng)時間不包括用戶思考和輸入查詢或請求的時間):
(1) 應(yīng)用程序?qū)⒉樵冝D(zhuǎn)發(fā)到數(shù)據(jù)庫服務(wù)器。
(2) 數(shù)據(jù)庫服務(wù)器執(zhí)行查詢最優(yōu)化并檢索所有用戶定義的SQL、命令、腳本和程序。
(3) 數(shù)據(jù)庫服務(wù)器檢索、添加或更新適當(dāng)?shù)挠涗洸?zhí)行與查詢直接相關(guān)的磁盤I/O操作。
(4) 數(shù)據(jù)庫服務(wù)器執(zhí)行在查詢或事務(wù)仍處于暫掛狀態(tài)的同期發(fā)生的所有后臺I/O操作(如日志記錄和臟頁面清除)。
(5) 數(shù)據(jù)庫服務(wù)器將結(jié)果返回給應(yīng)用程序。
(6) 應(yīng)用程序顯示信息或發(fā)出確認(rèn),并隨后向用戶發(fā)出新的提示。
圖1-3顯示了步驟(1)~(6)中所述的操作如何作用于整體響應(yīng)時間。
?
??
3. 響應(yīng)時間和吞吐量
響應(yīng)時間和吞吐量是相關(guān)聯(lián)的。在您增加總體吞吐量時一般事務(wù)的響應(yīng)時間會減少。但是,可以通過為特定查詢分配不成比例的資源數(shù)量,在犧牲總體吞吐量的情況下減少該查詢的響應(yīng)時間。與之相反,可以通過限制數(shù)據(jù)庫分配給大型查詢的資源數(shù)來維持總體吞吐量。
當(dāng)嘗試在對高事務(wù)吞吐量的當(dāng)前需求和對執(zhí)行大型決策支持查詢的即時需求之間取得平衡時,吞吐量與響應(yīng)時間之間的平衡就變得明顯起來。應(yīng)用于查詢的資源越多,可用于處理事務(wù)的資源就越少,并且查詢對事務(wù)吞吐量的影響就越大。相反,提供給查詢的資源越少,查詢花費的時間就越長。
4. 每個事務(wù)的成本
每個事務(wù)的成本是財務(wù)上的量度,通常用于比較應(yīng)用程序、數(shù)據(jù)庫服務(wù)器或硬件平臺之同的總體操作成本。
要評估每個事務(wù)的成本,通常采用下面的方法:
(1) 計算與運行應(yīng)用程序相關(guān)的所有成本,這些成本可能包括硬件和軟件的安裝成本、運作成本及其他費用。
(2) 設(shè)計應(yīng)用程序有效期的事務(wù)和查詢的總數(shù)。
(3) 用總成本除以事務(wù)總數(shù)。
盡管該測量對于進(jìn)行規(guī)劃和評估很有用,但是它與達(dá)到最佳性能的運行問題幾乎無關(guān)。
5. 資源利用率和性能
典型的事務(wù)處理應(yīng)用程序在其各個運行周期中需要滿足的要求各不相同。一天、一周、一月、一年中的峰值負(fù)載以及決策支持(DSS)查詢或備份操作所施加的負(fù)載對于任何容量將用盡的系統(tǒng)都會產(chǎn)生明顯的影響。可以使用從特定系統(tǒng)派生的直接歷史數(shù)據(jù)精確地測定這種影響。
必須對系統(tǒng)的工作負(fù)載和性能進(jìn)行定期評估,以預(yù)測峰值負(fù)載并比較使用周期中不同時刻的性能評估。定期評估有助于為數(shù)據(jù)庫服務(wù)器上的應(yīng)用程序開發(fā)總體的性能概要文件,該概要文件對于確定如何可靠地提高性能具有關(guān)鍵意義。
關(guān)于操作系統(tǒng)提供的用于評估對系統(tǒng)和硬件資源的性能影響的工具,請參閱本書第2章“操作系統(tǒng)及存儲的性能調(diào)優(yōu)”。
資源利用率是與系統(tǒng)資源可用的總時間相比,該系統(tǒng)資源實際被占用的時間的百分比。例如,如果CPU在一分鐘內(nèi)總共用42秒處理事務(wù),那么在這段時間間隔內(nèi)的利用率就是70%。
定期評估并記錄以下系統(tǒng)資源的利用率:
●?CPU
●?內(nèi)存
●?磁盤
●?網(wǎng)絡(luò)
當(dāng)某項資源被過度使用或者它的利用率與其他系統(tǒng)資源的利用率不成比例時,就稱該資源對于性能是臨界的。例如,當(dāng)一個磁盤的利用率達(dá)到70%,而系統(tǒng)中其他所有磁盤的利用率只有30%的時候,可以認(rèn)為該磁盤是臨界的或是被過度使用。盡管70%并不表示磁盤被嚴(yán)重過度使用,但可以通過重新安排數(shù)據(jù)來平衡整個磁盤集上的I/O請求,從而提高系統(tǒng)的性能。
如何評估資源利用率取決于操作系統(tǒng)為報告系統(tǒng)活動和資源利用率所提供的工具。一旦發(fā)現(xiàn)看起來被過度使用的資源,就可以使用數(shù)據(jù)庫服務(wù)器的性能監(jiān)視實用程序來收集數(shù)據(jù),并對可能占用該系統(tǒng)資源上負(fù)載的數(shù)據(jù)庫活動進(jìn)行干涉。可以調(diào)整數(shù)據(jù)庫的配置參數(shù)或操作系統(tǒng)的相關(guān)I/O配置,以減少那些數(shù)據(jù)庫活動或?qū)⑺鼈兎稚⒌狡渌Y源中(關(guān)于這部分的詳細(xì)內(nèi)容請參見本書第2章)。
?
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061
微信掃一掃加我為好友
QQ號聯(lián)系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元

