【问题标题】:Which server to user for a rails 4 app which has long running requests?对于具有长时间运行请求的 Rails 4 应用程序,用户使用哪个服务器?
【发布时间】:2015-01-08 09:27:12
【问题描述】:

我有一个 rails 4 应用程序,它有一些对外部 API 执行长时间调用的方法。问题是这些请求会阻塞整个应用程序。并且只能同时服务一个 1 用户(请求)。那不是想要的。 所以我的想法只是使用 Thin 作为 Web 服务器,因为它是多线程的并支持并发。我说得对吗,它的开源版本中的 phusion 将无法同时运行多个请求

在这种情况下,性能最佳的设置是什么?

【问题讨论】:

标签: ruby-on-rails multithreading concurrency passenger thin


【解决方案1】:

我强烈建议您研究其中一种后台作业处理系统(我个人最喜欢的是 Sidekiq)。将这些长时间运行的作业卸载到 Sidekiq 并重新配置您的应用程序以适应(例如检查作业是否已完成等)。

【讨论】:

  • 我就是这么做的。我使用了 sidekiq,但这意味着我必须在调用 api 后轮询或流式传输结果。但是,与允许许多并发连接的瘦服务器相比,有什么好处呢?
  • 也许没什么。真的取决于您的应用程序以及“长期服用”的含义。在某些时候,客户端开始超时,等等。
  • 请求通常最多需要 5 到 30 秒,因此超时应该不是问题。恕我直言,在这种情况下,轮询或流式传输可能会过度架构,因为轮询会一直 ping 您的应用程序并导致更多请求。那么为什么不只是长时间运行请求等待 api 调用完成。
猜你喜欢
  • 2020-10-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-02-19
  • 1970-01-01
  • 2011-04-29
  • 2017-11-06
  • 1970-01-01
相关资源
最近更新 更多