我對Ruby web應用程序(來自java)非常陌生。 我有VPS,有1個CPU和2GB的內存,並希望玩一些鐵軌/ sinatra的東西。1 CPU上的Ruby機架應用程序 - 我應該運行多少個進程?
我正在使用Ruby 2.1.0 MRI CPU的數量如何映射到我需要運行的Web服務器進程的數量?我使用美洲獅作爲網絡服務器,並設置了默認線程(0,16)。但我注意到,還有「工人」選項可以讓另一個進程更好地處理多個請求。
我是否正確理解對於這樣的設置(1個CPU),運行2個Web服務器進程沒有意義?唯一合理的設置是1個線程進程?
謝謝。在過去的幾天裏,我讀過幾篇文章/比較等。我沒有完全通過一些進程來獲得這個東西。我在Puma網站上閱讀: 「在提供本機線程的ruby實現中,您應該調整此編號以匹配可用內核的數量。」 所以我明白,如果我有1個CPU,那麼在分叉新過程中沒有意義。我對嗎? – grafthez
另外,如果我理解正確的事情是,如果我有IO操作(數據庫讀取,文件讀取,外部API調用)ruby切換線程,並讓其他線程在等待IO時執行其工作。所以看起來典型的Web應用程序應該沒問題,只有1個工作者(進程),但內部有一些線程(例如,帶有16個線程的Puma)。或者我錯過了什麼? – grafthez
這裏是關於性能的另一篇文章http://blog.wiemann.name/rails-server 與併發有關的任何問題都是沒有真正簡單的答案。這篇文章解釋了一個'測試'併發請求的策略,但在一天結束時,您確實需要根據您的負載情況調整個人使用情況。什麼可能適用於一個應用程序很多緩慢爬行。 – muttonlamb