寬帶、內存、CPU、硬盤,先從寬帶說起,寬帶不足后邊都白扯。
服務器寬帶
服務寬帶:1兆=128kb/s
例如:頁面加載(靜態數據+動態數據)需要128kb,那么QPS最大只能是1;
寬帶不足的情況下:網頁加載轉圈圈。
解決:所有靜態數據js、圖片、視頻等放到第三方管理(七牛云、阿里云),將寬帶壓力交給第三方同時提供了CDN;
- 動態數據就是接口占用寬帶就非常少了。-
- cdn會將數據緩存到全國各地節點中,幫助減少傳輸過程中的帶寬損耗。
部署的時候將html、js、img所有靜態資源都交給七牛云管理
流程:客戶端直接從七牛云訪問html、css、js等所有靜態資源,動態數據通過ajax調用服務器端。
寬帶總結
以上的案例:靜態界面在服務器端保存的話,128kb/s,一秒只能一個用戶訪問;
如果將靜態界面交給七牛云管理后,一秒可以處理128個請求,因為動態數據占寬帶很少{code:200, msg:搶購成功}也才不到1kb大小。
如果:秒殺接口(以并發最大的接口算),假設預計秒殺最高能達到1萬人,至少寬帶80兆以上。
寬帶計算公式:并發人數 / 128kb = 需要的寬帶 1萬人 / 128kb = 78兆
0兆寬帶大概600塊錢
80兆寬帶費大概需要6000塊錢
服務器內存/CPU
服務器內存具體配置多少,必須經歷線上壓力測試,根據測試報告再進行配置。
正常網站最少也得4核8GB + 集群方式。
螞蟻課堂為4核8G內存的配置可以達到100并發。
CPU
1核:最多只有兩個線程同時執行。
例如:java線程池開了10個線程,1核的配置最多只會創建兩個線程同時執行。
結論:最少得4核CPU,這樣能開啟8個線程同時執行。-- 也可以買更多核數量
內存/CPU結論
首先因為接口邏輯復雜度不同,所以需要經過線上專業的壓測,根據測試結果以及預計并發量再做調整(擴大配置或增加集群節點)。
以服務器為4和8g內存為例:
首先一臺服務能抗多少并發是和接口業務邏輯有關的,比如某接口業務比較復雜或IO比較多,將會占用資源比較大,QPS可能也就100左右。
如果預計最高并發會為300QPS,那么就開三臺相同配置服務器做集群。
服務器硬盤
使用硬盤的場景:
1. 寫日志; -- 如果只寫不刪的情況下會導致硬盤占滿
2. 作為db數據庫;
結論:看系統日志等文件長時間會占用多大空間來決定硬盤大??;機械硬盤IO效率低,SSD固態硬盤IO操作效率高。
服務器配置舉例!
要求:秒殺接口達到2000并發;
壓測報告結果:秒殺接口壓力測試單臺服務器4核8G,每秒最多支持500并發;
那么就需要搭建4臺秒殺服務器做集群或增大服務器配置后再進行壓力測試,最后再根據壓測報告對應調整服務器配置。
在網關層進行限流,QPS達到2000時進行服務降級。
剛開始流量不是很大的話可以選擇2核4G 5M的服務器,后面不夠可以升級配置,不影響項目運行