這篇文章主要介紹了關於如何解決PHP的高並發和大流量的問題,有著一定的參考價值,現在分享給大家,有需要的朋友可以參考一下
基礎知識
TFS : 輸送量 (輸送量是指系統在單位時間內處理請求的數量)
RT : 回應時間 (從請求發出到收到回應時間)
並發數 : 在一段時間內同時訪問網站的使用者數
QPS : 每秒查詢率 (每秒請求或者相應數,在互連網領域,值每秒相應請求數(值HTTP請求))
PV : page view 頁面訪問量
UV : user view 使用者訪問量
一般來說,日pv(訪問量)大於1000萬就可以算做高並發
日網站頻寬 = PV / 統計時間 (秒) * 頁面平均大小(KB) * 8
壓力測試
推薦使用apache內建的壓力測試工具 ab
使用方法:進入apache目錄,在目前的目錄下運行(windows):
ab.exe -n 總請求量 -c 並發請求量 http://請求地址
請求結束後我們可以得到資料:
Server Software: Apache/2.4.18伺服器類型Server Hostname: eko.xiao.com 網域名稱Server Port: 80連接埠Document Path: /index.html 請求檔案Document Length: 529 bytes檔案大小Concurrency Level: 100並發數Time taken for tests: 1.240 seconds總回應時間Complete requests: 1000請求數Failed requests: 0失敗次數Total transferred: 800000 bytes總共傳輸資料量HTML transferred: 529000 bytesRequests per second: 806.41 [#/sec] (mean)QPS(每秒查詢率)Time per request: 124.007 [ms] (mean)平均回應時間Time per request: 1.240 [ms] (mean, across all concurrent requests)Transfer rate: 630.00 [Kbytes/sec] receivedConnection Times (ms) min mean[+/-sd] median maxConnect: 0 1 1.4 1 38Processing: 42 114 34.2 103 204Waiting: 41 113 33.9 102 204Total: 43 115 34.5 104 207Percentage of the requests served within a certain time (ms) 50% 104 66% 117 75% 133 80% 136 90% 173 95% 197 98% 204 99% 204 100% 207 (longest request)
最佳化
隨著QPS增長,每個階段需要做不同的最佳化措施,最佳化的方案也與硬體,網路條件相關
QPS達到50
無需最佳化
QPS達到100(資料庫層)
假設資料庫每次查詢0.01S,每個頁面只有一個sql查詢,那麼此時已經是資料庫極限
最佳化措施:資料庫緩衝,資料庫負載平衡,redis,memcache
QPS達到800 (網路頻寬)
假設每個頁面只有10K,那麼在800QPS下,頻寬已經耗盡
最佳化措施:CDN加速 負載平衡
QPS達到1000
最佳化措施:靜態頁面
流量最佳化:
防盜鏈處理
前端最佳化:
減少HTTP請求
添加非同步請求
啟用瀏覽器緩衝
伺服器最佳化:
頁面靜態化
並發處理
隊列處理
資料庫最佳化:
資料庫緩衝
分庫分表,分區操作
以上就是本文的全部內容,希望對大家的學習有所協助,更多相關內容請關注topic.alibabacloud.com!