新聞中心
性能優(yōu)化的思路

公司主營業(yè)務:成都做網(wǎng)站、網(wǎng)站建設(shè)、移動網(wǎng)站開發(fā)等業(yè)務。幫助企業(yè)客戶真正實現(xiàn)互聯(lián)網(wǎng)宣傳,提高企業(yè)的競爭能力。創(chuàng)新互聯(lián)是一支青春激揚、勤奮敬業(yè)、活力青春激揚、勤奮敬業(yè)、活力澎湃、和諧高效的團隊。公司秉承以“開放、自由、嚴謹、自律”為核心的企業(yè)文化,感謝他們對我們的高要求,感謝他們從不同領(lǐng)域給我們帶來的挑戰(zhàn),讓我們激情的團隊有機會用頭腦與智慧不斷的給客戶帶來驚喜。創(chuàng)新互聯(lián)推出大理州免費做網(wǎng)站回饋大家。
首先是較為精準的定位問題,借助于相應的工具包,分析系統(tǒng)性能瓶頸在哪,在根據(jù)其性能指標,以及所處于層級決定選擇優(yōu)化的方式方法。在選擇優(yōu)化的方式方法時,大家可以參照以下章節(jié)調(diào)優(yōu)方法,架構(gòu)優(yōu)化遞進,進行正確的,有針對性,有步驟的優(yōu)化??赡軙l(fā)現(xiàn)部分指導思想或許有相悖嫌疑,大可不必較真,系統(tǒng)優(yōu)化的過程本身就是一個不斷分離+共享的組合拳,至于具體選擇哪種優(yōu)化方式,根據(jù)具體需求來定,但大型應用發(fā)展的總體思路是不斷分離,在通過索引(非數(shù)據(jù)庫)進行關(guān)聯(lián)起來,
切記:優(yōu)化一定要對系統(tǒng)進行細致的望聞問切,找到性能問題根源切入點,而不被表象迷糊,對癥下藥,發(fā)現(xiàn)病癥所在的醫(yī)生并不比操作手術(shù)刀的醫(yī)生水平差。本文有工具包一章節(jié),對于需要做優(yōu)化的人員,需要熟悉,他就是我們診斷所用的CT,例如我們發(fā)現(xiàn)內(nèi)存高了,首先想到不是內(nèi)存不夠用,而是為什么如此消耗內(nèi)存,用工具看看內(nèi)存消耗在什么地方,試想之,如在醫(yī)院,病人告訴醫(yī)生,他心臟不好,醫(yī)生就換心臟,那樣的話,每個人只要熟練掌握菜刀,都可以做醫(yī)生
迭代優(yōu)化
性能優(yōu)化未必一次性就能滿足的,可能此處瓶頸消失了,系統(tǒng)一旦運轉(zhuǎn)快速后,在其他地方又發(fā)現(xiàn)新的性能瓶頸,所以性能優(yōu)化是一個迭代的工作。直至滿足系統(tǒng)需要的性能指標。
優(yōu)化的成本
系統(tǒng)性能設(shè)計或優(yōu)化是否可以一步升天,按照最好的分布式架構(gòu)進行設(shè)計和優(yōu)化呢,單個節(jié)點一直也運轉(zhuǎn)及其健康,理論上是可以達到共產(chǎn)國際的,但實際實施層面不可取,必須結(jié)合實際的非功能需求進行設(shè)計和優(yōu)化,一則一步到極致的話,系統(tǒng)的成本太過慮龐大,光是性能設(shè)計和優(yōu)化的成本就高于系統(tǒng)本身給客戶所提供的價值,也造成研發(fā)成本開銷過大。二則好像能夠架構(gòu)這樣完美系統(tǒng)的人還沒誕生。所以一句話也同樣適合架構(gòu)師:有理想而不理想化,廢話少扯:具體見法則
調(diào)優(yōu)方法
數(shù)據(jù)庫優(yōu)化
很多應用,優(yōu)化DB往往是最直接,最方便,見效最顯著的,但并非所有的系統(tǒng)性能都處在瓶頸,或者DB瓶頸解決之后,可能應用層瓶頸,WEB層瓶頸,甚至架構(gòu)瓶頸都會冒出來了,所以數(shù)據(jù)庫優(yōu)化十分重要,但往往很多人理解系統(tǒng)優(yōu)化就是數(shù)據(jù)庫優(yōu)化,是不全面的。優(yōu)化角色一般推薦具備較深數(shù)據(jù)知識的程序員,或者專業(yè)的DBA,而不只是會CRUD開發(fā)人員
◆ 建立正確的主鍵,外鍵,以及索引
◆ 分離原則:讀寫分離,業(yè)務數(shù)據(jù)分離
a) 分庫
b) 分區(qū)
c) 分表
d) 分列(將大字段,不常用的隔離到他表,按需查詢)
◆ 選擇隔離級別:某些對數(shù)據(jù)一致性要求不高的,可以犧牲部分一致性,降低加鎖阻塞
◆ 保證事務簡短以及減少不必要的鎖機制。
◆ 查詢優(yōu)化規(guī)則:
e) 避免表內(nèi)的相關(guān)子查詢;
f) 避免排序或為盡可能少的行排序,
g) 做大量數(shù)據(jù)排序時相關(guān)數(shù)據(jù)放在臨時表中
h) .盡量在where后多傳查詢條件,以減少不必要返回的行
i) .盡量select只需要的字段,以減少不必要返回的列
◆ 分頁存儲過程:大列表的查詢也可以利用分頁存儲過程達到優(yōu)化效果。
◆ 利用數(shù)據(jù)庫緩存,視圖,臨時表等最大程度優(yōu)化系統(tǒng),并對存儲過程和函數(shù)進行必要的優(yōu)化
◆ 如有需要,可以冗余表中字段,避免聯(lián)合查詢
◆ 如有需要,也可以將表內(nèi)的大字段分離到單獨表中,使其單獨查詢
◆ 必做多表關(guān)聯(lián)時,盡量過濾不符條件表中數(shù)據(jù),減少笛卡爾積計算量
◆ 復雜表表:如實時性要求不高,盡量后臺任務計算,避免動態(tài)查詢
應用層優(yōu)化
應用層優(yōu)化側(cè)重于應用層本身的邏輯優(yōu)化,算法優(yōu)化,代碼優(yōu)化等,優(yōu)化的角色可以是熟悉應用的程序員
◆ 優(yōu)化算法,選擇合適高效的算法,降低不必要的遞歸,循環(huán)、多層循環(huán)嵌套等計算
◆ 避免申請過多的不必要的內(nèi)存開銷
◆ 降低內(nèi)存泄露(using,Dispose,弱引用,F(xiàn)inalize)
◆ 使用頻率較低的大文件,大對象,大數(shù)組等使用完畢后,及時釋放
◆ 使用頻率較高的大文件,大對象,大數(shù)組盡量緩存
◆ 考慮多線程技術(shù)
◆ 選擇適當?shù)耐ㄐ欧绞剑洪L連接,短連接,有以下方式Socket、Remoting、Web Services(Rest,Soap)、WCF、 Named Pipes
◆ 降低應用之間通信次數(shù),例用戶認證服務,工作流服務,數(shù)據(jù)庫服務
◆ 降低應用之間傳輸數(shù)據(jù)量,不必要傳輸?shù)牟粋?,少?/p>
◆ 緩存機制:緩存常用的,不易變化的,偶有變化,可以考慮緩存依賴機制
◆ 支持異步計算,降低等待時間
◆ 考慮延遲加載,或者提前加載兩種方式
◆ 分離原則:分離業(yè)務模塊,如分離大I/O模塊、分離高耗內(nèi)存模塊,分離高耗寬帶模塊
◆ 考慮分布式應用,分布式存儲,如以上所有仍然搞不定的
Web優(yōu)化
Web優(yōu)化偏向于熟悉前端開發(fā)的技術(shù)人員
◆ 減少http請求
◆ 避免404錯誤
◆ 在html頁面header加入緩存標簽
◆ Gzip壓縮網(wǎng)頁
◆ 減少cookie體積
◆ 使用外部的js和css
◆ 消減js和css
◆ 壓縮js
◆ 使用css sprites技術(shù),眾多圖片合成在一起,通過CSS切分,降低圖片傳輸?shù)念l率和數(shù)據(jù)量
◆ 可以使用靜態(tài)網(wǎng)頁的,避免使用動態(tài)網(wǎng)頁
架構(gòu)優(yōu)化遞進
為以示與應用層優(yōu)化的區(qū)別,本文對架構(gòu)的描述更側(cè)重偏向于物理層面,再次贅述下,涉及變更架構(gòu)的,需要我們的應用具有良好的拓展性,考驗我們的架構(gòu)師平時的功底,如何剛剛好滿足需求以及兩三年內(nèi)業(yè)務增量,但并非架構(gòu)做的越強大,越靈活,越可配置,越易水平拓展就是越好的,其一考慮此應用的投入產(chǎn)出比,換言之,是否值得投入這么多架構(gòu)設(shè)計成本,其二架構(gòu)設(shè)計也是具有一定的時效性的,IT速度太快了,今天的好東西未必是明天的好東西,年輕貌美的姑娘,總有變成老太婆那一天嘛,再者、越靈活的架構(gòu),就意味著存在更多的配置項,從某一方面,反而增加了系統(tǒng)的復雜度,最后、很多大型,成熟的應用,也并非一蹴而就,而是通過不斷的調(diào)整優(yōu)化,不斷變更架構(gòu)的。圣人也并非天生的,而是不斷的總結(jié),提煉,優(yōu)化,重構(gòu)
◆ 硬件方面使用高性能的小型機、存儲設(shè)備。使用極好的網(wǎng)絡(luò)帶寬
◆ 物理分離Web Server和DB Server或者其他服務如:用戶認證服務
◆ 緩存
ü 數(shù)據(jù)緩存機制
ü 頁面緩存機制
◆ 物理分離業(yè)務模塊,單業(yè)務單獨部署一臺服務器
◆ 部署多臺Web Server
◆ Web負載均衡-F5
◆ 數(shù)據(jù)讀寫分離
◆ 使用消息隊列 進行各種應用間進行同步/異步計算
◆ 應用間選擇合適的通信方式,通信協(xié)議
◆ Web分布式,應用分布式,數(shù)據(jù)分布式
◆ 分布式的節(jié)點使用高性能服務器,小型機群,輔以高速網(wǎng)絡(luò)帶寬等
工具包
◆ 進程管理器,CPU,內(nèi)存,I/O
◆ 日志:IIS日志,Windows日志,系統(tǒng)本身日志
◆ 使用dotTrace,跟蹤方法執(zhí)行時間,找出速度慢的方法,針對性優(yōu)化
◆ Sql Profile跟蹤SQL耗時情況,針對性優(yōu)化
◆ HttpWatch跟蹤請求耗時,以及發(fā)送和收到數(shù)據(jù)量
◆ Performance Count,使用計數(shù)器,統(tǒng)計相關(guān)性能指標
◆ CLRProfiler內(nèi)存泄露檢測工具
◆ LoadRunner,壓力測試,發(fā)現(xiàn)性能瓶頸
其他補充
源文檔下載:http://down./data/220108
文章標題:系統(tǒng)性能調(diào)優(yōu)吐血總結(jié)經(jīng)驗分享
文章位置:http://www.5511xx.com/article/djsseog.html


咨詢
建站咨詢
