PHP解決網(wǎng)站大數(shù)據(jù)大流量與高并發(fā)

首先衷咽,確認(rèn)服務(wù)器硬件是否足夠支持當(dāng)前的流量鸽扁。

普通的P4服務(wù)器一般最多能支持每天10萬(wàn)獨(dú)立IP,如果訪問量比這個(gè)還要大兵罢, 那么必須首先配置一臺(tái)更高性能的專用服務(wù)器才能解決問題 献烦,否則怎么優(yōu)化都不可能徹底解決性能問題。

其次卖词,優(yōu)化數(shù)據(jù)庫(kù)訪問巩那。 前臺(tái)實(shí)現(xiàn)完全的靜態(tài)化當(dāng)然最好,可以完全不用訪問數(shù)據(jù)庫(kù)此蜈,不過對(duì)于頻繁更新的網(wǎng)站即横, 靜態(tài)化往往不能滿足某些功能。

緩存技術(shù)就是另一個(gè)解決方案裆赵,就是將動(dòng)態(tài)數(shù)據(jù)存儲(chǔ)到緩存文件中东囚,動(dòng)態(tài)網(wǎng)頁(yè)直接調(diào)用這些文件,而不必再訪問數(shù)據(jù)庫(kù)战授,WordPress和Z-Blog都大量使用這種緩存技術(shù)页藻。

如果確實(shí)無法避免對(duì)數(shù)據(jù)庫(kù)的訪問,那么可以嘗試優(yōu)化數(shù)據(jù)庫(kù)的查詢SQL.避免使用 Select * from這樣的語(yǔ)句植兰,每次查詢只返回自己需要的結(jié)果份帐,避免短時(shí)間內(nèi)的大量SQL查詢。

第三楣导,禁止外部的盜鏈废境。

外部網(wǎng)站的圖片或者文件盜鏈往往會(huì)帶來大量的負(fù)載壓力,因此應(yīng)該嚴(yán)格限制外部對(duì)于自身的圖片或者文件盜鏈,好在目前可以簡(jiǎn)單地通過refer來控制盜鏈噩凹,Apache自己就可以通過配置來禁止盜鏈巴元,IIS也有一些第三方的ISAPI可以實(shí)現(xiàn)同樣的功能。當(dāng)然驮宴,偽造refer也可以通過代碼來實(shí)現(xiàn)盜鏈逮刨,不過目前蓄意偽造refer盜鏈的還不多,可以先不去考慮幻赚,或者使用非技術(shù)手段來解決禀忆,比如在圖片上增加水印。

第四落恼,控制大文件的下載。

大文件的下載會(huì)占用很大的流量离熏,并且對(duì)于非SCSI硬盤來說佳谦,大量文件下載會(huì)消耗CPU,使得網(wǎng)站響應(yīng)能力下降滋戳。因此钻蔑,盡量不要提供超過2M的大文件下載,如果需要提供奸鸯,建議將大文件放在另外一臺(tái)服務(wù)器上咪笑。

第五,使用不同主機(jī)分流主要流量

將文件放在不同的主機(jī)上娄涩,提供不同的鏡像供用戶下載窗怒。比如如果覺得RSS文件占用流量大,那么使用FeedBurner或者FeedSky等服務(wù)將RSS輸出放在其他主機(jī)上蓄拣,這樣別人訪問的流量壓力就大多集中在FeedBurner的主機(jī)上扬虚,RSS就不占用太多資源了。

第六球恤,使用流量分析統(tǒng)計(jì)軟件辜昵。

在網(wǎng)站上安裝一個(gè)流量分析統(tǒng)計(jì)軟件,可以即時(shí)知道哪些地方耗費(fèi)了大量流量咽斧,哪些頁(yè)面需要再進(jìn)行優(yōu)化堪置,因此,解決流量問題還需要進(jìn)行精確的統(tǒng)計(jì)分析才可以张惹。比如:Google Analytics(Google分析)舀锨。

高并發(fā)和高負(fù)載的約束條件:硬件、部署诵叁、操作系統(tǒng)雁竞、Web 服務(wù)器、PHP、MySQL碑诉、測(cè)試

部署:服務(wù)器分離彪腔、數(shù)據(jù)庫(kù)集群和庫(kù)表散列、鏡像进栽、負(fù)載均衡

負(fù)載均衡分類:? 1)德挣、DNS輪循? 2)代理服務(wù)器負(fù)載均衡 ? 3)地址轉(zhuǎn)換網(wǎng)關(guān)負(fù)載均衡? 4)NAT負(fù)載均衡 ? 5)反向代理負(fù)載均衡 ? 6)混合型負(fù)載均衡

部署方案1:

適用范圍:靜態(tài)內(nèi)容為主體的網(wǎng)站和應(yīng)用系統(tǒng);對(duì)系統(tǒng)安全要求較高的網(wǎng)站和應(yīng)用系統(tǒng)快毛。

