PHP 高併發、大流量

php如何解決網站高併發和大流量的問題?php

 

高併發架構相關的概念:css

併發:併發的訪問,某個時間點,有多少個訪問同時到來。html

qps:每秒鐘請求或查詢的數量,在互聯網領域,指每秒響應請求數(指HTTP請求)。前端

吞吐量:單位時間內處理的請求數量(一般由qps和併發數決定)。web

響應時間:從請求發出到收到響應花費的時間,叫作響應時間。sql

PV:綜合瀏覽量(page view),即頁面瀏覽量或者點擊量,一個訪客在24小時內訪問的頁面數量。同一我的瀏覽網站的同一個頁面,只記作同一次PV。數據庫

UV:獨立訪客,必定時間內,相同訪客屢次訪問一個網站,記作1個獨立訪客。瀏覽器

帶寬:計算帶寬大小,須要關注2個指標,峯值流量和頁面的平均大小。緩存

日網站帶寬 = PV/統計時間(換算到秒)*評價頁面大小(單位KB)*8服務器

峯值:通常是平均值的倍數,根據實際狀況來定。

高併發:一個系統的日PV在千萬以上,有多是一個高併發系統。

 

須要注意:

qps不等於併發鏈接數。qps是指每秒http請求數量,併發鏈接數是系統同時處理的請求數量

峯值每秒請求數(qps) = (總PV數*80%)/(6小時秒數*20%)   -------  80%的訪問量集中在20%的時間

 

對於qps來講,應該作一些壓力測試,爲何作這樣一個測試?由於對於咱們服務器來講,咱們應該知道這臺服務器最大可以承受多少qps,而咱們網站PV一天是多少能夠計算出峯值qps,咱們能夠根據須要來進行相應的一個優化,並非說咱們感受到了網站的請求有點大了,再進行優化。因此壓力測試是幫助咱們測試能承受多大的併發,以及測試最大承受的qps值。

 

那麼如何作壓力測試:

經常使用的性能測試工具:ab、wrk、http_load。

 

qps達到極限:

隨着qps的增加,每一個階段須要根據實際狀況來進行優化,優化的方案與咱們的硬件的條件、網絡帶寬息息相關。

qps達到50--------------能夠稱之爲小型網站,通常的服務器就能夠應付。

qps達到100-------------假設關係型數據庫的每次請求在0.01秒完成;假設單頁面只有一個sql查詢,那麼100qps意味着1秒鐘完成100次請求,可是咱們不能保證數據庫查詢能完成100次。方案:數據庫緩存層,數據庫的負載均衡。

qps達到800-------------假設咱們使用百兆帶寬,意味着網站出口的實際帶寬是8M左右。假設每一個頁面只有10k,在這個併發下, 百兆帶寬已經吃完。方案:CDN加速,負載均衡。

qps達到1000------------假設咱們使用Memcache來緩存數據庫查詢數據,每一個頁面對memcache的請求遠大於直接DB的請求。   方案:靜態html緩存

qps達到2000------------文件系統訪問鎖都成了災難、方案:作業務分離,分佈式緩存。

qps達到不一樣階段,就會面臨不一樣的瓶頸。針對不一樣瓶頸,有不一樣的解決方案。

 

 

 

高併發解決方案處理:

從流量方向進行優化:防盜鏈處理(把惡意的請求驅除門外)、

從前端優化:減小HTTP請求(把css、js文件、圖片整合一塊兒,請求一次)、添加異步請求、啓用瀏覽器緩存和文件壓縮、CDN加速(把前端的一些文件、資源都放到CDN中)、創建獨立的圖片服務器、

從服務端優化:頁面靜態化、併發處理、隊列處理、

從數據庫優化:數據庫緩存、分庫、分表、分區操做。讀寫分離、負載均衡。

從web服務器優化:負載均衡、

相關文章
相關標籤/搜索