首頁  >  文章  >  每日程式設計  >  高並發和大流量解決方案

高並發和大流量解決方案

远方*
远方*原創
2022-04-06 13:36:13207瀏覽

1、高並發架構的相關概念

高並發概念:並發,高並發,通常是指並發存取。也就是在某個時間點,有多少個訪問同時到來。

2、高並發的問題,我們集體該關心什麼?

qps:每秒鐘請求或查詢的數量,在互聯網領域,指每秒回應請求數(http請求)吞吐量:單位時間內處理的請求數量(通常由QPS與並發數決定)回應時間,從請求發出到收到回應應花費的時間,列如係統處理一個http請求需要100ms,這個100ms激素hi系統的回應時間pv:綜合瀏覽量,即頁面瀏覽量或者是點擊量,一個訪客在24小時之內訪問的頁面的數量同一個人瀏覽你的網站的同一頁面,只記作一次pvuv:獨立訪客,即一定的時間範圍內相同訪客多次瀏覽網站,只計算為1個獨立訪客頻寬:計算頻寬大小需要關注兩個指標,峰值流量和頁面的平均大小日網站的頻寬=pv/統計時間(換算為秒)*平均頁面大小(單位kb)*8qps不等於並發連接數qps是每秒http請求數量,並發連接數是系統同時處理的請求數量峰值每秒請求數(qps)=(總pv數80%)/(6小時秒數20%)壓力測試:測試能承受的最大的並發數,測試最大承受的qps值測試工具:ab,wrk,http_loadab:可以建立多個並發線程,模擬多個訪客同時對某一url位址進行存取。它的測試目標是基於url的,因此,它即可以用來測試apache的負載壓力,耶可以測試

#3、ab工具使用的時候的注意事項

測試機器與被測試的機器要分開不要對線上的服務做壓力測試觀察測試工具ab所在的機器以及被測試的前端機的cpu,內存,網絡等都不超過最高限度的75%

4 、不同qps下的解決方案

最佳化實例:

a、qps達到100

假設關係型資料庫的每個請求在0.01秒內完成
假設單一頁面只有一個sql查詢,那麼1000ps意味著1s內完成100次請求,但是此時我們並不能保證資料庫查詢能完成100次
方案:資料庫快取層,資料庫的負載平衡

# qps達到800

假設我們使用百兆頻寬,表示網站出口的實際頻寬是8M左右
假設每個頁面只有10k,在這個並發條件下,百兆頻寬已經吃完
方案:cdn加速,負載平衡

qps達到1000

靜態html快取
qps達到2000
這個等級。檔案系統存取鎖定都變成了災難,
方案:做業務分離,分散式儲存

5、高並發解決方案案例

流量最佳化:防盜鏈處理
前端最佳化:減少http請求,新增非同步請求,啟用瀏覽器緩存,檔案壓縮,cdn加速,建立獨立的圖片伺服器
服務端最佳化:頁面靜態化,並發處理,佇列處理
資料庫最佳化:資料庫快取,分庫分錶,分區操作(可以使用工具完成),讀寫分離,負載平衡
web伺服器最佳化:負載平衡(利用反向代理,lvs實現負載平衡)

以上是高並發和大流量解決方案的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn