Gea-Suan Lin's BLOG

Saturday, May 20, 2006

DreamHost 的 CPU 限制

剛剛看到 The Truth About Overselling! 這篇,突然想起有些積了很久的東西要寫 :p

主要有兩個要注意的:

第一個,我們先計算出來:一天有 1440 minutes,如果有兩顆 CPU 就有 2880 CPU minutes,60 CPU mins 佔了 2%+,換句話說,一台雙 CPU 的機器只夠給五十個用滿 2%+ 的客戶用。

第二個, 提供了兩種模式跑 :CGI mode (可以跑 PHP4 或 PHP5) 或 mod_php4,前者是預設值,跑 PHP4。

在 CGI mode 下會以 suexec 轉到 user 的身份跑,當然比較安全:所有的檔案權限都可以設定為 600,但是比較慢:因為要先 fork()execl() 到 suexec,再 execl() 到 php.cgi。

而 mod_php4 當然就快多了,少了 fork() + execl() + execl(),但 就是以 apache 的身份在跑,CPU resource 不會掛在 user 帳上,只要不要吃的太兇,其實都不太管。這時 安全上的問題則是透過 裡設定 safe_mode,在這個模式下無法透過 fopen() 開啟目錄外的檔案或 symbolic link,以及種種限制。

回過頭來說 Blog Software 以及我對於 開發者心態不以為然。

在發展時就都有考慮到 safe_mode 的問題,所以在 上可以直接使用 mod_php4。另外一方面, 在發展新功能的同時,也在控制 CPU resource 與 resource 的消耗量。

還沒搬家前,就是以這種方式在跑。

反過來看當年的 pLog (現在叫 ),這是 2005/06 時裝好 pLog 1.0 後覺得很慢,拿出工具追蹤所發現的紀錄:

03:29 <@Ben_> 救命喔…讀取首頁就要用到 272 個 php 檔案…

到了 2006/02/19,DreamHost Sucks! 我的惡夢! 這篇最後面提到:

PS 2:我的 CPU Minuts 是多少? 195 Minutes 而已啦!他們規定只能用 60 Minutes。

用了整台主機 6%+ 的 CPU resource 還可以大喊人家爛,而且是自己在維護的 … *無言*