2011-03-31 25 views
6

一段時間以來,我一直在使用Ruby Enterprise Edition和Passenger(對於Apache,因爲我反正對其他東西運行Apache),但是我想知道現在服務器上有什麼新的趨勢。 例如我聽說過Thin,Unicorn ......我也知道1.9.2比REE快,但我想知道RAM的消耗。我寧願讓它消耗更少的RAM,即使犧牲一些速度。Rails(3)服務器 - 現在使用什麼?

感謝您的所有建議。

回答

6

乘客仍然非常強大,特別是在不久的將來,REE自然會支持1.9。事實上,你的應用程序可能會崩潰,但它不會影響你的機器上的其他任何東西,這是一個令人驚訝的功能。部署代碼非常簡單,因爲服務器將繼續接受連接,這意味着對您的挫折/壓力較小。

但是,比較而言:

這是一個巨大的資源被檢查出各種比較(包括內存消耗),與所有的新服務器。

它比較薄,獨角獸,客運,TorqueBox,GlassFish和特立尼達:

http://torquebox.org/news/2011/03/14/benchmarking-torquebox-round2/

+0

謝謝你,很好的資源。 – mrbrdo 2011-04-03 01:02:50

1

乘客仍然使用,因此你是不是時間或任何痕跡非常不錯的選擇。它也得到了積極的支持,並且有一個非常好的開發團隊,爲社區做出了很多貢獻。我們一直在使用獨角獸,它非常好。我們最喜歡的功能是能夠升級apps/ruby​​/nginx而不會丟失連接。

4

Mike Lewis的鏈接在比較這些不同的ruby服務器方面做得很好。我個人的經驗一直與nginx /稀土/乘客和它的一直很好。我沒有嘗試其他人,所以我不能對此發表評論。

但是,我可以說RAM的使用情況。您最大的RAM節省將來自使用32位服務器。根據我的經驗(3x 3GB應用服務器),64位REE /乘客進程佔用的RAM數量是其32位對應的2倍。我們看到從64位服務器到32位服務器的性能顯着提高,其他一切都保持不變。除非您的應用程序需要64位,否則我會建議在32位中運行您的應用程序服務器(不是數據庫)。

7

如果你想要最小的內存,你應該嘗試瘦。 它沒有主人爲獨角獸或乘客,因此使用較少的內存。 假設您有一個需要在小型虛擬機上運行的非常小的應用程序,那麼您可以使用1個瘦員工+ nginx。我使用Thin + nginx + postgres在256MB VM上運行了幾個rails 3.2應用程序,而無需交換。

獨角獸是更快,但它需要一個主人。如果你想在Heroku上運行,這很好,你可以設置2或3個工作者,並且在512MB的限制內。

如果您的應用程序非常大,並且您有太多長時間運行的請求,我會檢查jRuby和Thinidad/Torquebox。

我將幾個應用程序從MRI + Sidekiq轉換爲jruby + Trinidad + Trinidad_Scheduler。我在特立尼達服務器上使用50個線程的池獲得大約100-200請求/秒!

我喜歡jRuby的是,您可以將所有內容結合到一個Rails服務器上。您可以將EHcache,調度,後臺處理和真正的多線程放在同一個JavaVM cache_store上。

您不需要分別運行redis,memcached,resque或sidekiq。

我不是說他們不好,我喜歡sidekiq和resque,但是你可以通過在一個進程中結合所有東西來降低複雜度,並且具有很高的併發性。

更先進的企業解決方案是Torquebox,它支持羣集並且具有超級可擴展性。但是我的應用程序崩潰在扭矩盒上出現問題,所以我現在堅持到特立尼達。

jRuby的缺點?記憶!特立尼達的服務器將使用至少512MB,高達2-3GB的內存。 另外,對於單線程服務器,來自運行Ruby-1.9.3的rails應用程序的單個請求大約是jRuby上同樣請求的兩倍。

另一種選擇是彪馬,你可以得到與美洲獅的MRI全面多線程。我自己無法在我的應用中保持足夠穩定。

所以,這一切都取決於您的要求,內存使用情況,完全線程和併發性。

除了乘客,看看獨角獸,特立尼達,彪馬和Torquebox。那些似乎現在是最好的軌道服務器。

有一本很棒的書,介紹如何將Rails應用程序轉換爲jRuby,並使用幾種方法來部署您的應用程序,例如特立尼達。 http://pragprog.com/book/jkdepj/deploying-with-jruby

Torquebox文檔非常好。它非常詳細,並解釋瞭如何使用所有Torquebox功能。 http://torquebox.org/documentation/

我希望分享我的經驗幫助。