0

我在 Heroku 上的免费层上有一个 Rails 应用程序,它最近开始吸引一些用户。我的应用程序中的一个事件涉及查询另一个 API,最多可能需要 10 秒才能完成。如何确保同时访问一个简单页面的其他用户(作为另一个用户的 API 事件)不需要等待 10 秒来加载他们的页面?

我需要为更多的 Dynos 付费吗?这是可以用delayed_job gem 解决的吗?另一台主机(如 AppFog 或 OpenShift)是否能够更快地处理同时请求?

更新: 这个问题建议手动处理线程而不是使用delayed_job。

4

3 回答 3

1

这听起来像是延迟工作的情况。如果第一个请求只是在等待,最有效的做法是分配一个进程等待它完成,然后将 Rails 进程松散以处理另一个请求。

于 2013-08-06T15:13:44.340 回答
1

是的,您需要更多的测功机,特别是工人测功机,这些是在后台工作的人,您可以在延迟的工作上查看此 railscast,这也可以提供帮助:

http://railscasts.com/episodes/366-sidekiq

这里还有一个关于将独角兽和多线程添加到您的免费​​ heroku 实例的快速教程:

https://devcenter.heroku.com/articles/rails-unicorn

您将测功机分成两个或多个实例,然后每个实例都可以处理不同的请求

于 2013-08-06T15:14:43.610 回答
0

您使用的是哪种应用服务器?如果您使用乘客或独角兽,您可以拥有多个可以处理同时请求的工作进程

http://www.modrails.com/documentation/Users%20guide%20Apache.html#_passengermaxinstancesperapp_lt_integer_gt

于 2013-08-06T15:15:20.230 回答