PHP如何解決網(wǎng)站大流量與高并發(fā)的問(wèn)題
更新時(shí)間:2011年06月25日 01:28:36 作者:
普通的P4服務(wù)器一般最多能支持每天10萬(wàn)獨(dú)立IP,如果訪問(wèn)量比這個(gè)還要大,那么必須首先配置一臺(tái)更高性能的專用服務(wù)器才能解決問(wèn)題
首先,確認(rèn)服務(wù)器硬件是否足夠支持當(dāng)前的流量。
普通的P4服務(wù)器一般最多能支持每天10萬(wàn)獨(dú)立IP,如果訪問(wèn)量比這個(gè)還要大,
那么必須首先配置一臺(tái)更高性能的專用服務(wù)器才能解決問(wèn)題
,否則怎么優(yōu)化都不可能徹底解決性能問(wèn)題。
其次,優(yōu)化數(shù)據(jù)庫(kù)訪問(wèn)。
前臺(tái)實(shí)現(xiàn)完全的靜態(tài)化當(dāng)然最好,可以完全不用訪問(wèn)數(shù)據(jù)庫(kù),不過(guò)對(duì)于頻繁更新的網(wǎng)站,
靜態(tài)化往往不能滿足某些功能。
緩存技術(shù)就是另一個(gè)解決方案,就是將動(dòng)態(tài)數(shù)據(jù)存儲(chǔ)到緩存文件中,動(dòng)態(tài)網(wǎng)頁(yè)直接調(diào)用
這些文件,而不必再訪問(wèn)數(shù)據(jù)庫(kù),WordPress和Z-Blog都大量使用這種緩存技術(shù)。我
自己也寫過(guò)一個(gè)Z-Blog的計(jì)數(shù)器插件,也是基于這樣的原理。
如果確實(shí)無(wú)法避免對(duì)數(shù)據(jù)庫(kù)的訪問(wèn),那么可以嘗試優(yōu)化數(shù)據(jù)庫(kù)的查詢SQL.避免使用
Select * from這樣的語(yǔ)句,每次查詢只返回自己需要的結(jié)果,避免短時(shí)間內(nèi)的大
量SQL查詢。
第三,禁止外部的盜鏈。
外部網(wǎng)站的圖片或者文件盜鏈往往會(huì)帶來(lái)大量的負(fù)載壓力,因此應(yīng)該嚴(yán)格限制外部對(duì)
于自身的圖片或者文件盜鏈,好在目前可以簡(jiǎn)單地通過(guò)refer來(lái)控制盜鏈,Apache自
己就可以通過(guò)配置來(lái)禁止盜鏈,IIS也有一些第三方的ISAPI可以實(shí)現(xiàn)同樣的功能。當(dāng)
然,偽造refer也可以通過(guò)代碼來(lái)實(shí)現(xiàn)盜鏈,不過(guò)目前蓄意偽造refer盜鏈的還不多,
可以先不去考慮,或者使用非技術(shù)手段來(lái)解決,比如在圖片上增加水印。
第四,控制大文件的下載。
大文件的下載會(huì)占用很大的流量,并且對(duì)于非SCSI硬盤來(lái)說(shuō),大量文件下載會(huì)消耗
CPU,使得網(wǎng)站響應(yīng)能力下降。因此,盡量不要提供超過(guò)2M的大文件下載,如果需要
提供,建議將大文件放在另外一臺(tái)服務(wù)器上。
第五,使用不同主機(jī)分流主要流量
將文件放在不同的主機(jī)上,提供不同的鏡像供用戶下載。比如如果覺(jué)得RSS文件占用
流量大,那么使用FeedBurner或者FeedSky等服務(wù)將RSS輸出放在其他主機(jī)上,這
樣別人訪問(wèn)的流量壓力就大多集中在FeedBurner的主機(jī)上,RSS就不占用太多資源了。
第六,使用流量分析統(tǒng)計(jì)軟件。
在網(wǎng)站上安裝一個(gè)流量分析統(tǒng)計(jì)軟件,可以即時(shí)知道哪些地方耗費(fèi)了大量流量,哪些頁(yè)
面需要再進(jìn)行優(yōu)化,因此,解決流量問(wèn)題還需要進(jìn)行精確的統(tǒng)計(jì)分析才可以。我推薦使
用的流量分析統(tǒng)計(jì)軟件是Google Analytics(Google分析)。我使用過(guò)程中感覺(jué)其
效果非常不錯(cuò),稍后我將詳細(xì)介紹一下Google Analytics的一些使用常識(shí)和技巧。
普通的P4服務(wù)器一般最多能支持每天10萬(wàn)獨(dú)立IP,如果訪問(wèn)量比這個(gè)還要大,
那么必須首先配置一臺(tái)更高性能的專用服務(wù)器才能解決問(wèn)題
,否則怎么優(yōu)化都不可能徹底解決性能問(wèn)題。
其次,優(yōu)化數(shù)據(jù)庫(kù)訪問(wèn)。
前臺(tái)實(shí)現(xiàn)完全的靜態(tài)化當(dāng)然最好,可以完全不用訪問(wèn)數(shù)據(jù)庫(kù),不過(guò)對(duì)于頻繁更新的網(wǎng)站,
靜態(tài)化往往不能滿足某些功能。
緩存技術(shù)就是另一個(gè)解決方案,就是將動(dòng)態(tài)數(shù)據(jù)存儲(chǔ)到緩存文件中,動(dòng)態(tài)網(wǎng)頁(yè)直接調(diào)用
這些文件,而不必再訪問(wèn)數(shù)據(jù)庫(kù),WordPress和Z-Blog都大量使用這種緩存技術(shù)。我
自己也寫過(guò)一個(gè)Z-Blog的計(jì)數(shù)器插件,也是基于這樣的原理。
如果確實(shí)無(wú)法避免對(duì)數(shù)據(jù)庫(kù)的訪問(wèn),那么可以嘗試優(yōu)化數(shù)據(jù)庫(kù)的查詢SQL.避免使用
Select * from這樣的語(yǔ)句,每次查詢只返回自己需要的結(jié)果,避免短時(shí)間內(nèi)的大
量SQL查詢。
第三,禁止外部的盜鏈。
外部網(wǎng)站的圖片或者文件盜鏈往往會(huì)帶來(lái)大量的負(fù)載壓力,因此應(yīng)該嚴(yán)格限制外部對(duì)
于自身的圖片或者文件盜鏈,好在目前可以簡(jiǎn)單地通過(guò)refer來(lái)控制盜鏈,Apache自
己就可以通過(guò)配置來(lái)禁止盜鏈,IIS也有一些第三方的ISAPI可以實(shí)現(xiàn)同樣的功能。當(dāng)
然,偽造refer也可以通過(guò)代碼來(lái)實(shí)現(xiàn)盜鏈,不過(guò)目前蓄意偽造refer盜鏈的還不多,
可以先不去考慮,或者使用非技術(shù)手段來(lái)解決,比如在圖片上增加水印。
第四,控制大文件的下載。
大文件的下載會(huì)占用很大的流量,并且對(duì)于非SCSI硬盤來(lái)說(shuō),大量文件下載會(huì)消耗
CPU,使得網(wǎng)站響應(yīng)能力下降。因此,盡量不要提供超過(guò)2M的大文件下載,如果需要
提供,建議將大文件放在另外一臺(tái)服務(wù)器上。
第五,使用不同主機(jī)分流主要流量
將文件放在不同的主機(jī)上,提供不同的鏡像供用戶下載。比如如果覺(jué)得RSS文件占用
流量大,那么使用FeedBurner或者FeedSky等服務(wù)將RSS輸出放在其他主機(jī)上,這
樣別人訪問(wèn)的流量壓力就大多集中在FeedBurner的主機(jī)上,RSS就不占用太多資源了。
第六,使用流量分析統(tǒng)計(jì)軟件。
在網(wǎng)站上安裝一個(gè)流量分析統(tǒng)計(jì)軟件,可以即時(shí)知道哪些地方耗費(fèi)了大量流量,哪些頁(yè)
面需要再進(jìn)行優(yōu)化,因此,解決流量問(wèn)題還需要進(jìn)行精確的統(tǒng)計(jì)分析才可以。我推薦使
用的流量分析統(tǒng)計(jì)軟件是Google Analytics(Google分析)。我使用過(guò)程中感覺(jué)其
效果非常不錯(cuò),稍后我將詳細(xì)介紹一下Google Analytics的一些使用常識(shí)和技巧。
您可能感興趣的文章:
- php結(jié)合redis實(shí)現(xiàn)高并發(fā)下的搶購(gòu)、秒殺功能的實(shí)例
- 關(guān)于php 高并發(fā)解決的一點(diǎn)思路
- php結(jié)合redis高并發(fā)下發(fā)帖、發(fā)微博的實(shí)現(xiàn)方法
- php處理?yè)屬?gòu)類功能的高并發(fā)請(qǐng)求
- PHP+Redis 消息隊(duì)列 實(shí)現(xiàn)高并發(fā)下注冊(cè)人數(shù)統(tǒng)計(jì)的實(shí)例
- PHP中讀寫文件實(shí)現(xiàn)代碼
- php中讀寫文件與讀寫數(shù)據(jù)庫(kù)的效率比較分享
- php中并發(fā)讀寫文件沖突的解決方案
- PHP讀寫文件的方法(生成HTML)
- php多用戶讀寫文件沖突的解決辦法
- PHP讀寫文件高并發(fā)處理操作實(shí)例詳解
相關(guān)文章
dedecms 制作模板中使用的全局標(biāo)記圖文教程
dedecms 制作模板中使用的全局標(biāo)記圖文教程...2007-03-03

