1. 程式人生 > >架構 構建高效能的網站

架構 構建高效能的網站

目的

  效能調優的步驟

  按模組調優的基本方案

  效能調優的一般性原則

  效能調優的常用方案

 

效能調優的步驟

  1 衡量系統現狀(通過效能測試得到效能指標)

  2 設定調優目標

  3 定址效能瓶頸

  4 效能調優(本節內容)

  5 調優完畢後,衡量是否達到目標 

 

主要針對每個模組進行優化,前端優化,瀏覽器優化,程式碼優化,儲存優化(注意:方案不是直接套用,需結合實際業務場景來確定較為合適的方案)

每個模組的優化方案

  1 前端優化 網站業務邏輯之前的部分

  2 瀏覽器優化 減少http請求數,使用瀏覽器快取,啟用壓縮,CSS,JS位置,JS非同步,減少cookie傳輸,CDN加速,反向代理

  3 程式碼優化 多執行緒,資源複用(物件池,執行緒池),良好的資料結構,JVM呼叫,單例,cache等

  4 儲存優化 快取,固態硬碟,光纖傳輸,優化讀寫,磁碟冗餘,分散式儲存(hdfs),nosql(非結構化)

 

效能調優的一般性原則

  1 依賴資料而不是憑空猜測(第一原則) 當懷疑效能有問題時,應該通過測試,日誌,profile來分析(系統資源,程式程式碼,伺服器配置) 確定性能瓶頸

  2 忌過早優化

  3 忌過度優化

  4 效能優化是持久戰

  5 選擇合適的衡量標準,測試用例,測試環境(客觀反映效能的實際情況)

 

效能調優的常用方案

  1 快取 沒有什麼效能問題是快取解決不了的,如果有,那就再加一級快取(典型的空間換時間)

  2 併發 一個人幹不完的活,那就找兩個人幹(增加了系統的吞吐,減少了使用者的平均等待時間) 粒度(多機器,多程序,多執行緒)

    2.1 無狀態服務 採用叢集

    2.2 有狀態服務 每個節點提供同樣的資料或每個節點只提供部分資料

  3 惰性 將計算推遲到必須的時刻(很可能避免了多餘的計算,甚至根本不用計算)

  4 批量 合併,在IO(網路IO,磁碟IO)的時候,合併操作,批量操作往往能提升吞吐,提高效能

  5 使用成熟方案 空間換時間,時間換空間

  6 縮小解空間 在一個更小的資料範圍內進行計算,而不是遍歷全部資料,最常用的是索引