Main Server:主服務(wù)器

承載程序的主體運(yùn)行壓力格嗅,處理網(wǎng)站或應(yīng)用系統(tǒng)中的動(dòng)態(tài)請(qǐng)求;

將靜態(tài)頁(yè)面推送至多個(gè)發(fā)布服務(wù)器唠帝;

將附件文件推送至文件服務(wù)器屯掖;

安全要求較高,以靜態(tài)為主的網(wǎng)站襟衰,可將服務(wù)器置于內(nèi)網(wǎng)屏蔽外網(wǎng)的訪問贴铜。

DB Server:數(shù)據(jù)庫(kù)服務(wù)器

承載數(shù)據(jù)庫(kù)讀寫壓力;

只與主服務(wù)器進(jìn)行數(shù)據(jù)量交換瀑晒,屏蔽外網(wǎng)訪問绍坝。

File/Video Server:文件/視頻服務(wù)器

承載系統(tǒng)中占用系統(tǒng)資源和帶寬資源較大的數(shù)據(jù)流;

作為大附件的存儲(chǔ)和讀寫倉(cāng)庫(kù)苔悦;

作為視頻服務(wù)器將具備視頻自動(dòng)處理能力轩褐。

發(fā)布服務(wù)器組:

只負(fù)責(zé)靜態(tài)頁(yè)面的發(fā)布,承載絕大多數(shù)的Web請(qǐng)求玖详;

通過Nginx進(jìn)行負(fù)載均衡部署把介。

部署方案2:

適用范圍:以動(dòng)態(tài)交互內(nèi)容為主體的網(wǎng)站或應(yīng)用系統(tǒng);負(fù)載壓力較大竹宋,且預(yù)算比較充足的網(wǎng)站或應(yīng)用系統(tǒng)劳澄;

Web服務(wù)器組:

Web服務(wù)無主從關(guān)系,屬平行冗余設(shè)計(jì)蜈七;

通過前端負(fù)載均衡設(shè)備或Nginx反向代理實(shí)現(xiàn)負(fù)載均衡;

劃分專用文件服務(wù)器/視頻服務(wù)器有效分離輕/重總線飒硅;

每臺(tái)Web服務(wù)器可通過DEC可實(shí)現(xiàn)連接所有數(shù)據(jù)庫(kù)砂缩,同時(shí)劃分主從三娩。

數(shù)據(jù)庫(kù)服務(wù)器組:

相對(duì)均衡的承載數(shù)據(jù)庫(kù)讀寫壓力双吆;

通過數(shù)據(jù)庫(kù)物理文件的映射實(shí)現(xiàn)多數(shù)據(jù)庫(kù)的數(shù)據(jù)同步。

共享磁盤/磁盤陣列

將用于數(shù)據(jù)物理文件的統(tǒng)一讀寫

用于大型附件的存儲(chǔ)倉(cāng)庫(kù)

通過自身物理磁盤的均衡和冗余好乐,確保整體系統(tǒng)的IO效率和數(shù)據(jù)安全匾竿;

方案特性:

通過前端負(fù)載均衡,合理分配Web壓力蔚万;

通過文件/視頻服務(wù)器與常規(guī)Web服務(wù)器的分離岭妖,合理分配輕重?cái)?shù)據(jù)流;

通過數(shù)據(jù)庫(kù)服務(wù)器組反璃,合理分配數(shù)據(jù)庫(kù)IO壓力昵慌;

每臺(tái)Web服務(wù)器通常只連接一臺(tái)數(shù)據(jù)庫(kù)服務(wù)器,通過DEC的心跳檢測(cè)淮蜈,可在極短時(shí)間內(nèi)自動(dòng)切換至冗余數(shù)據(jù)庫(kù)服務(wù)器斋攀;

磁盤陣列的引入,大幅提升系統(tǒng)IO效率的同時(shí)礁芦,極大增強(qiáng)了數(shù)據(jù)安全性蜻韭。

Web服務(wù)器:

Web服務(wù)器很大一部分資源占用來自于處理Web請(qǐng)求,通常情況下這也就是Apache產(chǎn)生的壓力柿扣,在高并發(fā)連接的情況下,Nginx是Apache服務(wù)

器不錯(cuò)的替代品闺魏。Nginx (“engine x”) 是俄羅斯人編寫的一款高性能的 HTTP

和反向代理服務(wù)器未状。在國(guó)內(nèi),已經(jīng)有新浪析桥、搜狐通行證司草、網(wǎng)易新聞、網(wǎng)易博客泡仗、金山逍遙網(wǎng)埋虹、金山愛詞霸、校內(nèi)網(wǎng)娩怎、YUPOO相冊(cè)搔课、豆瓣、迅雷看看等多家網(wǎng)站截亦、

