首頁  >  文章  >  後端開發  >  如何解決PHP的高併發和大流量的問題

如何解決PHP的高併發和大流量的問題

不言
不言原創
2018-07-14 11:44:096229瀏覽

這篇文章主要介紹了關於如何解決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程式碼寫的規範,總結的很全

###PHP的安裝以及與apache整合的介紹#########

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

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