php高併發和大流量解決方案


高併發的問題,應關注
1. QPS:每秒鐘請求或查詢數量,在互聯網領域指每秒響應的請求數(指 HTTP 請求)
2. 吞吐量:單位時間內處理的請求數量(通常由 QPS 和併發數決定)
3. 響應時間:從請求發出到收到響應花費時間
4. PV:綜合瀏覽量(Page View),即頁面瀏覽量或者點擊量,一個訪客在 24 小時內訪問
的頁面數量。同一個人瀏覽你的網站同一個頁面,只記作一次 PV
5. UV:獨立訪客(UniQue Visitor),即一定時間範圍內相同訪客多次訪問網站,只能計算
爲 1 個獨立訪客
6. 帶寬:計算帶寬大小需關注兩個指標,峯值流量和頁面的平均大小
7. 日網站帶寬=PV/統計時間(秒)平均頁面大小(KB)8
8. 峯值一般是平均值的倍數
9. QPS 不等於併發併發連接數。QPS 是每秒 HTTP 請求數量,併發連接數是系統同時處理
的請求數量
10.二八定律(80%的訪問量集中在 20%的時間):(總 PV 數 80%)/(6 小時秒速 20%)
=峯值每秒請求數(QPS)
11.壓力測試:能承受最大的併發數和最大承受的 QPS 值
常用性能測試工具
ab,wrk,Apache JMeter, http_load, Web Bench, Siege
ab
使用方法:
# 模擬併發請求 100 次,總請求 5000 次
ab -c 100 -n 5000 http://example.com
注意事項:
1. 測試機器與被測機器分開
2. 不要對線上服務做壓力測試
3. 觀察測試工具所在機器,以及被測試的前端機的 CPU、內存、網絡等都不超過最高限度
的 75%
QPS 指標
1. QPS 達到 50,可以稱之爲小型網站,一般服務器都可以應付
2. QPS 達到 100;瓶頸:MySQL 查詢達到瓶頸;優化方案:數據庫緩存層,數據庫負載
均衡
3. QPS 達到 800;瓶頸:帶寬速度達到瓶頸;優化方案:CDN 加速,負載均衡
4. QPS 達到 1000;瓶頸:緩存服務器的帶寬達到瓶頸;優化方案:靜態 HTML 緩存
5. QPS 達到 2000;瓶頸:文件系統訪問鎖成爲災難;優化方案:做業務分離,分佈式存
儲
高併發優化方案
流量優化
1. 防盜鏈處理
前端優化
1. 減少 HTTP 請求
2. 添加異步請求
3. 啓用瀏覽器緩存和文件壓縮
4. CDN 加速
5. 建立獨立的圖片服務器
服務端優化
1. 頁面靜態化
2. 併發處理
數據庫優化
1. 數據庫緩存
2. 分庫分表、分區操作
3. 讀寫分離
4. 負載均衡
web 服務器優化
1. 負載均衡
web 資源防盜鏈
盜鏈定義
1. 倒鏈是指在自己的頁面上展示一些並不在服務器上的內容
2. 獲得他人服務器上的資源地址,繞過別人的資源展示頁面,直接在自己的頁面上向最終
用戶提供此內容
3. 常見的是小站盜用大站的圖片、音樂、視頻、軟件等資源
4. 倒鏈可以減輕自己的服務器負擔
防盜鏈定義
防止別人通過一些技術手段繞過本站的資源展示頁面,盜用本站的資源,讓繞開本站資源展示頁
面的資源鏈接失效,可以大大減輕服務器及帶寬的壓力
防盜鏈的工作原理
1. 通過 Referer 或者計算簽名,網站可以檢測目標網頁訪問的來源網頁,如果是資源文件,
則可以跟蹤到顯示他的網頁地址
2. 一旦檢測到來源不是本站即進行阻止或返回指定的頁面
防盜鏈實現方法
Referer
1. NGINX 模塊 ngx_http_referer_module 用來阻擋來源非法的域名請求
2. NGINX 指令 valid_referers,全局變量$invalid_referer
配置:
valid_referers none|blocked|server_names|string...;
1. none: Referer 來源頭部爲空的情況,比如直接打開
2. blocked: Referer 來源頭部不爲空,但是裏面的值被代理或者防火牆刪除了,這些值都
不以 http://或者 https://開頭
3. server_names: Referer 來源頭部包含當前的 server_names
配置例子:
location ~.*\.(gif|jpg|png|flv|swf|rar}zip)$
{
valid_referers none blocked imooc.com *.imooc.com;
if ($invalid_referer)
{
#return 403;
rewrite ^/ http://www.xx.com/403.jpg;
}
}
減少 HTTP 請求
HTTP 連接產生的開銷
1. 域名解析
2. TCP 連接
3. 發送請求
4. 等待
5. 下載資源
6. 解析
解決方案
1. 減少組件的數量,並由此減少 HTTP 請求的數量
2. 圖片地圖:圖片地圖允許你在一個圖片上關聯多個 URL。目標 URL 的選擇取決於用戶蛋
雞了圖片上的哪個位置
3. CSS Sprites:css 精靈,通過使用合併圖片,通過指定 css 的 background-image 和
background-position 來顯示元素
4. 合併腳本和樣式表適
5. 圖片使用 base64 編碼減少頁面請求數

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章