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