第2005章 攜程後台的首輪考驗

投票推薦 加入書籤 小說報錯

  壓力測試定在周六上午。

  這是趙磊提議的。

  他說選在周末,萬一出了問題,不會影響周一到周五的正常工作進度。

  俞飛鴻同意了這個安排,還特意從家裡帶了一壺咖啡到辦公室,給技術團隊提神。

  測試開始之前,趙磊把所有人召集在一起,在白板上畫了一個簡單的架構圖,把壓力測試的流程講了一遍。

  他手裡拿著一支黑色馬克筆,一邊畫一邊說,聲音不大但很清楚。

  「我們模擬一千個用戶同時訪問首頁,然後五百個用戶同時進行航班查詢,最後兩百個用戶同時提交訂單。

  每一個階段持續五分鐘,中間不停頓,連續跑完。」

  一個年輕的技術員舉手問:「磊哥,伺服器配置扛得住嗎?」

  趙磊把馬克筆的蓋子蓋上,「扛不扛得住,測了才知道。

  所以才叫壓力測試。」

  俞飛鴻站在辦公室的角落,端著一杯咖啡,安靜地看著他們。

  她沒有插話,技術上的事情她不懂,也不打算裝懂。

  她在這裡的唯一原因,是如果出了問題,她需要第一時間知道,然後第一時間聯絡陳浩。

  趙磊走到那台伺服器前面,檢查了一遍所有的連接線。

  這台伺服器是兩個月前採購的,戴爾的PowerEdge,雙CPU,2GB內存,四塊SCSI硬碟做了RAID 5。

  在當時這個配置不算低,但趙磊說過,對於網際網路應用來說,硬體永遠不夠用。

  「準備好了嗎?」趙磊問。

  三個技術員分別坐在自己的工位上,面前屏幕上顯示著不同的監控界面。

  一個人盯著CPU和內存的使用率,一個人盯著資料庫的連接數和查詢響應時間,一個人盯著網絡流量和磁碟I/O。

  「資料庫監控就緒。」坐在中間的那個技術員說。

  「網絡監控就緒。」左邊那個說。

  「系統資源就緒。」右邊那個說。

  趙磊走到自己的電腦前,打開了一個模擬並發請求的工具。

  這個工具是他自己寫的,功能很簡單——模擬大量用戶同時訪問網站的不同頁面,記錄響應時間和錯誤率。

  「三、二、一,開始。」

  他按下了回車鍵。

  辦公室里的五個人都安靜下來,只剩下伺服器風扇的嗡嗡聲和鍵盤敲擊的聲音。

  俞飛鴻靠在牆上,手裡端著咖啡杯,眼睛盯著趙磊的屏幕。

  最初的三十秒,一切正常。

  監控屏幕上顯示CPU使用率從百分之五升到了百分之四十,內存占用從五百兆升到了八百兆,資料庫連接數從兩個增加到了八十個。

  趙磊的模擬工具顯示,平均頁面響應時間從零點三秒增加到了零點八秒。

  「還在合理範圍內。」趙磊說,語氣還算平靜。

  一分鐘後,CPU使用率突破了百分之七十。

  資料庫的查詢響應時間從零點八秒飆升到了兩秒。

  模擬工具的響應時間也同步增加到了一秒五。

  「並發量到多少了?」趙磊問。

  「八百個活躍連接,還在增加。」負責資料庫監控的技術員回答。

  又過了三十秒,俞飛鴻聽到伺服器風扇的聲音突然變大了。

  那種聲音不是平穩的嗡嗡聲,而是一種急促的、高頻的旋轉聲,像是什麼東西在全力運轉。

  「CPU百分之九十了。」負責系統資源的技術員說,聲音有些緊張。

  趙磊的眉頭皺了起來,「資料庫那邊呢?」

  「慢查詢變多了。

  有幾個查詢走了全表掃描,索引沒生效。」

  「哪幾個查詢?」

  技術員報了幾個SQL語句的片段。

  趙磊快步走過去,彎下腰盯著他的屏幕,手指在鍵盤上飛快地敲了幾行命令。

  「這幾個查詢的索引我建過,不知道為什麼沒走。」


  話音還沒落,伺服器風扇的聲音突然變了。

  從急促的旋轉聲變成了一種斷斷續續的咔咔聲,然後——安靜了。

  不是徹底的安靜,而是那種伺服器停止響應的安靜。

  風扇還在轉,但聲音明顯變小了。

  監控屏幕上,CPU使用率從百分之九十直接掉到了百分之五。

  「怎麼回事?」趙磊直起身,走回伺服器前面。

  「所有連接都斷了。」負責資料庫監控的技術員說,「資料庫服務好像掛了。」

  趙磊在伺服器上敲了幾條命令,等了十幾秒,沒有響應。

  他又敲了一次,還是沒反應。

  「伺服器卡住了。

  重啟。」

  他按下伺服器的電源鍵,等了五秒,又按了一次。

  電源燈滅了,然後又亮起來。

  伺服器開始重新啟動,屏幕上滾過一行一行的啟動信息。

  辦公室里的四個人都盯著那台伺服器。

  俞飛鴻把手裡的咖啡杯放在桌子上,走過去,站在趙磊身後。

  「什麼情況?」

  趙磊沒有回頭,聲音有些沉,「高並發的時候,資料庫的查詢堆起來了,鎖表了還是怎麼回事,不太確定。

  等重啟完看日誌。」

  「大概要多久?」

  「三五分鐘。」

  伺服器啟動的速度很慢,比平時慢得多。

  啟動信息一行一行地滾過去,每一行都讓人等得心焦。

  趙磊的手指在鍵盤上輕輕敲著,這是他緊張時的習慣動作。

  伺服器終於啟動完成了。

  趙磊登錄進去,第一件事是查看系統日誌。

  日誌里密密麻麻地記錄著系統崩潰前的最後幾秒鐘發生的事情。

  他一行一行地看,手指在屏幕上移動,目光專注得像一把刀。

  「看到什麼了?」俞飛鴻問。

  「資料庫的連接數超過了最大限制,然後新的連接請求被拒絕了,但已有的連接沒有釋放,越堆越多,最後把內存吃光了,系統自己把自己殺了。」

  「為什麼會超過最大限制?」

  趙磊沉默了幾秒,「我設的連接數上限是兩百。

  理論上,兩百個並發查詢應該扛得住。

  但剛才的模擬工具可能沒控制好,實際發起的連接數超過了這個值。」

  「那現在怎麼解決?」

  「先把上限調高,調到五百。

  然後再跑一次,看看能不能扛住。」

  俞飛鴻看了一眼辦公室牆上掛著的鐘。

  從測試開始到現在,過去了不到四十分鐘。

  「再跑一次。」她說。

  趙磊修改了資料庫的配置文件,把最大連接數從兩百改成五百,然後重新啟動了資料庫服務。

  「準備好了。

  再來一次。」

  他又按下了回車鍵。

  這一次的崩潰來得更快。

  大約兩分鐘之後,伺服器的風扇再次發出那種急促的旋轉聲,然後戛然而止。

  這一次不是資料庫服務掛了,是整個作業系統都掛了。

  屏幕定格在了一個藍色的畫面上,光標在左上角一閃一閃的,鍵盤按任何鍵都沒有反應。

  趙磊的臉色變得很難看。

  辦公室里沒有人說話。

  俞飛鴻深吸了一口氣,轉身走出技術區,走到自己的辦公桌前,拉開抽屜,拿出那部浩瀚手機。

  她翻開翻蓋,按下通訊錄里那個唯一的號碼。

  電話響了三聲,接通了。

  「怎麼了?」陳浩的聲音從聽筒里傳來,帶著一種警覺。

  他大概是從她打電話的時間判斷出有事發生——周末的下午,她從來不會在這個時間打給他。


  「壓力測試出問題了。」俞飛鴻的聲音還算平穩,但語速比平時快了一些,「伺服器在高並發的時候崩了,第一次是資料庫連接數超限,第二次連作業系統都掛了。」

  「你慢慢說,從頭講。」

  俞飛鴻把壓力測試的過程、模擬的並發量、伺服器崩潰的表現、趙磊排查到的信息,一條一條地講給陳浩聽。

  她儘量說得清楚,不帶情緒,只是在陳述事實。

  陳浩聽完之後,沉默了幾秒。

  「趙磊怎麼說?」

  「他還在查。

  但從日誌上看,不像是單純的配置問題。」

  「你把電話給趙磊,我跟他說幾句。」

  俞飛鴻拿著手機走回技術區,把手機遞給趙磊。

  「他找你。」

  趙磊接過手機,貼在耳朵上。

  他沒有說話,只是聽。

  聽了一會兒,他嗯了一聲,又嗯了一聲,然後說:「我查了慢查詢日誌,有幾個查詢走了全表掃描。

  對,我建過索引,但沒生效。

  可能是數據分布的問題,統計信息沒更新。

  好。

  好。

  我試試。」

  他把手機遞迴給俞飛鴻。

  【跪求禮物,免費的為愛發電也行!】

章節目錄