最近和幾個朋友,聊到并發和服務器的壓力問(wèn)題。很多朋友,不知道該怎麽去(qù)計算并發?部署多少台服務器才合适? 所以,今天就(jiù)來(lái)聊一聊PV和并發,還(hái)有計算web服務器的數量 的等方法。這些都(dōu)是自(zì)己的想法加上一些網上的總結,如(rú)有不對,歡迎拍(pāi)磚。
幾個概念
網站流量是指網站的訪問(wèn)量,用來(lái)描述訪問(wèn)網站的用戶數量以及用戶所浏覽的網頁數量等指标,常用的統計指标包括網站的獨立用戶數量、總用戶數量(含重複訪問(wèn)者)、網頁浏覽數量、每個用戶的頁面浏覽數量、用戶在網站的平均停留時間等。
網站訪問(wèn)量的常用衡量标準:獨立訪客(UV) 和 綜合浏覽量(PV),一般以日(rì)爲單位來(lái)衡量和計算。
獨立訪客(UV):指一定時間範圍内相(xiàng)同訪客多次訪問(wèn)網站,隻計算爲1個獨立訪客。
綜合浏覽量(PV):指一定時間範圍内頁面浏覽量或點擊量,用戶每次刷新即被計算一次。
PV計算帶寬
計算帶寬大(dà)小需要關注兩個指标:峰值流量和頁面的平均大(dà)小。
舉個例子:
假設網站的平均日(rì)PV:10w 的訪問(wèn)量,頁面平均大(dà)小0.4 M 。
網站帶寬 = 10w / (24 *60 * 60)* 0.4M * 8 =3.7 Mbps
具體(tǐ)的計算公式是:網站帶寬= PV / 統計時間(換算到S)*平均頁面大(dà)小(單位KB)* 8
在實際的網站運行過程中,我們的網站必須要在峰值流量時保持正常的訪問(wèn),假設,峰值流量是平均流量的5倍,按照(zhào)這個計算,實際需要的帶寬大(dà)約在 3.7 Mbps * 5=18.5 Mbps 。
PS:
1. 字節的單位是Byte,而帶寬的單位是bit,1Byte=8bit,所以轉換爲帶寬的時候,要乘以 8。
2. 在實際運行中,由于緩存、CDN、白(bái)天夜裡(lǐ)訪問(wèn)量不同等原因,這個是絕對情況下的算法。
PV與并發
具體(tǐ)的計算公式是:并發連接數 = PV / 統計時間 * 頁面衍生(shēng)連接次數 * http響應時間 * 因數 / web服務器數量;
解釋:
頁面衍生(shēng)連接次數: 一個頁面請(qǐng)求,會有好幾次http連接,如(rú)外部的css, js,圖片等,這個根據實際情況而定。
http響應時間: 平均一個http請(qǐng)求的響應時間,可(kě)以使用1秒或更少。
因數: 峰值流量 和平均流量的倍數,一般使用5 ,最好根據實際情況計算後得(de)出。
例子:
10PV的并發連接數: (100000PV / 86400秒 * 50個派生(shēng)連接數 * 1秒内響應 * 5倍峰值) / 1台Web服務器 = 289 并發連接數
所以,如(rú)果我們能夠測試出單機(jī)的并發連接數,和 日(rì)pv 數,那麽我們同樣也能估算出需要web的服務器數量。
還(hái)有一套通過單機(jī) QPS計算 pv 和 需要的web服務器數量的方法,目前一些公司采用這種計算方法,但(dàn)是其實計算的原理(lǐ)都(dōu)是差不多的。
QPS、PV和需要部署機(jī)器數量計算公式(轉)
術(shù)語說(shuō)明:
QPS = req/sec = 請(qǐng)求數/秒
【QPS計算PV和機(jī)器的方式】
QPS統計方式 [一般使用 http_load 進行統計]
QPS = 總請(qǐng)求數 / ( 進程總數 * 請(qǐng)求時間 )
QPS: 單個進程每秒請(qǐng)求服務器的成功次數
單台服務器每天PV計算
公式1:每天總PV = QPS * 3600 * 6
公式2:每天總PV = QPS * 3600 * 8
服務器計算
服務器數量 = ( 每天總PV / 單台服務器每天總PV )
【峰值QPS和機(jī)器計算公式】
原理(lǐ):每天80%的訪問(wèn)集中在20%的時間裡(lǐ),這20%時間叫做峰值時間
公式:( 總PV數 * 80% ) / ( 每天秒數 * 20% ) = 峰值時間每秒請(qǐng)求數(QPS)
機(jī)器:峰值時間每秒QPS / 單台機(jī)器的QPS = 需要的機(jī)器
例子:每天300w PV 的在單台機(jī)器上,這台機(jī)器需要多少QPS?
( 3000000 * 0.8 ) / (86400 *0.2 ) = 139 (QPS)
例子:如(rú)果一台機(jī)器的QPS是58,需要幾台機(jī)器來(lái)支持?
139 / 58 = 3