話說一大早正在和同事討論技術上的問題,突然收到有網站掛掉的訊息。本來這件事情不會由我處理,偏偏公司裡苦命的 MIS 今天休假,理由又是帶家裡小朋友去看醫生,多麼正當的理由啊!所以我這個不入流的工程師,就得趕鴨子上架去處理問題。
當時倒是沒有想到會遇到一堆讓人鬱悶的事倩…
由於是網站不通,首先當然是由網頁主機的 HTTP 服務開始查起。發現服務仍然好端端的待在 80 port 上,再進一步去追查,發現一堆 httpd 的程式不知道什麼原因,保持活動卻不吃 CPU ,猜想可能是被某種原因卡住動不了,超過 daemon 上限所以後來的網頁要求無法被處理。
OK ,那就重啟 HTTP 服務吧!反正當下沒有人能上得了網站(已經掛了),就不用擔心有人被踢掉的問題。嗯,服務重啟…等待完成訊息…重啟完成,到網站上看一下,原來應該待在那裡的網頁出現了,滿是成就感的回報問題排除,準備打封信去向 MIS 臭屁一下。
誰知道,回報不到 30 秒,就回覆說網站又開不了了,這次是連不到資料庫。
好嘛,資料庫掛了,頂多再重啟資料庫就好。只要資料沒丟,都可以撐到明天 MIS 進公司。雖然不知道剩下那些 Log 記錄能不能讓他猜到問題的原因,不會受到我「破壞案發現場」的影響。方案決定好要實行的時候,突然發現「我找不到資料庫」位置。
在我的主機清單中,並沒有資料庫這台主機的存在。雖然不久之憑印象是想起好像被放在另外一台機器上,但是清單中沒有,就只能去翻程式碼了。兩者有資料庫的連線,總會有一個地方寫下那台主機的 IP 。好在之前架站的印象還在,滿快就找到了這個網站 IP,緊接著我又遇到了另一個問題︰「我連不到這台主機」。
看訊息完全沒有回應,似乎是被防火牆 drop 掉,所以會出現的封包如同打水漂一般毫無回應。所以無法判定資料庫主機是否還活著。本來想要試著利用 mysql 的命令列指令試著連看看,但是因為實在是不熟悉資料操作之外的 SQL 語法,而資料庫的防火牆主機必然不會開放公司的 IP 直接由 3306 port 連入。
本來到了這個時候已經快要打算放棄,打電話叫公司 MIS 來處理,但是就是一整個不服氣,沒道理一年到頭才請幾天假的 MIS ,一請假就得被 call 回公司。還是因為我技術不到的關係。雖然我不是 MIS ,不會這些是正常的。但還是不想就這麼放手。
後來想起,網站主機裡面,有一台有安裝 phpMyAdmin,而之前和它的設定檔打過交道,它是可以連線到另一台主機,不限於同一個主機。因此就開始著手進行設定。希望這樣子的繞路可以繞得到我想要去的地方。
中間又遇到 MIS 之前設定的 apache 安全驗證,偏偏 MIS 換了密碼沒告訴我,所以就很暴力的直接把驗證功能關掉。這才順利的進到 phpMyAdmin 並且連結到資料庫。謝天謝地之前在設定資料庫的帳號權限時,給的權限夠大,否則就只能看看資料,什麼也作不了。
再接來的就比較順利了,重新檢查、修復、最佳化資料表,再重新啟動 HTTP 服務就正常了。再來就沒有聽到其它問題了。
猜想可能是某個原因造成資料庫出現異常,等待資料庫回應的 HTTP 服務一直沒完沒了的等待,直到等待的 HTTP 服務達到系統上限,就不再有新的 HTTP 服務,就變成網站無法使用。好在我的三腳貓功夫最後還是讓網站恢復正常,不需要把 MIS 叫回來。
不過到第二天,MIS 告訴我他昨天還是有接到其它地方打來,要詢問其它問題的電話。只能說這位 MIS 的運氣真的太不好,連一個休假還不得消停。
沒有留言:
張貼留言