頻道使用 Nginx 服務(wù)器爬泥。

Nginx的優(yōu)勢(shì):

高并發(fā)連接:官方測(cè)試能夠支撐5萬(wàn)并發(fā)連接,在實(shí)際生產(chǎn)環(huán)境中跑到2~3萬(wàn)并發(fā)連接數(shù)崩瓤。

內(nèi)存消耗少:在3萬(wàn)并發(fā)連接下袍啡,開啟的10個(gè)Nginx 進(jìn)程才消耗150M內(nèi)存(15M*10=150M)。

內(nèi)置的健康檢查功能:如果 Nginx Proxy 后端的某臺(tái) Web 服務(wù)器宕機(jī)了却桶,不會(huì)影響前端訪問境输。

策略:相對(duì)于老牌的Apache,我們選擇Lighttpd和Nginx這些具有更小的資源占用率和更高的負(fù)載能力的web服務(wù)器。

Mysql:

MySQL本身具備了很強(qiáng)的負(fù)載能力嗅剖,MySQL優(yōu)化是一項(xiàng)很復(fù)雜的工作辩越,因?yàn)檫@最終需要對(duì)系統(tǒng)優(yōu)化的很好理解。大家都知道數(shù)據(jù)庫(kù)工作就是大量的窗悯、

短時(shí)的查詢和讀寫区匣,除了程序開發(fā)時(shí)需要注意建立索引、提高查詢效率等軟件開發(fā)技巧之外蒋院,從硬件設(shè)施的角度影響MySQL執(zhí)行效率最主要來自于磁盤搜索亏钩、磁

盤IO水平、CPU周期欺旧、內(nèi)存帶寬姑丑。

根據(jù)服務(wù)器上的硬件和軟件條件進(jìn)行MySQl優(yōu)化。MySQL優(yōu)化的核心在于系統(tǒng)資源的分配辞友,這不等于無限制的給MySQL分配更多的資源栅哀。在MySQL配置文件中我們介紹幾個(gè)最值得關(guān)注的參數(shù):

改變索引緩沖區(qū)長(zhǎng)度(key_buffer)

改變表長(zhǎng)(read_buffer_size)

設(shè)定打開表的數(shù)目的最大值(table_cache)

對(duì)緩長(zhǎng)查詢?cè)O(shè)定一個(gè)時(shí)間限制(long_query_time)

如果條件允許 ,一般MySQL服務(wù)器最好安裝在Linux操作系統(tǒng)中称龙,而不是安裝在FreeBSD中留拾。

策略: MySQL優(yōu)化需要根據(jù)業(yè)務(wù)系統(tǒng)的數(shù)據(jù)庫(kù)讀寫特性和服務(wù)器硬件配置,制定不同的優(yōu)化方案鲫尊,并且可以根據(jù)需要部署MySQL的主從結(jié)構(gòu)痴柔。

PHP:

1、加載盡可能少的模塊疫向;

2咳蔚、如果是在windows平臺(tái)下,盡可能使用IIS或者Nginx來替代我們平常用的Apache搔驼;

3谈火、安裝加速器(都是通過緩存php代碼預(yù)編譯的結(jié)果和數(shù)據(jù)庫(kù)結(jié)果來提高php代碼的執(zhí)行速度)

eAccelerator,eAccelerator是一個(gè)自由開放源碼php加速器舌涨,優(yōu)化和動(dòng)態(tài)內(nèi)容緩存糯耍,提高了性能php腳本的緩存性能,使得PHP腳本在編譯的狀態(tài)下泼菌,對(duì)服務(wù)器的開銷幾乎完全消除谍肤。

Apc:Alternative PHP Cache(APC)是 PHP 的一個(gè)免費(fèi)公開的優(yōu)化代碼緩存。它用來提供免費(fèi)哗伯,公開并且強(qiáng)健的架構(gòu)來緩存和優(yōu)化 PHP 的中間代碼荒揣。

memcache:memcache是由Danga

Interactive開發(fā)的,高性能的焊刹,分布式的內(nèi)存對(duì)象緩存系統(tǒng)系任,用于在動(dòng)態(tài)應(yīng)用中減少數(shù)據(jù)庫(kù)負(fù)載恳蹲,提升訪問速度。主要機(jī)制是通過在內(nèi)存里維護(hù)一個(gè)統(tǒng)

一的巨大的hash表俩滥,Memcache能夠用來存儲(chǔ)各種格式的數(shù)據(jù)嘉蕾,包括圖像、視頻霜旧、文件以及數(shù)據(jù)庫(kù)檢索的結(jié)果等

Xcache:國(guó)人開發(fā)的緩存器错忱,

策略: 為PHP安裝加速器。

代理服務(wù)器(緩存服務(wù)器):

Squid

