應用程式層面的最佳化
來源:互聯網
上載者:User
應用程式層面的最佳化 效能通常的瓶頸是緩慢的查詢,鎖,CPU飽和,網路延遲和檔案I/O
尋找常見問題
1.各個機器上的CPU,磁碟,網路和記憶體資源的使用方式。注意檢查設定檔
2.應用是否真正使用了所取得的資料
3.應用和資料庫是否做了該由對方做的事情
4.應用裡執行了太多的查詢
5.應用無必要的串連到MySQL
6.串連到MySQL的次數太多
7.做了太多不必要的查詢
8.是否使用了串連池
9.是否使用了永久性串連
10.是否在沒有使用的時候,開啟著串連
web伺服器 Apache使用注意事項
1.不要把Apache用作靜態內容的服務,可以選擇lighttpd和nginx
2.使用緩衝Proxy 伺服器,squid和varnish,可以緩衝大部分頁面,可以通過ESL技術把頁面上小塊動態部分放在緩衝的靜態部分裡
3.對動態,靜態內容設定到期策略
4.開啟gzip壓縮
5.不把Apache上的長距離串連配置為Keep-Alive模式。可以用一個服務端的代理處理Keep-Alive的串連,在Apache與代理之間可以設定為Keep-Alive,因為代理只使用幾個串連從伺服器上讀取資料
緩衝 分為:主動式快取和被動緩衝
被動緩衝只儲存資料和返回資料,比如memcached
主動式快取找不到請求資料時,一般會把請求傳遞給應用的某一部分,產生所請求的內容,然後儲存這部分資料,並返回給用戶端,比如squid
應用程式層面的緩衝:
本機快取,比較小,只存在於請求處理時的進程記憶體空間裡,避免對同一資源多次請求。只是應用程式代碼裡的一個變數或一個散列表
分布式記憶體緩衝,memcached,有效使用方法是“多取”操作
磁碟緩衝,慢速,持久性對象適合做磁碟緩衝。常用技巧用404錯誤處理過程來捕捉沒命中的緩衝
緩衝控制策略
存活時間,每個緩衝對象帶有一個作廢日期,用一個刪除進程定時檢查該資料的作廢時間是否到達,可以刪除或者更新
顯式作廢,當緩衝裡的資料過於陳舊,可以直接將該資料標誌作廢或者用新的資料替換舊快取資料(儲存對象到緩衝時,還有儲存資料所依賴的版本號碼或時間戳記)
讀時作廢,儲存一些資訊來判斷從緩衝裡讀取的資料是否已經作廢,隨著時間的增長,開銷是固定的