一次生產環境web服務遷移故障總結摘自老男孩培訓內部BBS平台】
本文是老男孩老師親自參與協助學生解決的一個生產案例,值得博友們學習和借鑒。
1)緊急問題發生時的排錯思路借鑒。<=該生非常有心,觀察的如此細緻,難得一也。
2)學生解決問題後的解決總結與反思習慣。<=該生能夠始終貫徹總結習慣,難得二也。
這兩條正是老男孩linux培訓的核心思想6重中的三重啊,重思路,重習慣,重總結。
該生能夠總結並和其他師兄師弟們分享自己的經曆經驗,感恩和分享之心,難得三也。
這三個難得,都是成就個人的不可或缺的關鍵,如果具備了,就算做別的職業,也必然是優秀的。
故障緣由:
公司伺服器要整改,準備用一台新伺服器安裝LAMP環境,承擔現在的WEB伺服器,然後將現有的伺服器重新規劃整理;
故障現象:
當把代碼用rsync同步到新伺服器上,開啟apache服務,做好DNS解析後,剛開始訪問的時候是OK的!但是在不到一分鐘的時候,網站就開啟的非常慢,首頁開啟時間有時到了幾分鐘幾乎相當於訪問不了),查看Apache報錯日誌,沒有明顯的錯誤異常日誌;
解決過程:
1、首先老男!孩老師讓先把DNS切換到新伺服器上去,把流量引過來因為當時不是訪問高峰期,網站臨時的波動是允許的);
2、老男孩老師讓安裝上firbug等工具,查看網站訪問慢的時候是哪一部分的載入比較慢;
3、一分鐘後,網站訪問開始變慢,根據第二點,查看網站首頁載入時間的時候,發現首頁載入的第一個頁面項時間就超過了20s;
4、老男,孩老師在本機使用wget訪問,然後在機房同區域網路的其他伺服器上wget 內網地址,結果一樣還是特變的慢此時幾乎就已經排除是網路原因了!)
5、老男孩老師讓在網站根目錄下面建立一個靜態頁,去訪問結果一樣,開啟時間非常慢),也幾乎排除了資料庫連結慢的原因,問題大約定在是apache的問題;
6、此時老-男孩老師先將Apache stop,然後start,這樣發現網站訪問速度沒有任何變化;
7、 老男孩老師這時先將網站stop,然後使用killall命令將所有httpd進程殺死,再start,此時發現訪問速度突然快了,並且一分鐘後訪問又是很慢;
8、 對比第六步跟第七步發現多了一個殺死httpd所有進程,訪問速度就能複原,分析一下得出這兩步做的區別就是第六步會保留已經建立連結的訪問,而第七步是直接全部訪問連結都沒有了此時,老男孩老師就說很有可能是訪問串連數過多);
9、 查看此時的並發串連數,大約在600左右,然後詢問我是什麼模式當時apache是跑在perfork模式下的);
10、 開啟apache設定檔,找到perfork模組的參數設定:
<IfModule mpm_prefork_module>
StartServers10
MinSpareServers20
MaxSpareServers30
ServerLimit5000
MaxClients5000
MaxRequestsPerChild 10000
</IfModule>
但看參數的設定,是沒有什麼問題的,此時老男孩老師開啟apache錯誤記錄檔,查看錯誤資訊的時候發現有一條資訊記錄的是類似串連數的隱蔽問題;當時的記錄已經清空了,這裡是翻譯過來的意思)
11、看到這裡老男-孩老師就確定是perfork模式的參數設定有問題,根本就沒生效,而導致採用預設的256,但是現在的連結並發數已經大於256了,所以後面的訪問使用者就處在等待的狀態,也就出現了一分鐘後就訪問特別慢的情況;
12、老男0孩老師根據之前規範的文檔,看見ServerLimit的位置在文檔中配置的是第一行,而現在伺服器上的是配置在第四行的,將ServerLimit參數行放到第一行,然後將apache關掉重啟;
13、這個時候再次訪問的時候,網站一切正常,問題解決!!!!!
根據上面老男孩老師解決這個問題的過程。我總結了一下老男孩老師在結果這個問題時的思路:
1、出現問題,先分析故障故障,定義問題出現的大範圍這次故障,在伺服器壓力並不大的時候就出現訪問很慢,老男孩老師就確定了是服務配置問題,跟伺服器硬體關係不大!)
2、定位問題之後逐一排查縮,把問題的出現原因逐漸縮小伺服器硬體、網路因素、服務配置):
2、1通過伺服器TOP命令--à得出不是伺服器硬體;
2、2通過內網訪問---à排除是網路的因素
2、3通過建立靜態頁--à排除apache以外其他服務配置問題
2、4通過查看apache設定檔--à找出問題所在,解決問題
PS:此次老|男孩老師的故障排查過程我親眼目睹,老男孩老師在做每一步的時候,都十分有目的性,並且在一步銜接一步的去發現、排除問題;之前老男孩老師一直跟我們說思想往往比你學到一些東西知識更重要,以前的時候沒有體會到,但是這次看著老男孩老師解決故障的過程,除了羨慕之外,更深深的體會到了做一件事情思想的重要性!!有了思想,站在一個宏觀的位置去考慮問題,一切故障問題的解決思路、解決步驟都會清晰無比!!
本文出自 “老男孩linux營運” 部落格,轉載請與作者聯絡!