12/07/2006

Mongrel 真的夠穩

在跑 Ruby on Rails 服務中,Lighttpd + Fastcgi 是 performance 很好的選擇,但是他有一個缺點,他很難管理,有時候會出現怪怪的情況。根據這個網頁的說法
The net effect is that my FastCGI dispatchers become unresponsive after a while, potentially after a huge traffic spike. Those sit there doing nothing and lighttpd is unable to talk to them.
當他在 high traffic 的情況下,似乎有時候會出現不太穩定的情況。雖然其實 Fastcgi 也沒那麼不堪,JavaEye 就是 run Lighty + Fastcgi ,也沒聽他們在說這樣組合不穩,Hemidemi 根據側面瞭解似乎也是跑 lighty + fastcgi,也還不是很穩定。但是如果你真的跑一個流量大到嚇死人的網站,或是你天性就是要求99.99%的穩定上線時間,有沒有更好的選擇?

這時候我們來看看另外一個跑 Ruby on Rails 常見的組合,Apache 2.2 + Mongrel。Apache 雖然效率不及 Lighty ,但是穩定度可是他的強項。而 Mongrel 呢?他夠穩嗎?

長時間觀察

我已經使用 Mongrel 跑在我公司一些流量較小的服務上面,至今已經快三個月了。除了我修改程式必須重新啟動 Mongrel 以外,他依舊每天任勞任怨的穩定服務。


尖峰時刻的穩定度

上面說的流量小服務當中,我曾經遇到一個小小的 DOS 攻擊,有個人曾經在極短時間內用 bot 塞了一萬八千多筆資料到資料庫裡面(汗,是我寫的程式有一個地方沒檢查到),Mongrel 依舊沒有任何不穩的跡象。我使用 ab 來做壓力測試時(concurrency 100), Mongrel 也沒有鬧情緒。

小結論

Mongrel 在安裝方便,管理簡單,scability 方便,以及穩定度上面表現的都相當的優異。我認為這是 Ruby on Rails 裡面,Application Server 目前最佳的選擇。

2 則留言:

tsing 提到...

nginx + mongrel 会比 apache + mongrel 有更好的性能,同样非常稳定

thegiive 提到...

我知道 nginx ,不過沒有實際做過測試,我不太確定 frontend server 要用哪種 web browser