應用反映緩慢,按出現問題的情況分:
一,硬件資源沒充分利用
1.程序問題,查程序是否有鎖的競爭
2.程序沒有充分利用硬件資源,本來有雙核的,卻使用單線程;沒有用緩存;數據庫鏈接沒有用緩存池
二,硬件資源有充分利用,但利用得不正確
1,程序中線程空循環,沒有等待,而造成CPU的SU時間過多
2,程序中線程切換頻繁,造成CPU的SY時間過多
3,程序向大文件寫內容或寫文件過于頻繁,造成CPU的WA時間過多
4,程序用在和數據庫建立鏈接的網絡時間過多,造成CPU的DA時間過多
三,硬件資源利用充分,且利用的方式正確
1,垂直伸縮:加內存,升級為多核CPU
2,水平伸縮:增加服務器
1)如在增加的服務器上部署完整的應用,則稱:集群
2)如在增加的服務器上有部署應用的部份組件,EJB,則稱為分布式
3)多臺服務器的分配策略:哪臺空閑則分向哪臺,如是取圖片之類的靜止內容,則固定分向某臺
4)增加為多臺后,應用要做相應的調整:重寫HTTP SESSION,用MEMCACHE實現;使用分布式緩存MEMCACHE;上傳的文件要放在特定的文件服務器中,文件服務器做分布式
四,由于所依賴的外部系統,如數據庫,反映緩慢所導致
1,數據庫的鏈接數不能水平伸縮,減少與數據庫打交道的次數
1)頁面緩存
2)頁面部件緩存
3)數據緩存
4)按功能拆分數據庫,如商品一個庫,用戶一個庫
2,當數據量龐大時,查詢速度降低
1)折分表,安裝多一臺數據庫服務器,再復制一個相同的數據庫
2)多個數據庫采取的策略為:一個數據庫作主數據庫,只進行寫操作,另外一個數據庫作為從庫,只進行讀操作,兩者中的數據可進行對稱復制或非對稱復制