我想應該不少網站主都會有這樣的疑問,自己的網站需要什麼樣等級的伺服器才能承受網站的流量呢?
到底應該租什麼等級的伺服器呢? 主機出租商的方案所寫的CPU、RAM、月流量到底要挑選哪一個?
Aidec最近也在想這個問題,於是上網搜尋了一番,發現到論壇上的答案幾乎都是[不同情況結果不一樣],不然就只有一些很零散的資訊。
在我閱讀數十篇國內外相關文章,提取有用的部分,並自行實驗後得出一些評估的小心得,供大家參考看看。
當然,的確像論壇所說的一樣,不同的情況環境,結果不一樣。這邊是以一般購物網站、形象網站作為評估。
伺服器評估方式
這邊提供幾種評估方式,例如:需要多少的CPU、記憶體(RAM)、頻寬、在線人數、併發量。
在評估以前我們必須要有幾項參數才能進行計算:
每日瀏覽量(PV)
平均瀏覽時間
平均瀏覽頁數
假如網站是自己的,這幾個參數可以用google analytics 查詢,或者可以用similarweb來查詢。
需要多少記憶體
如果你是用nginx + php-fpm 的話,一個連線約占12~35MB,一般來說佔25MB左右,所以假設有100個連線,就約佔2.5GB的記憶體。(Apache也差不多是這個數字)
除了連線會佔記憶體外,系統本身內建的服務大約會耗50MB的記憶體,其他服務也會消耗記憶體,例如mysql、redis...。如果網站流量太大的話,建議將mysql、redis這類服務單獨使用伺服器,不要跟web server放一起。
圖片最好也不要跟web server放在一起,畢竟一個網站請求最頻繁的就是圖片了。
需要多少頻寬
根據我(很隨意)的統計,一個電商網站瀏覽一頁大概平均需要消耗4MB的流量,一般我們網速都會用Mbps來表示。
1Mbps = 0.125MB/s ,根據這公式可得知,假如你的頻寬有32Mbps的話,可以在1秒內處理一個使用者。
所以假如你想要可以承受100個使用者同時瀏覽的話,需要32*100=3200Mbps的頻寬。
頻寬會影響網站讀取速度,所以頻寬太小的會網站讀起來會越慢,若太多人同時訪問,還會塞車。
一個好的網站,在未開啟快取的情況下,一頁最好不要超過1.5MB。
(優化技巧:可以使用壓縮圖片或快取來降低網站流量,可以通過CDN、圖片分流來加速)
需要多少流量
假如你是租用虛擬主機或VPS,主機商都會告訴你可以用多少流量,例如:100GB/月
這個就很好計算了,根據我們上面的範例電商網站一頁平均消耗4MB流量,也就是說一個訪客瀏覽一頁就消耗4MB的流量,一天有1000個訪客,每人瀏覽3頁的話
每日流量 = 1000(人)*3(頁)*4(MB) = 12000MB (大約12GB)
需要多少併發量
併發量 = 1秒內能同時處理多少個請求
併發量計算公式(80/20法則)
公式論點:一天8成的流量會集中在2成的時間。
舉例:假設一天有1W訪客,每位平均訪問5頁,等於一天有5W PV(page views)(瀏覽量)
接著我們用小學數學將數值套用公式,可以得出
一天集中訪問時間 = 24 * 0.2 = 4.8 小時
(5W(瀏覽量) * 0.8) / 4.8 = 8333 併發/小時 = 2.31 併發/秒
峰值併發約為平常的3倍 (根據經驗,實際依系統應用不同)
峰值併發 = 2.31 * 3 = 6.93
假如你的系統有做秒殺活動或是訂票系統、課程報名系統,這種短時間內有大量人湧入的,併發量會遠遠大於此值。
例如:返鄉搶票,可能1分鐘就會有數十萬併發了。
需要多少CPU
我們可以通過以下公式估算CPU的處理能力
每秒最大處理請求 = CPU(核心數) / 平均響應(秒)
平均響應可以用chrome的console Network 去查看響應時間。(如圖)
平均響應建議可以用10次的平均值來算,應該會比較準確。
實際舉例:
以上圖來看響應時間為64ms,等於 0.064 秒。假設我們的伺服器有2核的話
每秒最大處理請求 = 2 / 0.064 = 31.25
以這公式來看,核心數越多能處理的請求就翻倍,但實際上不是這樣的。
譬如說8個8核的伺服器處理能力,會比1個64核的伺服器能處理更多請求。
根據上一段併發量所推導出 5萬PV 大約需要2.31併發,因此我們可用這樣去回推出我們所需的CPU。
響應時間的決定因素
響應時間的快慢,主要取決於CPU的性能、程式的複雜度(是否需要很多計算、連線資料庫...)
同時在線人數估算
公式:
同時最大在線人數 = 每秒最大處理請求 * 60 * 每分鐘點擊的頻率
在剛剛我們已經得知如何計算每秒最大處理請求,現在只差每分鐘點擊的頻率公式
每分鐘點擊的頻率 = 平均在線時間 / 平均訪問頁面
實際舉例:
假設平均在線時間為 5分10秒,平均訪問頁面為4.1頁。
每分鐘點擊頻率 = ( ((5*60)+10)/60 ) / 4.1 = 1.26
我們以剛剛CPU那段的參數套入公式,可得出
同時最大在線人數 = 31.25 * 1.26 *60 = 2362
寫了這麼多想必你大概有個底了,但這些公式實際會受你系統的影響,也會受木桶理論(短板理論)影響。
也就是說,實際性能會以CPU、RAM、頻寬...的某項最低值為主。
補充一點,如果訪問量過多的話,就得用附載均衡的方式,來分散處理。如果都集中一台的話,很容易會造成伺服器崩潰。至於為什麼?大概是伺服器也有情緒吧~ 就像都把工作丟給同一個人做,就算他處理的來,他心情可能也會不好 哈~ (隨便說的)
如果您有更好的評估方式,歡迎告訴我^^
文章轉載或引用,請先告知並保留原文出處與連結!!(單純分享或非營利的只需保留原文出處,不用告知)
原文連結:
https://blog.aidec.tw/post/server-needed-for-your-website
若有業務合作需求,可寫信至: opweb666@gmail.com
創業、網站經營相關內容未來將發布在 小易創業筆記