2003
01 02 03 04 05 06 07 08 09 10 11 12
2006
01 02 03 04 05 06 07 08 09 10 11 12
2007
01 02 03 04 05 06 07 08 09 10 11 12
2008
01 02 03 04 05 06 07 08 09 10 11 12
2009
01 02 03 04 05 06 07 08 09 10 11 12
2010
01 02 03 04 05 06 07 08 09 10 11 12
2011
01 02 03 04 05 06 07 08 09 10 11 12
2017
01 02 03 04 05 06 07 08 09 10 11 12
2018
01 02 03 04 05 06 07 08 09 10 11 12
 
Jun
28
2008

警告!OSX 內含嚴重漏洞!完全不適合當伺服器!請千萬小心!

在各大媒體與部落格「薰陶」下,用聳動的標題殺人法或者寫一些偏頗的戰文吸引眼球好像是很稀鬆平常的事情。我現在正在做這件事。Blame the media.

最近 Hypo 的伺服器(當然是 Mac)一到半夜十二點,就很準時地死當。當到什麼程度呢?彩球猛轉,只能按電源重開機,啥強制結束、sudo shutdown -r now 等任何你想得到的指令都完全沒反應,根本連 ssh 都進不去了! 固定的時間當機,第一直覺就是檢查 cron jobs 和 /etc/periodic/daily 底下的東西吧。嗯,完全看不出什麼問題。如果是軟體問題的話,調整系統時間呢?又很正常。我們的 server 一定要等到實際上的台北時間半夜十二點才會死當。十二點房間有什麼異狀?跳電?鬼魂?是不是房東到了半夜來偷玩我們電腦?留守觀察以後,什麼奇怪的事情都沒有。

硬體出問題?這是我們一開始的假設,不過沒多久就被推翻了。這個問題很難 debug,因為每天就固定一次,不知道要如何重製,也不知如何阻止。今天嘗試一些解決方法,也沒有辦法立刻驗證方法有沒有效,要等到半夜十二點。如果沒效,就要半夜從家裡跑去辦公室重開機! 馬的,那些 Apple Fans 不是常常吹牛說有多穩有多穩,說什麼「哇,好想看到四國畫面喔!我都沒看過耶」、「Mac 連當機都美美的」,這下子連 Windows XP 都不如,糗了吧。 根據當機天數來算,這症頭可能是從總統大選那天開始的。混帳,不是說什麼「馬上就會好」嗎?我看變成「馬上就爛」了吧! 到此為止應該已經讓很多鄉民累積很多戰意了吧!要戰請便,這樣可以幫我吸引更多人氣。

以下是正經的東西: 在第二天發作時,我們掌握了大概的可能。在 OSX 內有一隻重要的程式,叫做 lookupd。這隻程式有萬年老 bug,在處理 cache 時,某些特定的操作會讓 lookupd crash!更加不妙的是,lookupd crash 後因為 bug 的關係沒辦法重生。而幾乎所有大小事都需要用到 lookupd(包括 sudo)。因此 lookupd 掛掉以後,幾乎所有的程式都沒辦法執行了,只能重開機。 這問題在 10.0 就有了,居然到 10.4 都還沒修正!而且網路上也有不少人遇到和我們一樣的事情,你可以去 Apple 的 mailing list 搜尋 lookupd 看看出了多少問題。為什麼我之前都沒聽過這種事情?Mac OS X 有可能因為瀏覽幾個特定的網站,就會當機當到需要按電源鈕重開的地步! 而我們的狀況更奇怪。

如果只是純軟體因素的話,那調整系統時間應該可以再次觸發問題才對,現在是非得等到半夜才會當機,因此我推測有可能是外面有機器定時會連過來,造成 lookupd 當掉。每天嘗試一種網路上的解法,並且思考到底該怎麼辦。昨天我推測可能是 DNS 的關係,因為 DNS server 的 cache 預設是一天過期,搞不好就是因為外面的 DNS server 定時連過來,造成我們當機呢?所以我清了清 cache,又在半夜把 named 關掉。照樣當機。 Leopard 把 lookupd 拿掉,換成 dscacheutil。本來想說最後一招就是升級成 Leopard,應該可以解決問題,雖然重灌要搬移很多設定,至少不會當機。沒想到 #opendarwin 當天就有人說他的 leopard 被我傳染了,有同樣的症頭。 而最辛苦的還是半夜跑去重開機器了,我在這邊打打指令實在不算什麼。話雖如此,今天感到強烈的挫敗感。我再也耐不住性子每天試一種解法,想把問題和解決方法找出來。我只想要快點把這個該死的問題給解決。 於是洩氣的我花整天把 mailing list 的每篇討論都看完,只要沾得上一點關係,就嘗試看看他們的方法。我已經記不得我做了什麼了,因為實在太多了(連在機器上放奶油椰子乖乖的迷信都試過了)!我把這種胡搞一通,稱為「雞尾酒療法」。 結果雞尾酒療法真的生效了。就在剛剛,半夜十二點,今天沒有當機。靠北。 本篇的重點是:

  1. OSX 當機當到必須按開機鍵重開,有可能只是因為一個小小的 lookupd crash。而台灣廠商多半不知道這點,可能會建議你換 ram。
  2. Apple 從 10.0 到 10.4 似乎都沒有修正這個 bug。10.5 也可能有類似的症頭。要當伺服器?你最好禱告不要遇到這種鳥問題。
 

Annotations RSS

“忘了補充說明,網路上有程式叫做 unlockupd,對我們來說完全沒用。”

---yllan. 3/28, 2008

“對了,也有人遇到 OSX server uid 會亂跳的情況。拿來當 server 真的要三思啊……”

---yllan. 3/28, 2008

“重點是,奶椰乖乖放一天後,
還得大家把它吃掉才會有效 😛”

---yoho. 3/28, 2008

“可以推「linux 和 FreeBSD 都很難用」這句嗎?!”

---mifan. 4/15, 2008

“我用它來當server有好幾年了,原因就是覺得它穩定易用。可能是我好彩,從沒有遇到過你所說的情況。我沒有你的技術背景,如果我真的遇到就只有投降了。”

---Michael. 4/24, 2008
 
 

Write Concisely