網(wǎng)站優(yōu)化
-
前端優(yōu)化
- 合并js靴迫,css濒蒋,圖片等資源盐碱,減少http請求次數(shù)
- 開啟http緩存
- 使用CDN緩存資源和靜態(tài)頁面把兔,CDN最好使用獨立域名(防止cookie占用流量,一個域名瀏覽器有并發(fā)請求限制)
- css放在文件頭部瓮顽,js放在文件尾部县好。為了加快顯示頁面
- 盡量減少cookie的數(shù)據(jù),數(shù)據(jù)盡量放在session服務(wù)中暖混,減少通信數(shù)據(jù)量
-
后端優(yōu)化
依次按下面步驟來優(yōu)化后端- 把應(yīng)用服務(wù)缕贡、數(shù)據(jù)庫服務(wù)、文件服務(wù)部署在獨立的服務(wù)器
- 數(shù)據(jù)庫增加主備拣播,增加數(shù)據(jù)讀取效率和容災(zāi)能力
- 增加緩存晾咪,減少數(shù)據(jù)庫訪問壓力
- 如果業(yè)務(wù)比較復(fù)雜的話,對業(yè)務(wù)進行縱向拆分贮配,分成多個應(yīng)用谍倦,獨立部署
- 搭建應(yīng)用服務(wù)器集群。使用DNS泪勒、Nignx反向代理昼蛀,LVS(通過keepalived實現(xiàn)lvs主備,提供高可用性圆存;或者使用ali-lvs集群)
- 搭建分布式緩存集群叼旋。使用Memcached或者Redis
- 數(shù)據(jù)庫分庫分表(單表比較大的話會影響存取效率,太大的話甚至無法存嚷僬蕖)夫植。使用TDDL
- 使用分布式文件系統(tǒng)存儲更大、更多的文件油讯,在文件比較大時偷崩,分布式文件系統(tǒng)效率也更高。使用OSS
- SOA撞羽,水平拆分業(yè)務(wù),使用分布式服務(wù)治理應(yīng)用衫冻。使用Dubbo或者HSF
- 使用分布式消息隊列集群诀紊,使用分布式服務(wù)后,需要使用消息隊列來進一步提升可用性隅俘、效率邻奠、削峰等。使用MetaQ
當出現(xiàn)性能問題的時候我們該怎么做为居?
一碌宴、CPU過高
1、 us過高
- 死循環(huán)
- 大計算
2蒙畴、sy過高
- 進程間切換
- 線程間切換
- 鎖爭用
二贰镣、內(nèi)存消耗過高
1呜象、 及時釋放不必要的對象
2、 使用對象緩存池緩沖
3碑隆、 采用合理的緩存失效算法(關(guān)注弱引用恭陡、幽靈引用)
三、磁盤IO過高
1上煤、 異步讀寫文件
2休玩、 批量讀寫文件
3、 使用緩存技術(shù)
4劫狠、 采用合理的文件讀寫規(guī)則
四拴疤、網(wǎng)絡(luò)
1、增加寬帶流量
五独泞、資源消耗不多但程序運行緩慢
1呐矾、使用并發(fā)包,減少鎖競爭
2阐肤、對于必須單線程執(zhí)行的使用隊列處理
3凫佛、大量分布式處理
六、未充分利用硬件資源
1孕惜、 修改程序代碼愧薛,使用多線程處理
2、 修正外部資源瓶頸衫画,做業(yè)務(wù)拆分
3毫炉、 使用緩存