整體思路:優化代碼,分離業務邏輯,數據庫,最後加服務器等;redis
逐步解決方案,具體操做以下:sql
(1).頁面的動靜分離:數據庫
頁面生成了靜態的緩存,頁面中的圖片、JS等靜態資源推CDN;緩存
動態數據,能作緩存的作緩存(redis,memache);不能作緩存的,開始從代碼層面下着手;服務器
(2).代碼層面的優化:負載均衡
找到執行時間較長的腳本,着手分析,是否能夠優化業務邏輯;性能
若是業務邏輯已經沒法優化,考慮是否是數據庫操做執行時間較長,若是是,開始從數據庫層面着手;優化
(3).數據庫層面的優化:中間件
找到操做頻繁,看是夠可以優化sql語句,如連表查詢等等;隊列
若是仍是到不到要求,對於操做頻繁且數據庫操做較大的數據,進行讀寫分離;
若是速度仍是達不到要求,考慮是否是單張數據表的問題了;
(4).數據表層面的優化:
若是是數據表中數據量過大,致使查詢速度慢的:數據分片,橫向切表;
若是是數據表查詢數據過多,致使查詢數據慢的,縱向切表,使熱點數據和非熱點數據分離;
若是速度仍是沒有到達要求,那麼恭喜你,你已經成功的積累了至關的用戶量了,加服務器吧,作負載均衡吧。
(5).升級硬件,加服務器,作負載均衡。
補充:
1.針對非及時響應的業務,能夠作隊列,進行延時處理,以便後期統一處理;例如能夠委託中間件(就像老闆請的祕書),性能提高體如今寫入數據時鎖表時間的節省;
2.針對臨時的熱點活動類型業務,爲了防止崩潰,但是使用獨立的服務器,避免因爲活動服務器的崩潰而致使其餘主要業務服務器的崩潰。