2013-02-01 65 views
1

我在Glassfish上部署了一个JRuby 1.6.7/Rails 3.2.11 Web应用程序(前面没有Web服务器)。我想让我的应用程序是多线程的。Rails 3.2.x + Glassfish +如何多线程?

一个best practices article建议我需要最大和最小运行时间设置为1,然后去到config/environment.rb,并把该行

config.threadsafe! 

然而,a note from Oracle说(连同this note at Github),我只需要在web.xml配置文件或命令行中设置运行时的最小和最大数量,并且它没有提到config.threadsafe!。 (我对这种方法的感觉是,它会占用大量的内存,因为每个运行时间会加载完整的Rails实例)。

哪种方法是正确的?他们都对吗?哪个更好的方法去多线程?

回答

2

一个必须做到以下几点

  1. 设定的最小和最大运行时间为1
  2. 进入配置/环境/ production.rb并取消
    #config.threadsafe!线,你也必须这样做对于任何其他环境中,您希望线程安全模式工作。

通过执行这些操作,Rails将使用一个运行时和多个线程运行,为您节省大量内存。如果您使用的是Warbler,您可以跳过第一步 - 如果您只执行第二步,则默认情况下将设置最小和最大运行时间查看网页战争文件中的.xml文件将显示它已被设置。同样,如果没有设置线程安全,您将看到缺少最小和最大设置。

这就是说,Rails 4将默认启用线程安全。这里是承诺https://github.com/rails/rails/pull/6685

此外,这里是一个关于如何和whys的帖子:http://tenderlovemaking.com/2012/06/18/removing-config-threadsafe.html