這篇文章主要介紹了關於如何解決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 bytes Requests 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] received Connection Times (ms) min mean[+/-sd] median max Connect: 0 1 1.4 1 38 Processing: 42 114 34.2 103 204 Waiting: 41 113 33.9 102 204 Total: 43 115 34.5 104 207 Percentage 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請求
新增非同步請求
啟用瀏覽器快取
#伺服器最佳化:
# 頁面靜態化
並發處理
佇列處理
資料庫最佳化:
資料庫快取
分庫分錶,分割區操作
#以上就是本文的全部內容,希望對大家的學習有所幫助,更多相關內容請關注PHP中文網! 相關推薦:
以上是如何解決PHP的高併發和大流量的問題的詳細內容。更多資訊請關注PHP中文網其他相關文章!