為什麼Hacker News昨晚一夜當機

aqee發表於2013-02-28

  這是Hacker News官方網站上的一篇宣告,解釋為什麼Hacker News昨晚上當機一夜。

  昨天Hacker News當機了一晚上。問題不是由於我們新上的伺服器。事實上,其中的原因愚蠢的讓人不好意思說。

  有一個評論貼,一個新使用者想在裡面發表回覆,但釋出出去的內容沒有成為目標評論的子評論,反而成為與它平級的評論。我回復了一個評論來解釋Hacker News是如何工作的。但我覺得該幫這個人修復一下,在他的回覆上做個小手術。不幸的是,我用錯了評論的ID,使評論的樹結構裡出現了一個迴圈;我使一條評論成為了它自己的下級評論。這樣一來,任何一個人試圖瀏覽這個帖子時,伺服器都會生成一個無限長的長頁面。因為這個評論所屬的文章正處在首頁,所以這個動作被大量的執行。

  不知什麼原因,我在修改這個評論後並沒有去檢視這個評論是否留在了它正確的位置。一定是有什麼事情讓我分心了。所以我沒有發現任何異常,直到不久之後伺服器看起來開始有些喘。

  我擷取了伺服器日誌看發生了什麼,裡面的資訊看起來是Hacker News缺少足夠的記憶體,在頻繁的回收記憶體。不管是不是這個原因,或出現了其它事故,這種問題一般是通過重啟伺服器都能解決。於是我這樣做了。因為當天我開發了一些程式碼,所以當我重啟伺服器時,上面執行的是新版程式。

  重啟了服務後,問題依舊存在。我懷疑是我那天寫的程式裡有什麼問題,我嘗試將版本恢復到上一版,然後重啟服務。但問題依舊存在。我們又試著把這以前老伺服器上的程式拿過來換上,也不好用。我們認識到程式應該是沒問題的,我們認為問題應該出在了這個新伺服器上。於是我們試圖切換到老的伺服器上。我不知道我的同事Nick是否成功的切換,因為中途我放棄了,睡覺去了。

  當我今早醒來,監控顯示Hacker News仍然在新伺服器上跑。出問題的那條評論仍在那,但那篇文章已經被新上來的文章頂出首頁。所以整體上Hacker News並沒有當機,但跡象仍顯示什麼地方出了問題。例如,/threads?id=pg 無法訪問,因為我使這個帖子裡出現了死迴圈。

  終於,資料顯示,問題似乎跟某個特定的ID相關。當我到伺服器上檢視這條資料時,終於意識到了一定是我做錯了事。

  於是我又給那個回覆動了一次手術,這次很小心,一切又恢復正常了。

  我感到很抱歉。

  英文原文:Why HN was down

相關文章