

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、[實(shí)戰(zhàn)實(shí)戰(zhàn)]3天讓天讓W(xué)eb應(yīng)用承載拓展應(yīng)用承載拓展1000倍2012021614:50|19115次閱讀|來(lái)源:williamhertling【已有15條評(píng)論】發(fā)表評(píng)論關(guān)鍵詞:Web應(yīng)用|作者:夏夢(mèng)竹編譯|收藏這篇資訊導(dǎo)讀:作者導(dǎo)讀:作者WilliamWilliamHertlingHertling的業(yè)余愛(ài)好是寫(xiě)科幻小說(shuō),目前就職于的業(yè)余愛(ài)好是寫(xiě)科幻小說(shuō),目前就職于HPHP。他在博客中談到了如何在三天。他在博客中談到了如何在三天內(nèi)讓一個(gè)
2、內(nèi)讓一個(gè)WebWeb應(yīng)用程序承載拓展應(yīng)用程序承載拓展1000x1000x的實(shí)時(shí)并發(fā)訪問(wèn)量。對(duì)此他分享了自己的經(jīng)驗(yàn),包括怎么做到、的實(shí)時(shí)并發(fā)訪問(wèn)量。對(duì)此他分享了自己的經(jīng)驗(yàn),包括怎么做到、從中學(xué)到了什么,以及從中吸取的經(jīng)驗(yàn)。從中學(xué)到了什么,以及從中吸取的經(jīng)驗(yàn)。環(huán)境:由環(huán)境:由NgniX,RubyonRails和MySQL構(gòu)成。注:這個(gè)構(gòu)成。注:這個(gè)Web應(yīng)用只是一個(gè)旅行指南。應(yīng)用只是一個(gè)旅行指南。當(dāng)用戶進(jìn)入我們的網(wǎng)站時(shí),會(huì)通過(guò)TripIt導(dǎo)
3、航或者選定目標(biāo),再依據(jù)詳細(xì)信息進(jìn)行下面的操作。他們可以根據(jù)自己的喜好選擇不同類(lèi)別(比如餐廳的菜式風(fēng)格、評(píng)級(jí)指標(biāo)等吸引點(diǎn)進(jìn)行篩選)?;蛘咭部梢酝ㄟ^(guò)瀏覽器查看生活指南做一些預(yù)訂。盡管我們的網(wǎng)站還處于beta版中,但是每天仍有幾百萬(wàn)的訪問(wèn)量。周一下午2點(diǎn)我們接到一則通知,網(wǎng)站將在周四早上9:30(東部時(shí)間)一個(gè)非常受歡迎的電視節(jié)目上出現(xiàn),根據(jù)以往的經(jīng)驗(yàn),我們料想這一天將會(huì)有20000至150000的需求訪量,峰值可達(dá)到10,000,而服務(wù)器將
4、承受100x至1000x的需求請(qǐng)求數(shù)。我們估計(jì)將會(huì)有10000人同時(shí)訪問(wèn),也就意味著要?jiǎng)?chuàng)建每分鐘約40000頁(yè)的請(qǐng)求數(shù)。我們所具備的:我們所具備的:運(yùn)行于AmazonWebServices,采用EC2云平臺(tái)。當(dāng)CPU負(fù)載超過(guò)網(wǎng)站服務(wù)器端時(shí)采用autoscale規(guī)則檢測(cè),EC2實(shí)例將增加一倍。部署過(guò)程(盡管這成為一種約束)一個(gè)月前,花了一周時(shí)間將網(wǎng)站性能進(jìn)行優(yōu)化,將網(wǎng)頁(yè)加載時(shí)間縮減了30%,大部分是通過(guò)減少數(shù)據(jù)庫(kù)調(diào)用。周一,我們?cè)趲着_(tái)電腦
5、上安裝了JMeter(JMeter是Apache組織的開(kāi)放源代碼項(xiàng)目,它是功能和性能測(cè)試的工具)。你可以使用JMeter編寫(xiě)腳本從而模擬一個(gè)典型的用戶訪問(wèn)。在以往案例中,會(huì)通過(guò)腳本來(lái)加載首頁(yè),通過(guò)選定目標(biāo),選擇自己的喜好進(jìn)入瀏覽,但我們沒(méi)有發(fā)表任何留言(如果時(shí)間充足的話,我們很樂(lè)意去做)。利用模擬用戶將大部分的數(shù)據(jù)庫(kù)資料來(lái)構(gòu)建用戶界面。(這一點(diǎn)很重要)。經(jīng)過(guò)幾次試驗(yàn),我們發(fā)現(xiàn)當(dāng)線程超過(guò)125個(gè)時(shí),就無(wú)法在單一的JMeter實(shí)例上運(yùn)行了。
6、因此,如果我們要模擬真正的高負(fù)荷,這需要將JMeter同時(shí)運(yùn)行在幾臺(tái)電腦上。同時(shí),我們還要確定本地網(wǎng)絡(luò)不在飽和狀態(tài),登陸VPN進(jìn)入另一個(gè)網(wǎng)絡(luò),由一個(gè)客戶端切換到另一個(gè)遠(yuǎn)程客戶端。我們很快了解到:我們很快了解到:需要改變最初的autoscale團(tuán)隊(duì)由2臺(tái)服務(wù)器變成4臺(tái);需要將CPU運(yùn)行加載由80%降至50%需要將加載持續(xù)的時(shí)間由5分鐘減少至1分鐘經(jīng)過(guò)這些改變后,讓?xiě)?yīng)用服務(wù)端規(guī)模擴(kuò)大至16臺(tái),但這受到數(shù)據(jù)庫(kù)的約束。數(shù)據(jù)庫(kù)很快達(dá)到100%負(fù)荷
7、,盡管我們擴(kuò)大了AWS(AmazonWebServices)數(shù)據(jù)庫(kù)的規(guī)模(超大的CPU和內(nèi)存)但是仍然受約束。于是我們采用JMeter運(yùn)行測(cè)試,設(shè)置平均響應(yīng)時(shí)間為30秒,我們清楚的知道,如果這個(gè)問(wèn)題無(wú)法解決,那我們便失敗了。這一天是星期二。我說(shuō)過(guò)“我們會(huì)失敗”,此前,我們采取了很多解決措施,團(tuán)隊(duì)中的大部分成員認(rèn)為這樣做未免太冒險(xiǎn)了,會(huì)釀成大錯(cuò)。因?yàn)楦鶕?jù)以往100%正確經(jīng)驗(yàn):在高負(fù)荷加載情況下會(huì)導(dǎo)致頁(yè)面無(wú)法顯示,這是100%有風(fēng)險(xiǎn)的。經(jīng)過(guò)
8、幾個(gè)小時(shí)深思熟慮之后,我們深信,必須要解決可擴(kuò)展性問(wèn)題。我們簡(jiǎn)要的探討了幾個(gè)不同的且動(dòng)作較大的方法,但這些風(fēng)險(xiǎn)很大:我們簡(jiǎn)要的探討了幾個(gè)不同的且動(dòng)作較大的方法,但這些風(fēng)險(xiǎn)很大:復(fù)制整個(gè)堆棧,并將他們之間的線程改為使用DynDNS或者AmazonsRoute53,因?yàn)槲覀儧](méi)有用可以使服務(wù)器有5分鐘時(shí)間去創(chuàng)建牽引,然后重新運(yùn)行測(cè)試。每秒擴(kuò)展到120個(gè)請(qǐng)求數(shù)(7.200rpm),此時(shí)數(shù)據(jù)庫(kù)加載時(shí)間只有16%。周三下午大約3點(diǎn)鐘,這時(shí)數(shù)據(jù)庫(kù)服務(wù)
9、器可以承受的負(fù)荷為每分鐘約36000頁(yè)的請(qǐng)求數(shù)。我們?cè)俅瓮黄品?wù)器CPU加載的時(shí)間。就在這一天,我們已經(jīng)刷爆了EC2實(shí)例,我們還有一支團(tuán)隊(duì)一直在忙于擴(kuò)展性測(cè)試,突破了極限。我們?nèi)コ薃MIs一些不必要的運(yùn)行,并要求其他人停止測(cè)試,我們反復(fù)的請(qǐng)求并添加AWS(AmazonWebServices)限制,然后進(jìn)入客戶代表的賬號(hào),并讓他們提出升級(jí)需求。周三晚上很晚我們才離開(kāi),此時(shí)我們信心倍加,相信能處理好周四早上的超負(fù)荷。周四,我們所有人都在使
10、用Google分析NewRelic,它涵蓋了所有屏幕的后端接口,因?yàn)樗鼘⒃赑ST(太平洋標(biāo)準(zhǔn)時(shí)間PacificStardTime)上午5:30開(kāi)始舉行,我們遍布在酒店的每個(gè)角落,用篝火進(jìn)行實(shí)時(shí)聊天。第一次加載的時(shí)間在5:38分,此時(shí)此刻發(fā)生了極大的變化:在短短的一分鐘時(shí)間里從原有0訪量變成上千人訪問(wèn)。頁(yè)面響應(yīng)時(shí)間穩(wěn)定在500ms,在服務(wù)器客戶端頁(yè)面,沒(méi)出現(xiàn)過(guò)任何延誤。當(dāng)然,我們也出現(xiàn)Bug,這就要求在加載的時(shí)候必須要對(duì)此進(jìn)行修補(bǔ),然后重
11、新啟動(dòng),(可以同時(shí)進(jìn)行),還要確保頁(yè)面通暢。加載高峰值我們已測(cè)試過(guò),當(dāng)然,運(yùn)行的非常好,這也遠(yuǎn)遠(yuǎn)超過(guò)了我們周一下午前所做的改變。因此,這兩天的辛苦,沒(méi)白費(fèi),我們獲得了回報(bào)。經(jīng)驗(yàn)與教訓(xùn):經(jīng)驗(yàn)與教訓(xùn):?如果我們?cè)缧┦褂肗ewRelicPro計(jì)劃,那么我們將節(jié)省很多時(shí)間,但是無(wú)論用哪種方法,我相信是NewRelic拯救了我們的漏洞,如果我們?cè)谥苋挛邕€沒(méi)有得到所需要的數(shù)據(jù),那么周四早上的一切都是扯談。?加載測(cè)試需要定期進(jìn)行,而不是在大事件發(fā)生
12、時(shí)才想起測(cè)試。在任何時(shí)候也許某人使數(shù)據(jù)庫(kù)發(fā)生改變,比如忘記了索引或是注入了一些其他的異常性能而又未被發(fā)現(xiàn),直到系統(tǒng)加載時(shí)才知道。?需要一個(gè)相對(duì)安全的、自動(dòng)化的方式便于提供執(zhí)行加快部署分段和生產(chǎn)次數(shù)。必需制定捷徑的常規(guī)過(guò)程。而不是依賴于某人用vi編輯文件,不會(huì)造成任何錯(cuò)誤。?如果不使用云服務(wù),我們根本不會(huì)如此之快擴(kuò)展應(yīng)用程序?qū)嵗蛿?shù)據(jù)庫(kù)服務(wù)器。?團(tuán)隊(duì)的作用很重要,通常情況下,如果不是有危機(jī)發(fā)生我們是分散的,各司其職,也不會(huì)想到做些遙不可及
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫(kù)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 25招讓你一天精神百倍
- 讓鉆展點(diǎn)擊率飆升3倍
- 3分鐘讓你電腦速度提高3倍!!非常實(shí)用
- 20分鐘讓你閱讀速度提高3倍
- 讓教育充滿思想讓生命承載希望
- lady gaga人氣暴漲1000倍!
- 25招讓你一天精神百倍.不困倦(現(xiàn)代社會(huì)備!轉(zhuǎn)
- 承載的信任-1000字優(yōu)秀作文
- 成功人生讓一天比一天好
- 我在碧桂園的1000天
- 拓展-培訓(xùn)時(shí)間安排(2天2晚)
- 無(wú)法讓我忘記的小事1000字作文
- 應(yīng)用于學(xué)生知識(shí)拓展的智能WEB檢索系統(tǒng).pdf
- 【大促】如何讓寶貝點(diǎn)擊率提升5倍
- 一天拓展基地培訓(xùn)(1)(通用模板)
- 拓展版助我立升皇冠人氣+銷(xiāo)售都翻十倍
- 基于Oracle Geo Raster天繪影像管理及Web應(yīng)用研究.pdf
- 和差、和倍、差倍問(wèn)題應(yīng)用題
- 畢業(yè)論文范文——1000m3天然氣球罐設(shè)計(jì)
- 靈山戶外拓展訓(xùn)練方案及流程(一天)
評(píng)論
0/150
提交評(píng)論