1

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

一篇最佳实践文章建议我需要将最大和最小运行时间设置为 1,然后转到config/environment.rb并放入该行

config.threadsafe!

但是,Oracle 的一条说明(连同Github 上的这条说明)说我只需要在web.xml配置文件或命令行中设置运行时的最小和最大数量,它没有说明 config.threadsafe!。(我对这种方法的感觉是它会占用大量内存,因为每个运行时都会加载一个完整的 Rails 实例)。

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

4

1 回答 1

2

必须做到以下几点

  1. 将最小和最大运行时间设置为 1
  2. 进入 config/environments/production.rb 并取消注释该
    #config.threadsafe!行,您还必须为您希望线程安全模式工作的任何其他环境执行此操作。

通过执行这些操作,Rails 将使用一个运行时和多个线程运行,从而为您节省大量内存。有关线程安全 jruby on rails 应用程序的其他信息可以在这里找到http://nowhereman.github.com/how-to/rails_thread_safe/

如果您使用的是 Warbler,则可以跳过第一步 - 如果您只遵循步骤#2,默认情况下将设置最小和最大运行时查看 war 文件中的 web.xml,您将看到它已被设置。同样,如果未设置线程安全,您将看到缺少最小和最大设置。

话虽如此,Rails 4 默认启用线程安全。这是提交https://github.com/rails/rails/pull/6685

另外,这里有一篇关于如何和为什么的帖子:http: //tenderlovemaking.com/2012/06/18/removing-config-threadsafe.html

于 2013-02-04T22:22:23.340 回答