Rails本地化开发服务器“rails s”可以同时处理多个请求

3

我使用的是Windows 7和Rails 3。在本地开发模式下,rails server不能同时处理多个请求。进程会崩溃,命令提示符会出现在前面。

我注意到这种行为发生在以下情况下:

  • 有太多的ajax请求,而且请求之间太接近
  • 在2个浏览器上加载一个简单的页面

有没有解决方法?更改本地服务器(默认为webrick)?怎么做?

谢谢。


你是如何加载这个简单页面的?你的页面视图和控制器代码是什么样子的? - acconrad
1
在开发模式下,默认情况下,Mongrel服务器以单线程模式运行。您可以在development.rb中添加config.threadsafe!来使其以多线程模式运行。 - so_mv
2个回答

7
我不知道这个问题是否还需要答案,但我通过向Gemfile添加gem 'puma'来实现这一点,然后您需要将config.threadsafe!添加到您的config/application.rb或您正在运行的环境文件(例如config/environments/development.rb)中。

有时您可能不希望启用线程安全,因此我在我的development.rb文件中添加了以下代码:

if ENV["THREADS"]
  config.threadsafe!
end

现在(根据我在development.rb中所做的)我可以运行rails s Puma,它将运行最多16个线程,并可以处理多个请求。您还可以通过Puma提高线程池的效果并进行更多配置,文档在此处

更新

请注意,在Rails 4+中不需要使用config.threadsafe!,并且我相信它已经被弃用了。

Webrick也可以处理多个请求,因此没有必要用Puma替换它。 - Slobodan Kovacevic
确实,似乎应该避免在生产环境中使用WEBrick。如果您选择在生产环境中使用Puma,这将使您的开发环境与生产配置更加接近。不过你说得对,这不是我们讨论的重点,我在撰写本文时并不知道这一点。 - Jon Phenow

0

你需要安装 Mongrel gem 并指定在运行 rails s 时要使用哪个服务器。

我不知道你们在 Windows 系统上怎么做,为什么不运行一个虚拟的 Unix 系统呢?在 Unix 上使用 Rails 不是更容易吗?所以在 Unix 上是这样的:

安装 Mongrel gem:

gem install mongrel

然后指定想要运行的服务器:

rails server mongrel

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接