【问题标题】:Rails 3.2.x + Glassfish + How to multithread?Rails 3.2.x + Glassfish + 如何多线程?
【发布时间】:2013-02-01 17:26:41
【问题描述】:

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

best practices article 建议我需要将最大和最小运行时间设置为 1,然后转到 config/environment.rb 并放入该行

config.threadsafe!

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

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

【问题讨论】:

    标签: multithreading glassfish jrubyonrails


    【解决方案1】:

    必须做到以下几点

    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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-01-01
      • 1970-01-01
      • 2011-12-24
      • 2012-07-13
      相关资源
      最近更新 更多