高並發大流量專題---1、高並發大流量解決方案總結


高並發大流量專題---1、高並發大流量解決方案總結

一、總結

一句話總結:

可以根據 前后端數據庫順序 及 QPS數量來 決定優化方法

 

1、PHP如何解決網站大流量與高並發的問題?

流量優化+前端優化:比如防盜鏈處理、減少HTTP請求、添加異步請求、CDN加速、建立獨立圖片服務器、啟用瀏覽器緩存和文件壓縮等等
服務端優化+Web服務器優化:比如頁面靜態化、並發處理、隊列處理、負載均衡等等
數據庫優化:比如數據庫緩存、分庫分表、分區操作、讀寫分離、負載均衡等等

 

2、我們說的高並發是什么?

不是操作系統中的並發:在操作系統中,是指一個時間段中有幾個程序都處於已啟動運行到運行完畢之間,且這幾個程序都是在同一個處理機上運行,但任一個時刻點上只有一個程序在處理機上運行。
某個時間點的並發訪問量:上面的定義明顯不是我們通常所言的並發,在互聯網時代,所講的並發、高並發,通常是指並發訪問。也就是在某個時間點,有多少個訪問同時到來。
日PV在干萬以上:通常如果一個系統的日PV在干萬以上,有可能是一個高並發的系統

 

3、高並發解決方案?

技術:各種優化、緩存、負載均衡等技術
機器堆:有的公司完全不走技術路線,全靠機器堆,有錢,任性

 

4、高並發的問題中,需要了解的一些名詞?

qps、吞吐量、響應時間、pv、uv、帶寬、日網站帶寬、峰值

QPS:每秒響應請求數(指HTTP請求):每秒鍾請求或者查詢的數量,在互聯網領域,指每秒響應請求數(指HTTP請求);
吞吐量:單位時間內處理的請求數量(通常由QPS與並發數決定)
響應時間:從請求發出到收到響應花費的時間。例如系統處理一個HTTP請求需要100ms,這個100ms就是系統的響應時間
PV:綜合瀏覽量(Page View),即頁面瀏覽量或者點擊量,一個訪客在24小時內訪問的頁面數量;同一個人瀏覽你的網站同一頁面,只記作一次PV
UV:獨立訪客(UniQue Visitor),即一定時間范圍內相同訪客多次訪問網站,只計算為1個獨立訪客
帶寬:計算帶寬大小需關注兩個指標,峰值流量和頁面的平均大小
日網站帶寬=PV/統計時間(換算到秒)*平均頁面大小(單位KB)*8
峰值一般是平均值的倍數,根據實際情況來定
峰值每秒請求數(QPS)=(總PV數*80%)/(6小時秒數*20%)

 

5、日網站帶寬如何計算?

帶寬:計算帶寬大小需關注兩個指標,峰值流量和頁面的平均大小
日網站帶寬=PV/統計時間(換算到秒)*平均頁面大小(單位KB)*8

峰值一般是平均值的倍數,根據實際情況來定

 

6、QPS 等於並發連接數 么?

不等於:QPS是每秒HTTP請求數量,並發連接數是系統同時處理的請求數:一個連接里面可能有多個http請求

 

7、峰值每秒請求數(QPS) 如何計算?

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

 

8、壓力測試是什么?

最大並發:測試服務器集群(或單台)能承受的最大並發
QPS值:測試服務器集群(或單台)最大承受的QPS值

一般了解單台服務器能夠承受的QPS是多少

 

9、常用性能測試工具?

ab、wrk.http load、Web Bench、Siege、Apache JMeter
ab:全稱是apache benchmark,是apache官方推出的工具
ab原理:創建多個並發訪問線程,模擬多個訪問者同時對某一URL地址進行訪問。它的測試目標是基於URL的,因此,它既可以用來測試apache的負載壓力,也可以測試nginx、lighthttp、tomcat、IIS等其它Web服務器的壓力。

 

10、ab(apache benchmark)是apache官方推出的工具,那么它能夠測試nginx么?

能:它的測試目標是基於URL的:ab創建多個並發訪問線程,模擬多個訪問者同時對某一URL地址進行訪問。它的測試目標是基於URL的,因此,它既可以用來測試apache的負載壓力,也可以測試nginx、lighthttp、tomcat、IIS等其它Web服務器的壓力。

 

 

11、ab的使用(比如 模擬並發請求100次,總共請求5000次)?

運行ab命令:ab -c 100 -n 5000 待測試網站

 

12、ab測試注意事項?

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

 

13、如何安裝使用ab測試?

獨立安裝:yum -y install httpd-tools
一般安裝apache會自動安裝ab
ab使用:ab -c 100 -n 5000 http://192.168.52.6/index
[root@localhost ~]# ab -c 100 -n 5000 http://192.168.52.6/index
This is ApacheBench, Version 2.3 <$Revision: 1430300 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/