Cache(簡(jiǎn)稱為Squid)是一個(gè)流行的自由軟件(GNU通用公共許可證)的代理服務(wù)器和Web緩存服務(wù)器挂据。Squid有廣泛的用途以清,從作為網(wǎng)頁(yè)服務(wù)

器的前置cache服務(wù)器緩存相關(guān)請(qǐng)求來提高Web服務(wù)器的速度,到為一組人共享網(wǎng)絡(luò)資源而緩存萬(wàn)維網(wǎng)崎逃,域名系統(tǒng)和其他網(wǎng)絡(luò)搜索掷倔,到通過過濾流量幫助網(wǎng)絡(luò)

安全,到局域網(wǎng)通過代理網(wǎng)个绍。Squid主要設(shè)計(jì)用于在Unix一類系統(tǒng)運(yùn)行破婆。

策略:安裝Squid 反向代理服務(wù)器币喧,能夠大幅度提高服務(wù)器效率判没。

壓力測(cè)試:壓力測(cè)試是一種基本的質(zhì)量保證行為啊送,它是每個(gè)重要軟件測(cè)試工作的一部分。壓力測(cè)試的基本思路很簡(jiǎn)單:不是在常規(guī)條件下運(yùn)行手動(dòng)或自動(dòng)測(cè)試广恢,而是在計(jì)算機(jī)數(shù)量較少或系統(tǒng)資源匱乏的條件下運(yùn)行測(cè)試涩维。通常要進(jìn)行壓力測(cè)試的資源包括內(nèi)部?jī)?nèi)存、CPU 可用性袁波、磁盤空間和網(wǎng)絡(luò)帶寬等。一般用并發(fā)來做壓力測(cè)試蜗侈。

壓力測(cè)試工具:webbench篷牌,ApacheBench等

漏洞測(cè)試:在我們的系統(tǒng)中漏洞主要包括:sql注入漏洞,xss跨站腳本攻擊等踏幻。安全方面還包括系統(tǒng)軟件枷颊,如操作系統(tǒng)漏洞,mysql该面、apache等的漏洞夭苗,一般可以通過升級(jí)來解決。

漏洞測(cè)試工具:Acunetix Web Vulnerability Scanner

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末隔缀,一起剝皮案震驚了整個(gè)濱河市题造,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌猾瘸,老刑警劉巖界赔,帶你破解...
    沈念sama閱讀 218,941評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件丢习,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡淮悼,警方通過查閱死者的電腦和手機(jī)咐低,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,397評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來袜腥,“玉大人见擦,你說我怎么就攤上這事「睿” “怎么了鲤屡?”我有些...
    開封第一講書人閱讀 165,345評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)特恬。 經(jīng)常有香客問我执俩,道長(zhǎng),這世上最難降的妖魔是什么癌刽? 我笑而不...
    開封第一講書人閱讀 58,851評(píng)論 1 295
  • 正文 為了忘掉前任役首,我火速辦了婚禮,結(jié)果婚禮上显拜,老公的妹妹穿的比我還像新娘衡奥。我一直安慰自己,他們只是感情好远荠,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,868評(píng)論 6 392
  • 文/花漫 我一把揭開白布矮固。 她就那樣靜靜地躺著,像睡著了一般譬淳。 火紅的嫁衣襯著肌膚如雪档址。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,688評(píng)論 1 305
  • 那天邻梆,我揣著相機(jī)與錄音守伸,去河邊找鬼。 笑死浦妄,一個(gè)胖子當(dāng)著我的面吹牛尼摹,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播剂娄,決...
    沈念sama閱讀 40,414評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼蠢涝,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了阅懦?” 一聲冷哼從身側(cè)響起和二,我...
    開封第一講書人閱讀 39,319評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎故黑,沒想到半個(gè)月后儿咱,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體庭砍,經(jīng)...
    沈念sama閱讀 45,775評(píng)論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,945評(píng)論 3 336
  • 正文 我和宋清朗相戀三年混埠,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了怠缸。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,096評(píng)論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡钳宪,死狀恐怖揭北,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情吏颖,我是刑警寧澤搔体,帶...
    沈念sama閱讀 35,789評(píng)論 5 346
  • 正文 年R本政府宣布,位于F島的核電站半醉,受9級(jí)特大地震影響疚俱,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜缩多,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,437評(píng)論 3 331
  • 文/蒙蒙 一呆奕、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧衬吆,春花似錦梁钾、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,993評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至冒嫡,卻和暖如春拇勃,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背孝凌。 一陣腳步聲響...
    開封第一講書人閱讀 33,107評(píng)論 1 271
  • 我被黑心中介騙來泰國(guó)打工潜秋, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人胎许。 一個(gè)月前我還...
    沈念sama閱讀 48,308評(píng)論 3 372
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像罗售,于是被迫代替她去往敵國(guó)和親辜窑。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,037評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容