web中的高併發
阿新 • • 發佈:2019-01-24
併發的問題,我們具體該關心什麼?
講真話,高併發是個比較抽象的概念。很難有一個統一的可衡量的標準。哪麼有一些其它維度的標準指標來衡量系統的效能嗎?搬出以前計算機課程裡邊的一些指標來跟大家聊聊。
先宣告幾個概念,別打瞌睡。
QPS(TPS):每秒鐘 request/事務 數量,在網際網路領域,指每秒響應請求數(指http請求);
吞吐量:單位時間內處理的請求數量(通常由QPS與併發數決定);
響應時間:系統對一個請求做出響應的平均時間。例如系統處理一個HTTP請求需要200ms,這個200ms就是系統的響應時間(我認為這裡應該僅包含處理時間,網路傳輸時間忽略)。
這裡一定要注意呃,QPS ≠ 併發數
併發是指,某個時刻有多少個訪問同時到來。QPS是指秒鐘響應的請求數量。那麼這裡就肯容易推算出一個公式:
QPS = 併發數 / 平均響應時間
後面我們的分析都是圍繞這個公示來進行展開,沒明白的再回味一下。
現在我們來假設一個場景:既然QPS是每秒鐘處理的http 請求數量。那麼1s = 1000ms。假設我們當前一個http請求伺服器處理完成需要100ms(即那麼 平均響應時間 = 100ms )。那麼它1s鍾可以處理10個請求。也就是說 qps = 10。推算出 併發數 = 10
常常我們被問到高併發的問題,其實從某種程度上來說,他們是想問怎麼提高現有程式的效能。現在我們基於上面的假設,來進行分析。假設現在有個系統性能上就是我們上面的假設,它每天有 300萬pv,執行在單機上(當然經常宕機),按照上面的系統性能資料,給出優化解決方案。