第1945章攜程後臺的首輪考驗
壓力測試定在周六上午。
這是趙磊提議的。
他說選在周末,萬一出了問題,不會影響周一到周五的正常工作進度。
俞飛鴻同意了這個安排,還特意從家裡帶了一壺咖啡到辦公室,給技術團隊提神。
測試開始之前,趙磊把所有人召集在一起,在白板上畫了一個簡單的架構圖,把壓力測試的流程講了一遍。
他手裡拿著一支黑色馬克筆,一邊畫一邊說,聲音不大但很清楚。
“我們模擬一千個用戶同時訪問首頁,然後五百個用戶同時進行航班查詢,最後兩百個用戶同時提交訂單。
每一個階段持續五分鐘,中間不停頓,連續跑完。”
一個年輕的技術員舉手問:“磊哥,服務器配置扛得住嗎?”
趙磊把馬克筆的蓋子蓋上,“扛不扛得住,測了才知道。
所以才叫壓力測試。”
俞飛鴻站在辦公室的角落,端著一杯咖啡,安靜地看著他們。
她冇有插話,技術上的事情她不懂,也不打算裝懂。
她在這裡的唯一原因,是如果出了問題,她需要第一時間知道,然後第一時間聯絡陳浩。
趙磊走到那臺服務器前麵,檢查了一遍所有的連接線。
這臺服務器是兩個月前采購的,戴爾的poweredge,雙cpu,2gb內存,四塊scsi硬盤做了raid5。
在當時這個配置不算低,但趙磊說過,對於互聯網應用來說,硬件永遠不夠用。
“準備好了嗎?”趙磊問。
三個技術員分彆坐在自己的工位上,麵前屏幕上顯示著不同的監控界麵。
一個人盯著cpu和內存的使用率,一個人盯著數據庫的連接數和查詢響應時間,一個人盯著網絡流量和磁盤i/o。
“數據庫監控就緒。”坐在中間的那個技術員說。
“網絡監控就緒。”左邊那個說。
“係統資源就緒。”右邊那個說。
趙磊走到自己的電腦前,打開了一個模擬並發請求的工具。
這個工具是他自己寫的,功能很簡單——模擬大量用戶同時訪問網站的不同頁麵,記錄響應時間和錯誤率。
“三、二、一,開始。”
他按下了回車鍵。
辦公室裡的五個人都安靜下來,隻剩下服務器風扇的嗡嗡聲和鍵盤敲擊的聲音。
俞飛鴻靠在牆上,手裡端著咖啡杯,眼睛盯著趙磊的屏幕。
最初的三十秒,一切正常。
監控屏幕上顯示cpu使用率從百分之五升到了百分之四十,內存占用從五百兆升到了八百兆,數據庫連接數從兩個增加到了八十個。
趙磊的模擬工具顯示,平均頁麵響應時間從零點三秒增加到了零點八秒。
“還在合理範圍內。”趙磊說,語氣還算平靜。
一分鐘後,cpu使用率突破了百分之七十。
數據庫的查詢響應時間從零點八秒飆升到了兩秒。
模擬工具的響應時間也同步增加到了一秒五。
“並發量到多少了?”趙磊問。
“八百個活躍連接,還在增加。”負責數據庫監控的技術員回答。
又過了三十秒,俞飛鴻聽到服務器風扇的聲音突然變大了。
那種聲音不是平穩的嗡嗡聲,而是一種急促的、高頻的旋轉聲,像是什麼東西在全力運轉。
“cpu百分之九十了。”負責係統資源的技術員說,聲音有些緊張。
趙磊的眉頭皺了起來,“數據庫那邊呢?”
“慢查詢變多了。
有幾個查詢走了全表掃描,索引冇生效。”
“哪幾個查詢?”
技術員報了幾個sql語句的片段。
趙磊快步走過去,彎下腰盯著他的屏幕,手指在鍵盤上飛快地敲了幾行命令。
“這幾個查詢的索引我建過,不知道為什麼冇走。”
話音還冇落,服務器風扇的聲音突然變了。
從急促的旋轉聲變成了一種斷斷續續的哢哢聲,然後——安靜了。
不是徹底的安靜,而是那種服務器停止響應的安靜。
風扇還在轉,但聲音明顯變小了。
監控屏幕上,cpu使用率從百分之九十直接掉到了百分之五。
“怎麼回事?”趙磊直起身,走回服務器前麵。
“所有連接都斷了。”負責數據庫監控的技術員說,“數據庫服務好像掛了。”
趙磊在服務器上敲了幾條命令,等了十幾秒,冇有響應。
(本章未完,請點擊下一頁繼續閱讀)第1945章攜程後臺的首輪考驗(第2/2頁)
他又敲了一次,還是冇反應。
“服務器卡住了。
重啟。”
他按下服務器的電源鍵,等了五秒,又按了一次。
電源燈滅了,然後又亮起來。
服務器開始重新啟動,屏幕上滾過一行一行的啟動信息。
辦公室裡的四個人都盯著那臺服務器。
俞飛鴻把手裡的咖啡杯放在桌子上,走過去,站在趙磊身後。
“什麼情況?”
趙磊冇有回頭,聲音有些沉,“高並發的時候,數據庫的查詢堆起來了,鎖表了還是怎麼回事,不太確定。
等重啟完看日誌。”
“大概要多久?”
“三五分鐘。”
服務器啟動的速度很慢,比平時慢得多。
啟動信息一行一行地滾過去,每一行都讓人等得心焦。
趙磊的手指在鍵盤上輕輕敲著,這是他緊張時的習慣動作。
服務器終於啟動完成了。
趙磊登錄進去,第一件事是查看係統日誌。
日誌裡密密麻麻地記錄著係統崩潰前的最後幾秒鐘發生的事情。
他一行一行地看,手指在屏幕上移動,目光專註得像一把刀。
“看到什麼了?”俞飛鴻問。
“數據庫的連接數超過了最大限製,然後新的連接請求被拒絕了,但已有的連接冇有釋放,越堆越多,最後把內存吃光了,係統自己把自己殺了。”
“為什麼會超過最大限製?”
趙磊沉默了幾秒,“我設的連接數上限是兩百。
理論上,兩百個並發查詢應該扛得住。
但剛才的模擬工具可能冇控製好,實際發起的連接數超過了這個值。”
“那現在怎麼解決?”
“先把上限調高,調到五百。
然後再跑一次,看看能不能扛住。”
俞飛鴻看了一眼辦公室牆上掛著的鐘。
從測試開始到現在,過去了不到四十分鐘。
“再跑一次。”她說。
趙磊修改了數據庫的配置文件,把最大連接數從兩百改成五百,然後重新啟動了數據庫服務。
“準備好了。
再來一次。”
他又按下了回車鍵。
這一次的崩潰來得更快。
大約兩分鐘之後,服務器的風扇再次發出那種急促的旋轉聲,然後戛然而止。
這一次不是數據庫服務掛了,是整個操作係統都掛了。
屏幕定格在了一個藍色的畫麵上,光標在左上角一閃一閃的,鍵盤按任何鍵都冇有反應。
趙磊的臉色變得很難看。
辦公室裡冇有人說話。
俞飛鴻深吸了一口氣,轉身走出技術區,走到自己的辦公桌前,拉開抽屜,拿出那部浩瀚手機。
她翻開翻蓋,按下通訊錄裡那個唯一的號碼。
電話響了三聲,接通了。
“怎麼了?”陳浩的聲音從聽筒裡傳來,帶著一種警覺。
他大概是從她打電話的時間判斷出有事發生——周末的下午,她從來不會在這個時間打給他。
“壓力測試出問題了。”俞飛鴻的聲音還算平穩,但語速比平時快了一些,“服務器在高並發的時候崩了,第一次是數據庫連接數超限,第二次連操作係統都掛了。”
“你慢慢說,從頭講。”
俞飛鴻把壓力測試的過程、模擬的並發量、服務器崩潰的表現、趙磊排查到的信息,一條一條地講給陳浩聽。
她儘量說得清楚,不帶情緒,隻是在陳述事實。
陳浩聽完之後,沉默了幾秒。
“趙磊怎麼說?”
“他還在查。
但從日誌上看,不像是單純的配置問題。”
“你把電話給趙磊,我跟他說幾句。”
俞飛鴻拿著手機走回技術區,把手機遞給趙磊。
“他找你。”
趙磊接過手機,貼在耳朵上。
他冇有說話,隻是聽。
聽了一會兒,他嗯了一聲,又嗯了一聲,然後說:“我查了慢查詢日誌,有幾個查詢走了全表掃描。
對,我建過索引,但冇生效。
可能是數據分布的問題,統計信息冇更新。
好。
好。
我試試。”
他把手機遞回給俞飛鴻。
【跪求禮物,免費的為愛發電也行!】