我讀過很多關於在Rails中上傳文件的區域,導致Web應用程序掛起,我想知道這是Heroku Dyno的情況嗎?如果用戶要上傳1個gig文件,那麼如果它被託管在單個dyno上,會導致應用程序的其餘部分掛起?Heroku和Rails文件上傳
1
A
回答
2
默認情況下,Rails不是線程安全的。這意味着每個運行的Rails實例一次只能處理一個請求。
在Heroku上,您可以在單個測功機上運行1個進程。這可能是薄,麒麟,一個工人的delayed_job等
由於Rails的不是默認線程安全的,薄只能同時處理1個請求(這意味着你的測功機只能同時處理1個請求)。在這種情況下,當用戶上傳1 GB文件時,Thin只能處理該請求=導致下一個請求掛起。爲了解決這個問題,你將不得不調整dynos的數量。例如運行4個dynos(運行Thin),並且您可以一次處理4個請求。
但是,如果您在Heroku測試版上使用Unicorn,並將Unicorn worker數量設置爲4,則Rails一次可處理4個請求。獨角獸很聰明。它在單個Heroku測功機內產生4個進程。這意味着當您上傳1 GB文件時,那麼Unicorn會繼續並處理3個請求。這一切都運行在一個單一的測功機上。
退房這篇文章在Heroku和獨角獸的詳細信息:http://michaelvanrooijen.com/articles/2011/06/01-more-concurrency-on-a-single-heroku-dyno-with-the-new-celadon-cedar-stack/
希望這有助於。
UPDATE
如果你把文件上傳到S3,你其實可以完全跳過你的DYNOS並直接上傳文件到S3。只是一個小費。 ;-)
相關問題
- 1. Rails文件上傳和Heroku
- 2. Rails 4 Delayed_Paperclip文件上傳S3 Heroku
- 3. Heroku文件上傳
- 4. Heroku文件上傳
- 5. 在Heroku上上傳文件
- 6. Heroku的文件上傳和Node.js的
- 7. Heroku文件上傳問題
- 8. 使用heroku上傳文件
- 9. Rails文件上傳:上傳文件夾
- 10. Rails文件上傳
- 11. 在Heroku上使用Rails 3和回形針上傳多個文件
- 12. Heroku上的Django,上傳文件與gunicorn
- 13. Heroku上的大文件上傳(NodeJS + Express)
- 14. Rails/Heroku - 如何防病毒掃描上傳的文件?
- 15. Heroku上的Rails + Paperclip + S3上傳錯誤
- 16. 無法使用node.js和heroku上傳文件到文件夾
- 17. 使用Rails,Paperclip和Backbone上傳文件
- 18. rails ajax文件上傳和nginx
- 19. Rails:上傳文件的校驗和
- 20. 使用Rails和ExtJS上傳文件?
- 21. Ruby on rails文件上傳
- 22. Ruby Rails:上傳文件
- 23. Rails 4 ckeditor文件上傳
- 24. Rails上傳特定文件
- 25. Rails 3 + Mobile +文件上傳
- 26. 用Rails上傳文件?
- 27. 在Rails中上傳文件
- 28. 如何將.php文件上傳到Heroku
- 29. Django的Heroku的文件上傳
- 30. 用Carrierwave在Heroku上傳大文件