高併發分析

目錄php

概念

高併發一般是指咱們提供的系統服務可以同時處理不少請求。sql

瞭解下概念:數據庫

  • QPS(TPS):每秒鐘reques/事務 數量,指每秒應對的請求數(http請求);
  • 吞吐量:單位時間內處理的請求數量(一般由QPS與併發數決定);
  • 響應時間:系統對一個請求作出響應的平均時間。例如系統處理一個HTTP請求須要200ms,這個200ms就是系統的響應時間(我認爲這裏應該僅包含處理時間,網絡傳輸時間忽略)。
  • 併發是指,某個時刻有多少個訪問同時到來,處理多個任務的能力,不必定要同時
  • 並行是同時刻在多個cpu核心發生的事件,併發是單個cpu核心在一個時間段內交替發生的事件

QPS = 併發數 / 響應時間後端

二八原則:80%的業務量在20%的時間裏完成緩存

場景

假定總併發請求數量爲10000,每一個請求的處理時間爲t秒,服務器一次性能夠處理的請求數量爲n個,那麼處理完全部的請求須要用時爲T性能優化

T = (10000 / n ) * t服務器

反過來計算每秒處理多少請求則網絡

QPS = (1 / t ) * n併發

假設咱們天天80%的訪問集中在20%的時間裏(峯值),若是天天有300萬的pv,而 咱們的單臺機器的QPS爲58,運行在單機上(固然常常宕機),按照上面的系統性能數據,給出優化解決方案。負載均衡

qps = ( 300W x 0.8 ) / ( 24x3600x0.2 ) = 139

方案一:加機器

既然一臺機器搞不定,咱們就多上幾臺機器。這就涉及到db主從、讀寫分離、負載均衡等技術。

它的原理就是分流,把之前集中的壓力分散開來。改方案見效快,靈活,實踐起來也更快。

因此機器上須要 139/58 臺

方案二:增長單機性能

單機到底性能可以增長到一個什麼程度,這取決於你的機器配置,也取決於你的服務到底有多複雜。

常見好比:提升機器cpu、memory(能夠提升系統同時處理請求的數量);php啓用opcache緩存;運用各類數據緩存技術;代碼性能優化;數據庫優化;運用常駐內存的技術;

分析

假設如今須要你設計個系統,來分析當前產品各個接口的qps,及當前系統的qps狀況。

qps = 時間段內請求數/時間段

假設咱們以每分鐘或者每小時來運算。首先對每次請求記錄日誌包含響應時間、響應結果(每次請求用一個惟一標識標記)記錄到日誌文件,後端起個進程對日誌文件讀取,將數據發送到隊列系統,另外一方隊列消費,落地到數據庫或者nosql,接下來

就是對這些數據進行分析,不難分析qps吧,這樣的日誌系統也能夠做爲全局日誌系統,供公司各個業務線查詢日誌,也能夠起到監控預警的做用(好比說請求超時、訪問量激增異常)。爲何不直接入庫分析,這樣的方案大流量下不會形成性能問題。

【feek 指定行指針;fgets 獲取行內容;feof 判斷是否是到達末尾】

相關文章
相關標籤/搜索