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