概述
設計系統架構中最核心 的幾個要素包括:性能,可用性,伸縮性,擴展性和安全性,而性能又是其中最為重要的,本篇簡要說下網站性能優化方面所需做的一些事情;
1. 網站性能問題概要
2. 網站性能測試
站在開發、測試人員角度,性能測試的主要指標:響應時間、併發數、吞吐量、服務器各性能指標;
3. 性能優化
根據性能測試,定位產生性能問題的具體原因,找到瓶頸點,逐步優化;
一般性能優化分為Web前端性能優化、應用服務器性能優化、存儲服務器性能優化(數據庫優化的太多點了,後面再講)
Web前端性能優化
1. 瀏覽器訪問優化
2. CDN加速
上面說了,CDN的本質仍然是緩存,將數據緩存在離用戶最近的機房,提升訪問速度,降低中心機房服務器的壓力;
CDN能夠緩存的一般都是靜態資源,如圖片,文件,視頻,CSS,JS等,將訪問頻度高的靜態資源放到CDN中;
3. 反向代理
推薦用nginx來做緩存和負載,跟tomcat或其他中間件做動靜分離。
應用服務器性能優化
1. 分佈式緩存
網站性能優化第一定律:優先考慮使用緩存優化性能
緩存的本質是內存Hash表,數據以Key/Value的形式存儲在Hash表中,時間複雜度O(1),Hash表存儲如下圖所示:
只要是緩存,就會涉及到緩存未命中與緩存失效問題,因此,緩存中的數據一般都是讀取比例很高,很少變化的數據;
2. 異步操作
可使用消息隊列將請求調用異步化,發送的請求發送給消息隊列後立即返回,再由消息隊列的消費者進程從消息隊列中獲取數據,異步寫入數據庫;
在高併發情況下,使用消息隊列,能夠有效降低數據庫服務器壓力,降低用戶端響應延時;
消息隊列可以消除高併發下的訪問高峰,消峰效果如下圖所示:
3. 使用集群
在高併發下,可使用負載均衡技術構建應用服務器集群,將請求分發到多臺應用服務器來處理,降低單臺服務器壓力,提升響應速度;
4. 代碼優化
存儲服務器性能優化
在很多情況下,磁盤的訪問速度成為整個系統的瓶頸,而且磁盤中的數據是網站最重要的資產,故磁盤的容錯性和可用性都至關重要;
- 適當使用SSD;
- 合理使用RAID(RAID0,RAID1,RAID10,RAID5,RAID6等)
- 合理使用HDFS等分佈式文件系統
後面會分享更多數據庫優化的一些點,怎麼從其他角度去優化的內容,感興趣的朋友可以關注下~
閱讀更多 波波說運維 的文章