激情五月天婷婷,亚洲愉拍一区二区三区,日韩视频一区,a√天堂中文官网8

<ul id="buwfs"><strike id="buwfs"><strong id="buwfs"></strong></strike></ul>
    <output id="buwfs"></output>
  • <dfn id="buwfs"><source id="buwfs"></source></dfn>
      <dfn id="buwfs"><td id="buwfs"></td></dfn>
      <div id="buwfs"><small id="buwfs"></small></div>
      <dfn id="buwfs"><source id="buwfs"></source></dfn>
      1. <dfn id="buwfs"><td id="buwfs"></td></dfn>
        始創(chuàng)于2000年 股票代碼:831685
        咨詢熱線:0371-60135900 注冊(cè)有禮 登錄
        • 掛牌上市企業(yè)
        • 60秒人工響應(yīng)
        • 99.99%連通率
        • 7*24h人工
        • 故障100倍補(bǔ)償
        全部產(chǎn)品
        您的位置: 網(wǎng)站首頁(yè) > 幫助中心>文章內(nèi)容

        “殺死”你的服務(wù)器的6種方法

        發(fā)布時(shí)間:  2012/8/14 21:27:57
        網(wǎng)站重構(gòu)的前期準(zhǔn)備
         
        如果沒有任何經(jīng)驗(yàn),學(xué)習(xí)如何擴(kuò)展一個(gè)網(wǎng)站是相當(dāng)困難的。假設(shè)現(xiàn)在你有很多像highscalability.com那樣網(wǎng)站,你需要一些好的解決方案來擴(kuò)展它們,但是世上沒有“萬能藥”,沒有哪個(gè)解決方案可以適應(yīng)所有網(wǎng)站的需要。你不得不自己動(dòng)手,通過不斷地思考來找到一個(gè)能滿足你的需求的解決方案。我也是這樣做的。幾年以前,我的老板來找我,然后對(duì)我說:“我們有一個(gè)新項(xiàng)目想交給你來做。主要是一個(gè)網(wǎng)站的重構(gòu),在一個(gè)月內(nèi),這個(gè)站點(diǎn)已經(jīng)擁有100萬個(gè)用戶了。你必須重新構(gòu)建這個(gè)網(wǎng)站,來確保我們可以應(yīng)對(duì)將來逐漸增加的用戶數(shù)量。”我已經(jīng)是一個(gè)有經(jīng)驗(yàn)的程序員了,但是在這些方面并不擅長(zhǎng),所以我不得不開始學(xué)習(xí)如何擴(kuò)展一個(gè)網(wǎng)站——整個(gè)過程歷盡了艱難困苦。
         
        這個(gè)網(wǎng)站的后臺(tái)軟件是一個(gè)PHP內(nèi)容管理系統(tǒng),基于Smarty和MySQL。第一個(gè)任務(wù)是找到一個(gè)合適的托管公司,這個(gè)公司需要具有豐富的經(jīng)驗(yàn),可以為我們管理服務(wù)器。經(jīng)過一番調(diào)查研究,我們找到了一家這樣的公司,然后告訴他們我們的需求,他們給我們推薦的配置如下:
         
        ◆負(fù)載均衡器 (+Fallback)
         
        ◆2個(gè)Web服務(wù)器
         
        ◆MySQL服務(wù)器(+Fallback)
         
        ◆開發(fā)機(jī)器
         
        他們說,這就是我們需要的所有東西了——對(duì)此,我們深信不疑。我們最后得到的配置是:
         
        ◆負(fù)載均衡器 (單核, 1GB 內(nèi)存, Pound)
         
        ◆2個(gè)Web服務(wù)器 (雙核, 4GB 內(nèi)存, Apache)
         
        ◆MySQL服務(wù)器 (四核, 8GB 內(nèi)存)
         
        ◆開發(fā)機(jī)器 (單核, 1GB 內(nèi)存)
         
        這個(gè)配置十分的基礎(chǔ),并沒有做進(jìn)一步優(yōu)化。為了同步文件(PHP和媒體文件),他們建立了一個(gè)active-active DRBD。最后,重構(gòu)開始了——當(dāng)然,我們很興奮。一大早,我們把域名切換到了新的IP上,運(yùn)行我們的監(jiān)控腳本,然后盯著屏幕看。我們馬上在這些機(jī)器上看到了流量,一切似乎都工作的很好。頁(yè)面載入的很快,MySQL負(fù)擔(dān)了大量的查詢?nèi)蝿?wù),我們所有人都很高興。
         
        然后,突然我們的電話開始響個(gè)不停:“我們不能訪問你們的網(wǎng)站了,這是怎么回事?”我們看了一下我們的監(jiān)控軟件,事實(shí)的確如此——服務(wù)器都被frozen了,站點(diǎn)處于離線狀態(tài)!當(dāng)然,我們做的第一件事情是打電話給我們的托管服務(wù)提供商:“我們的所有服務(wù)器都死機(jī)了。這是怎么回事?”他們答應(yīng)檢查一下機(jī)器,一會(huì)再打過來。這個(gè)電話來了:“你的系統(tǒng)根本就無法插手。你做了什么?它完全被搞砸了。”他們停止了負(fù)載均衡器,然后讓我觀察一下其中一個(gè)Web服務(wù)器?吹侥莻(gè)index.php文件,我大吃一驚。它包含一些奇怪的C代碼片段,錯(cuò)誤消息和一些看起來像日志文件的東西。經(jīng)過進(jìn)一步的調(diào)查,我們發(fā)現(xiàn)是DRBD引發(fā)了這次事故。
         

        “殺死”你的服務(wù)器的方法之一
         
        把Smarty compile和模板緩存放到一個(gè)高負(fù)載的active-active DRBD集群上,那么你的服務(wù)器將會(huì)掛掉!當(dāng)我們的托管服務(wù)提供商修復(fù)了Web服務(wù)器的時(shí)候,為了在這些服務(wù)器的本地文件系統(tǒng)上存儲(chǔ)Smarty緩存文件,我重寫了部分CMS代碼。我們?cè)俅紊暇了!
         
        現(xiàn)在是午后。這個(gè)網(wǎng)站通常在下午的晚些時(shí)候到傍晚達(dá)到峰值。晚上,幾乎沒有什么流量。我們一直盯著監(jiān)控軟件,我們所有人都緊張得不得了。這個(gè)網(wǎng)站可以被載入,但是后來,系統(tǒng)負(fù)載越高,響應(yīng)就越慢。我增加了Smarty模板緩存的生存期,希望這能產(chǎn)生效果——但是很可惜,這并沒有產(chǎn)生效果!不久,服務(wù)器開始給出超時(shí)提示,空白頁(yè)面和錯(cuò)誤信息。有兩臺(tái)機(jī)器不能處理負(fù)載。
         
        我們的客戶這個(gè)時(shí)候有一點(diǎn)緊張,但是他說:OK,重構(gòu)通常會(huì)引發(fā)一些問題的。只要你能很快地修復(fù)它,那就沒事了!
        我們需要一個(gè)計(jì)劃來減少負(fù)載,然后,我們和我們的托管服務(wù)提供商討論了這個(gè)問題。他們的一個(gè)系統(tǒng)管理員提出了一個(gè)好主意:“伙計(jì),你的服務(wù)器現(xiàn)在運(yùn)行在一個(gè)非常常見的Apache+mod_php架構(gòu)上。把你的Web服務(wù)器換成Lighttpd怎么樣?它是一個(gè)相當(dāng)小項(xiàng)目,但是維基百科都在使用它。”我們同意了。
         
        “殺死”你的服務(wù)器的方法之二
         
        把一個(gè)開箱即用的Web服務(wù)器架設(shè)在你的機(jī)器上,并且一點(diǎn)也沒有對(duì)它進(jìn)行優(yōu)化,那么你的服務(wù)器將會(huì)掛掉!那個(gè)管理員盡了他的最大努力,盡快地重新配置了所有的Web服務(wù)器。他拋棄了Apache,然后切換到Lighttpd+FastCGI+Xcache上來。后來,當(dāng)我們重新上線的時(shí)候,我們幾乎沒有再感受到壓力。這次,這些服務(wù)器會(huì)維持多長(zhǎng)時(shí)間呢?
         
        這些服務(wù)器運(yùn)行的出奇地好。負(fù)載比以前低很多,平均響應(yīng)時(shí)間也不錯(cuò)。我們徹底放心了,然后我們都回家睡覺了。天已經(jīng)很晚了,我們認(rèn)為沒有其他的事情需要我們做了。第二天,網(wǎng)站運(yùn)行的相當(dāng)好,但是在高峰時(shí)段,它一直接近于崩潰的邊緣。我們發(fā)現(xiàn)MySQL是瓶頸,我們?cè)俅未螂娫捊o我們的托管服務(wù)提供商。他們建議在每個(gè)Web服務(wù)器上用MySQL從服務(wù)器進(jìn)行MySQL的主-從同步。
         
        “殺死”你的服務(wù)器的方法之三
         
        再?gòu)?qiáng)大的數(shù)據(jù)庫(kù)服務(wù)器也有它的極限,當(dāng)你到達(dá)它的極限的時(shí)候,你的服務(wù)器將會(huì)掛掉!在這種情況下,某些時(shí)候你的數(shù)據(jù)庫(kù)會(huì)變得十分緩慢,以至于隊(duì)列中大量的網(wǎng)絡(luò)連接會(huì)再次“殺死”我們的Web服務(wù)器。不幸的是這個(gè)問題很難修復(fù)。內(nèi)容管理系統(tǒng)在這方面十分的簡(jiǎn)單,它本身并不支持單獨(dú)地讀取和寫入SQL查詢。重寫這一切花了很長(zhǎng)時(shí)間,但是相對(duì)于每分鐘都遭遇到掛起休眠來說,是相當(dāng)值得的。
         
        MySQL同步真的成功了,網(wǎng)站最終穩(wěn)定了!在接下來的幾周,幾個(gè)月里,網(wǎng)站取得了成功,用戶的數(shù)量開始不斷地增加。流量再次超過我們的資源限制,這只是時(shí)間的問題。
         
        “殺死”你的服務(wù)器的方法之四
         
        不提前作規(guī)劃,你的服務(wù)器可能會(huì)掛掉!
         
        幸運(yùn)的是,我們一直在思考,并且一直在做規(guī)劃。我們優(yōu)化了代碼,減少了每個(gè)頁(yè)面載入的時(shí)候需要的SQL查詢的數(shù)量,我們意外地發(fā)現(xiàn)了MemCached這個(gè)好東東。首先,我們?cè)谝恍┖诵墓δ苌咸砑恿藢?duì)MemCached的支持,在一些重量級(jí)(運(yùn)行緩慢)的功能上我們也添加了對(duì)MemCached的支持。當(dāng)我們把這些變更部署以后,我們簡(jiǎn)直不能相信這個(gè)結(jié)果——這感覺有點(diǎn)像發(fā)現(xiàn)了“圣杯”。我們每秒查詢的數(shù)量至少降低了50%。我們決定更多地使用MemCached,而不是購(gòu)買另外一個(gè)Web服務(wù)器。
         
        “殺死”你的服務(wù)器的方法之五
         
        忘記做緩存,你會(huì)浪費(fèi)很多錢,而且,你的服務(wù)器還會(huì)掛掉!事實(shí)證明,MemCached幫助我們減少了70%-80%的MySQL服務(wù)器上負(fù)載,同時(shí),在Web服務(wù)器上,也產(chǎn)生了巨大的性能提升。頁(yè)面載入的相當(dāng)快。
         
        最終,我們的配置看起來似乎是完美的。即使在高峰時(shí)段,我們也無須再擔(dān)心崩潰或頁(yè)面響應(yīng)緩慢了。我們搞定它了嗎?不!一臺(tái)藍(lán)色的Web服務(wù)器開始有一點(diǎn)響應(yīng)緩慢了。然后出現(xiàn)了一些錯(cuò)誤消息,空白頁(yè)面等等。這個(gè)系統(tǒng)負(fù)載能力很不錯(cuò),在大多數(shù)情況下服務(wù)器也都在工作,但是只是在“大多數(shù)情況下”而已。
         
        “殺死”你的服務(wù)器的方法之六
         
        把成百上千個(gè)小文件放在一個(gè)文件夾里,當(dāng)索引節(jié)點(diǎn)耗盡的時(shí)候,你的服務(wù)器將會(huì)掛掉!
         
        是的,你沒有看錯(cuò)。我們過去只是關(guān)注MySQL,PHP和Web服務(wù)器本身,并沒有太關(guān)注文件系統(tǒng)。Smarty緩存文件存儲(chǔ)在本地文件系統(tǒng)里——所有的緩存文件都存儲(chǔ)在同一個(gè)目錄下。解決方案是把Smarty放在一個(gè)專用的ReiserFS分區(qū)里。另外,我們還打開了Smarty的“use_subdirs”選項(xiàng)。
         
        在過去的幾年里,我們一直在優(yōu)化頁(yè)面。我們把Smarty緩存放到了memcached中。為了更快速地處理靜態(tài)文件,我們安裝了Varnish來減少I/O負(fù)載。我們還切換到了Nginx(Lighttpd會(huì)隨機(jī)的產(chǎn)生error 500的消息),安裝了更多的內(nèi)存,購(gòu)買了更好的硬件,更多的硬件......這個(gè)列表永遠(yuǎn)不會(huì)結(jié)束。
         
        總結(jié)
         
        擴(kuò)展一個(gè)網(wǎng)站是一個(gè)永遠(yuǎn)不會(huì)結(jié)束的過程。當(dāng)你解決了一個(gè)瓶頸以后,很可能馬上會(huì)遇到下一個(gè)瓶頸。永遠(yuǎn)都不要這樣想:“就是這樣,我們大功告成了”然后就靠邊站了。這會(huì)“殺死”你的服務(wù)器,甚至是你的業(yè)務(wù)。規(guī)劃和學(xué)習(xí)是一個(gè)持續(xù)的過程。如果你因?yàn)槿狈?jīng)驗(yàn)或資源而不能自己完成這個(gè)工作,那么可以找一個(gè)有能力勝任這個(gè)工作,而且很可靠的合作伙伴,和它一起來做這個(gè)工作。永遠(yuǎn)都不要停止和你的團(tuán)隊(duì)和合作伙伴溝通當(dāng)前遇到的一些問題和即將會(huì)遇到的一些問題。思考在前才能爭(zhēng)取主動(dòng)。

        本文出自:億恩科技【mszdt.com】

        服務(wù)器租用/服務(wù)器托管中國(guó)五強(qiáng)!虛擬主機(jī)域名注冊(cè)頂級(jí)提供商!15年品質(zhì)保障!--億恩科技[ENKJ.COM]

      2. 您可能在找
      3. 億恩北京公司:
      4. 經(jīng)營(yíng)性ICP/ISP證:京B2-20150015
      5. 億恩鄭州公司:
      6. 經(jīng)營(yíng)性ICP/ISP/IDC證:豫B1.B2-20060070
      7. 億恩南昌公司:
      8. 經(jīng)營(yíng)性ICP/ISP證:贛B2-20080012
      9. 服務(wù)器/云主機(jī) 24小時(shí)售后服務(wù)電話:0371-60135900
      10. 虛擬主機(jī)/智能建站 24小時(shí)售后服務(wù)電話:0371-60135900
      11. 專注服務(wù)器托管17年
        掃掃關(guān)注-微信公眾號(hào)
        0371-60135900
        Copyright© 1999-2019 ENKJ All Rights Reserved 億恩科技 版權(quán)所有  地址:鄭州市高新區(qū)翠竹街1號(hào)總部企業(yè)基地億恩大廈  法律顧問:河南亞太人律師事務(wù)所郝建鋒、杜慧月律師   京公網(wǎng)安備41019702002023號(hào)
          0
         
         
         
         

        0371-60135900
        7*24小時(shí)客服服務(wù)熱線