PHP如何解決網站大流量與高并發的問題
添加時間:2014-12-12 2:23:05
添加:
思海網絡
首先,確認服務器硬件是否足夠支持當前的流量。
普通的P4服務器一般最多能支持每天10萬獨立IP,如果訪問量比這個還要大,
那么必須首先配置一臺更高性能的專用服務器才能解決問題
,否則怎么優化都不可能徹底解決性能問題。
其次,優化數據庫訪問。
前臺實現完全的靜態化當然最好,可以完全不用訪問數據庫,不過對于頻繁更新的網站,
靜態化往往不能滿足某些功能。
緩存技術就是另一個解決方案,就是將動態數據存儲到緩存文件中,動態網頁直接調用
這些文件,而不必再訪問數據庫,WordPress和Z-Blog都大量使用這種緩存技術。我
自己也寫過一個Z-Blog的計數器插件,也是基于這樣的原理。
如果確實無法避免對數據庫的訪問,那么可以嘗試優化數據庫的查詢SQL.避免使用
Select * from這樣的語句,每次查詢只返回自己需要的結果,避免短時間內的大
量SQL查詢。
第三,禁止外部的盜鏈。
外部網站的圖片或者文件盜鏈往往會帶來大量的負載壓力,因此應該嚴格限制外部對
于自身的圖片或者文件盜鏈,好在目前可以簡單地通過refer來控制盜鏈,Apache自
己就可以通過配置來禁止盜鏈,IIS也有一些第三方的ISAPI可以實現同樣的功能。當
然,偽造refer也可以通過代碼來實現盜鏈,不過目前蓄意偽造refer盜鏈的還不多,
可以先不去考慮,或者使用非技術手段來解決,比如在圖片上增加水印。
第四,控制大文件的下載。
大文件的下載會占用很大的流量,并且對于非SCSI硬盤來說,大量文件下載會消耗
CPU,使得網站響應能力下降。因此,盡量不要提供超過2M的大文件下載,如果需要
提供,建議將大文件放在另外一臺服務器上。
第五,使用不同主機分流主要流量
將文件放在不同的主機上,提供不同的鏡像供用戶下載。比如如果覺得RSS文件占用
流量大,那么使用FeedBurner或者FeedSky等服務將RSS輸出放在其他主機上,這
樣別人訪問的流量壓力就大多集中在FeedBurner的主機上,RSS就不占用太多資源了。
第六,使用流量分析統計軟件。
在網站上安裝一個流量分析統計軟件,可以即時知道哪些地方耗費了大量流量,哪些頁
面需要再進行優化,因此,解決流量問題還需要進行精確的統計分析才可以。我推薦使
用的流量分析統計軟件是Google Analytics(Google分析)。我使用過程中感覺其
普通的P4服務器一般最多能支持每天10萬獨立IP,如果訪問量比這個還要大,
那么必須首先配置一臺更高性能的專用服務器才能解決問題
,否則怎么優化都不可能徹底解決性能問題。
其次,優化數據庫訪問。
前臺實現完全的靜態化當然最好,可以完全不用訪問數據庫,不過對于頻繁更新的網站,
靜態化往往不能滿足某些功能。
緩存技術就是另一個解決方案,就是將動態數據存儲到緩存文件中,動態網頁直接調用
這些文件,而不必再訪問數據庫,WordPress和Z-Blog都大量使用這種緩存技術。我
自己也寫過一個Z-Blog的計數器插件,也是基于這樣的原理。
如果確實無法避免對數據庫的訪問,那么可以嘗試優化數據庫的查詢SQL.避免使用
Select * from這樣的語句,每次查詢只返回自己需要的結果,避免短時間內的大
量SQL查詢。
第三,禁止外部的盜鏈。
外部網站的圖片或者文件盜鏈往往會帶來大量的負載壓力,因此應該嚴格限制外部對
于自身的圖片或者文件盜鏈,好在目前可以簡單地通過refer來控制盜鏈,Apache自
己就可以通過配置來禁止盜鏈,IIS也有一些第三方的ISAPI可以實現同樣的功能。當
然,偽造refer也可以通過代碼來實現盜鏈,不過目前蓄意偽造refer盜鏈的還不多,
可以先不去考慮,或者使用非技術手段來解決,比如在圖片上增加水印。
第四,控制大文件的下載。
大文件的下載會占用很大的流量,并且對于非SCSI硬盤來說,大量文件下載會消耗
CPU,使得網站響應能力下降。因此,盡量不要提供超過2M的大文件下載,如果需要
提供,建議將大文件放在另外一臺服務器上。
第五,使用不同主機分流主要流量
將文件放在不同的主機上,提供不同的鏡像供用戶下載。比如如果覺得RSS文件占用
流量大,那么使用FeedBurner或者FeedSky等服務將RSS輸出放在其他主機上,這
樣別人訪問的流量壓力就大多集中在FeedBurner的主機上,RSS就不占用太多資源了。
第六,使用流量分析統計軟件。
在網站上安裝一個流量分析統計軟件,可以即時知道哪些地方耗費了大量流量,哪些頁
面需要再進行優化,因此,解決流量問題還需要進行精確的統計分析才可以。我推薦使
用的流量分析統計軟件是Google Analytics(Google分析)。我使用過程中感覺其
效果非常不錯,稍后我將詳細介紹一下Google Analytics的一些使用常識和技巧。
關鍵字:PHP、數據庫、服務器
新文章:
- CentOS7下圖形配置網絡的方法
- CentOS 7如何添加刪除用戶
- 如何解決centos7雙系統后丟失windows啟動項
- CentOS單網卡如何批量添加不同IP段
- CentOS下iconv命令的介紹
- Centos7 SSH密鑰登陸及密碼密鑰雙重驗證詳解
- CentOS 7.1添加刪除用戶的方法
- CentOS查找/掃描局域網打印機IP講解
- CentOS7使用hostapd實現無AP模式的詳解
- su命令不能切換root的解決方法
- 解決VMware下CentOS7網絡重啟出錯
- 解決Centos7雙系統后丟失windows啟動項
- CentOS下如何避免文件覆蓋
- CentOS7和CentOS6系統有什么不同呢
- Centos 6.6默認iptable規則詳解