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