Benchmarking 192.168.52.6 (be patient)
Completed 500 requests
Completed 1000 requests
Completed 1500 requests
Completed 2000 requests
Completed 2500 requests
Completed 3000 requests
Completed 3500 requests
Completed 4000 requests
Completed 4500 requests
Completed 5000 requests
Finished 5000 requests


Server Software:        Apache
Server Hostname:        192.168.52.6
Server Port:            80

Document Path:          /index
Document Length:        1917 bytes

Concurrency Level:      100
Time taken for tests:   22.049 seconds
Complete requests:      5000
Failed requests:        3
   (Connect: 0, Receive: 0, Length: 3, Exceptions: 0)
Write errors:           0
Total transferred:      11438133 bytes
HTML transferred:       9579249 bytes
Requests per second:    226.77 [#/sec] (mean)
Time per request:       440.972 [ms] (mean)
Time per request:       4.410 [ms] (mean, across all concurrent requests)
Transfer rate:          506.61 [Kbytes/sec] received

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:        0    1   9.0      0     125
Processing:     1  419 1614.8     68   17425
Waiting:        0  412 1601.8     68   17425
Total:          1  420 1614.8     72   17427

Percentage of the requests served within a certain time (ms)
  50%     72
  66%    125
  75%    163
  80%    193
  90%    399
  95%    987
  98%   7019
  99%   9085
 100%  17427 (longest request)

 

 

14、不同QPS下,優化與哪些方面有關?

硬件條件
網絡帶寬

隨着QPS的增長,每個階段需要根據實際情況來進行優化,優化的方案也與硬件條件、網絡帶寬息息相關。

 

15、不同QPS下的優化方案?

QPS100:數據庫緩存層、數據庫的負載均衡
QPS800:CDN加速、負載均衡
QPS1000:靜態HTML緩存
QPS2000:做業務分離,分布式存儲

 

16、QPS達到50 需要優化么?

可以不需要;稱之為小型網站,一般的服務器就可以應付

 

17、QPS達到100 如何優化?

|||-begin

假設關系型數據庫的每次請求在0.01秒完成;

假設單頁面只有一個SQL查詢,那么100QPS意味着1秒鍾完成100次請求,但是此時我們並不能保證數據庫查詢能完成100次

|||-end

數據庫緩存層、數據庫的負載均衡

 

18、QPS 達到800 如何優化?

|||-begin

假設我們使用百兆帶寬,意味着網站出口的實際帶寬是8M左右

假設每個頁面只有10K,在這個並發條件下,百兆帶寬已經吃完

|||-end

CDN加速、負載均衡

 

19、QPS 達到1000 如何優化?

|||-begin

假設使用Memcache緩存數據庫查詢數據,每個頁面對Memcache的請求遠大於直接對DB的請求

Memcache的悲觀並發數在2w左右,但有可能在之前內網帶寬已經吃光,表現出不穩定

|||-end

靜態HTML緩存

 

20、QPS 達到2000 如何優化?

|||-begin

這個級別下,文件系統訪問鎖都成為了災難

|||-end

做業務分離,分布式存儲

 

 

21、高並發優化的方向有哪些?

流量優化+前端優化:比如防盜鏈處理、減少HTTP請求、添加異步請求、CDN加速、建立獨立圖片服務器、啟用瀏覽器緩存和文件壓縮等等
服務端優化+Web服務器優化:比如頁面靜態化、並發處理、隊列處理、負載均衡等等
數據庫優化:比如數據庫緩存、分庫分表、分區操作、讀寫分離、負載均衡等等

流量優化 方法
防盜鏈處理


前端優化 方法
減少HTTP請求
添加異步請求:比如ajax
啟用瀏覽器緩存和文件壓縮
CDN加速
建立獨立圖片服務器



服務端優化 方法
頁面靜態化
並發處理
隊列處理


數據庫優化 方法
數據庫緩存
分庫分表、分區操作
讀寫分離
負載均衡


Web服務器優化 方法
負載均衡

 

22、流量優化 方法?

防盜鏈處理

 

23、前端優化 方法?

減少HTTP請求
添加異步請求:比如ajax
啟用瀏覽器緩存和文件壓縮
CDN加速 + 建立獨立圖片服務器

 

24、服務端優化 方法?

頁面靜態化
並發處理
隊列處理

 

25、數據庫優化 方法?

數據庫緩存
分庫分表、分區操作
讀寫分離
負載均衡

 

26、Web服務器優化 方法?

負載均衡

 

27、如何查看頁面的響應時間?

chrome瀏覽器->network->右下角紅色字:比如 Load:1.65s

 

95 requests I 409 KB transferred I 718 KB resources l Finish:3.06s l DOMContentloaded:910 ms I Load:1.65s

 

 

 

二、內容在總結中

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM