我試圖更好地瞭解後臺作業的內部工作原理以及它們如何提高性能。澄清...如此背景作業不捆綁應用程序資源(在Rails中)?
我知道我們的目標是讓應用程序儘可能快地向用戶返回響應,因此您不希望解析需要10秒的巨大饋送,因爲它會阻止應用程序能夠處理任何其他請求。
因此,建議將執行時間超過500ms的任何操作放入排隊的後臺作業中。
我不明白的是,這不就是延遲了同樣的問題嗎?我知道調用該後臺作業的用戶會立即得到響應,但如果在後臺作業開始時又有另一個用戶正確完成(並且需要10秒鐘才能完成),那麼用戶不得不等待?
還是主要問題requests
是唯一可以一次發生的事情另一方面請求可以在一個+後臺作業正在運行的時候啓動?
這是正確的嗎?
越來越清晰:)。一個更明確的問題,是不是一些後臺作業隊列(如[DelayedJob](http://github.com/tobi/delayed_job))在Web服務器上運行?所以這讓我覺得它會導致性能問題。也許我錯過了那裏的東西。謝謝 – 2010-06-02 19:43:10
是的,但不一定。它所需要的只是應用程序的副本和與數據庫的連接,因此它也可以位於單獨的服務器上。 但是,它可能會影響性能,因爲它需要應用程序單獨運行(使用更多內存),所有處理都將使用CPU,而不管它是什麼。儘管如此,它在用戶請求中運行它並不會有所不同。 – 2010-06-02 19:49:54