DreamHost 的 CPU 限制

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

主要有兩個要注意的:

  1. 我們先計算出來:一天有 1440 minutes,如果有兩顆 CPU 就有 2880 CPU minutes,60 CPU mins 佔了 2%+,換句話說,一台雙 CPU 的機器只夠給五十個用滿 2%+ 的客戶用。
  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 的消耗量。在 還沒搬家前,就是以這種方式在跑。(在更早之前我也跑過 php.cgi 的模式,後來收到通知 CPU 超量的信,就改到 mod_php4,一直到四月底搬家)

反過來看當年的 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 還可以大喊人家爛,而且是自己在維護的 ... *無言*

9 thoughts on “DreamHost 的 CPU 限制”

  1. Hi gslin:

    這已經是你第二次沒搞清楚事情的真相就在隨便批評了!

    在那之後,我大概花了兩個禮拜來測試,那幾天大概都是 180 - 200 cpu minutes。(我也請 Dreamhost 的管理者允許這樣的測試,也跟他們說如果覺得 Server 不穩,隨時可以先暫停我的服務)

    這是的結果中,以平均 180 cpu minutes 為例,大概有平均 155 cpu minutes 來自 mediawiki,而 SMF 佔了 15 cpu minutes, 而 lifetype 佔了 10 cpu minutes (因為最少人看 Development Journal ....)

    資料隨著時間過去已經不在了,所以我無法提出證明。但是這是我測試的結果就是了。

    我不知的這樣的說法你滿不滿意了。

    建議你,下次要批評前,先花一下時間查證吧。

    Mark

  2. 資料隨著時間過去已經不在了,所以我無法提出證明。但是這是我測試的結果就是了。

    我雖然對閣下當強盜喊殺人的事情不滿,不過我還沒有小人到認為你會信口開河。

    第一次 2005/01/29 我罵 pLog 自己關門起來幹,我沒有搞不清楚那件事情的真相,我從幹剿的時候就已經知道當時閣下是故意關起門來,你認為的理由我認為不是理由。我幹剿的文章都還在:http://gslin.org/2005/01/29/447/。

    第二次 2006/05/20 這次我搞錯對象,把 MediaWiki 當成 Lifetype。早上十一點多的時候 pesty 告訴我時,我先用 del 劃掉。

    我本來是要寫一篇對於吃掉 6.7% CPU resource 的強盜跑出來喊殺人的行為不滿的文章。也打算寫一篇對明明是個 PHP Developer,知道有 mod_php4 卻硬幹說 php.cgi 會吃光資源很不以為然的文章。

    錯就錯在我把 MediaWiki 與 Lifetype 搞在一起,文章的力道就已經沒了。

  3. 我也不知該怎麼說了。後續的發展是,我把 php cgi 改成 mod_php 在 run並作測試,而且寫信詢問 dreamhost 管理者,如果我將 php cgi 改成 mod_php 對改善 CPU loading 是否有幫助。他的回答是,只要我敢再啟用 mediawiki 就永久停用我的帳號。

    另外,我也測過啟用 memcached來減少 Mediawiki 對 DB 的存取,看能不能減少 Loading ... 問題是,第二天後 CPU minutes 一樣飆高到 180 cpu minutes 以上。 :(

    所以之後我就把 mediawiki 關了,開始尋找 Hosting Service Provider 來贊助 LifeType 的 Hosting。

    當然也就沒有再超過 30 cpu minutes 了,大約是維持在 20-25 cpu minutes 上下。

    我並沒在跟你辯解 LifeType 的 performance 有多好。因為程式的寫法,所以 LifeType 在 loading 時會讀取很多的 scripts, 這是不爭的事實。這是也是 1.1 我們在嘗試改善的方向。

    BTW, SVN 的 checkout 方式,也在 wiki 上寫了,如果還不過清楚,請讓我知道,我會在補強。謝謝!

    Mark

  4. 不好意思上面的大大,借偛話一下
    現在DH上好像不允許用mod_php模式了

    導致我每天晚上都睡不大安穩等著過載通知...

    我已經改由crontab去產生大部分的頁面資訊了

    average
    0.048 seconds

    但是
    count
    201263

  5. Pingback: Mark's Place

Leave a Reply

Your email address will not be published. Required fields are marked *