高訪問就是大網站?仍是大流量是大型網站?
愛站:http://www.aizhan.com/
站長工具:http://tool.chinaz.com/
高訪問網站:https://www.hao123.comphp
經過幾個參數來斷定一個大型網站css
a. PV(page views) :一個網站內全部頁面,24小時內訪問次數的總和。通常在100w,1000w以上html
b. UV(unique visitor):一個網站24小時內的獨立訪問用戶。通常幾十萬以上linux
c. IP(獨立IP):一個網站24小時內訪問的IP數,在考慮校園網、局域網的時候,UV數通常略大於IP數(局域網經過一個網關上網
多個用戶只會記錄一個獨立IP)nginx
總結:PV > UV > IPweb
大型網站帶來的問題redis
a. 高併發:通常是1s內同時訪問一個網站的數量sql
b. 大流量:大量的用戶訪問網站,流量會變得很大mongodb
c. 大數據:在訪問量巨大的同時,帶來的就是大量數據(G、T級別)的檢索問題,如何在衆多數據中檢索出須要的數據數據庫
解決方案
a. 高併發能夠使用 分層來解決(負載均衡)
硬件:f5(優勢:立竿見影;缺點:價格昂貴,20w左右)
軟件:nginx(web服務器,負載均衡器),lvs
nginx: http://www.nginx.cn/ http://tengine.taobao.org/ http://nginx.org/
lvs(章文嵩): http://zh.linuxvirtualserver.org/
問題:什麼是C10K問題?
負載均衡的策略:1. 輪詢 2. NAT 3. 智能DNS
注意:對Apache實現了分流,但對Mysql,如何解決?同時,如何保證Apache,負載均衡器的高可用?
高可用能夠使用冗餘技術實現,添加一個監控服務器
軟件:keepalive
b. 大流量能夠使用以下方案解決
1. 代碼壓縮 查看HTTP請求,Apache對主體數據進行壓縮,開啓Apache的deflate模塊
> http://blog.csdn.net/cctv_hu/article/details/6018942
> http://www.webkaka.com/tutorial/server/2015/021013/
2. 合併文件,減小HTTP請求(js、 css),css圖片背景的圖片精靈(減小請求)
> 合併工具: http://tool.oschina.net/jscompress?type=3
3. 使用CDN技術加載靜態資源
> 加速CDN服務: http://www.bootcdn.cn/
4. 將服務分散,圖片服務器,電腦模塊。將不一樣的模塊部署到不一樣的服務器上面 (上傳插件配置上傳服務器地址)
> PHP FTP 函數:http://www.w3school.com.cn/php/php_ref_ftp.asp
5. 升級帶寬(100M帶寬一年40w左右)
c. 大數據能夠使用緩存技術實現
1. 磁盤緩存(靜態化):
> 1. 真靜態:在效率上,生成真實的html文件,將數據從數據庫取出以後,生成的靜態html保存到磁盤上面,直接訪問靜態頁面就好。不用訪問數據庫,減輕數據庫的壓力
> 2. 僞靜態:在形式上,利用Apache的重寫模塊來實現 動態的url 轉換成靜態的url,便於seo(搜索引擎優化),能夠防止sql注入
例如:
動態網站:http://www.php.com?new.php&type=sport&id=12
對應的靜態網站:http://www.php.com?new-sport-id12.html
2. 內存緩存(Nosql技術,memcache、redis、mongodb):將Mysql取出的數據保存在內存服務器裏面,下次請求的時候直接訪問內存服務器
3. 數據庫優化:
1. 設計上知足三範式
2. 字段上使用合適的屬性
3. 合適的使用索引
4. 分區和分表
5. 主從複製(讀寫分離)
6. 硬件升級(scale up、還有scale out)
7. sphinx存儲引擎的使用
(本文轉自 superve.leanote.com/post/大型網站提速方案)