【问题标题】:Where does Ruby memory config go and how can one check if it is set?Ruby 内存配置在哪里,如何检查它是否已设置?
【发布时间】:2013-03-16 14:04:12
【问题描述】:

在 REE 和 MRI 1.9+ 中,可以调整 ruby​​ 的垃圾收集器:

但是这些文章都没有说明在哪里放置这个配置。我想如果它在环境中,红宝石会在它启动时捡起它——但是,据我所知,没有办法检查它。这些设置没有显示在我能找到的任何运行时常量中。

那么,我应该把这个配置放在哪里,我怎样才能仔细检查它是否正在被使用?

【问题讨论】:

    标签: ruby ruby-enterprise-edition


    【解决方案1】:

    这些设置是environment variables,因此您只需在ruby 进程本身的父进程中设置它们。 Many people 建议为此目的创建一个简单的 shell 脚本,或许可以称之为 /usr/local/bin/ruby-custom

    #!/bin/bash
    export RUBY_HEAP_MIN_SLOTS=20000
    export RUBY_HEAP_SLOTS_INCREMENT=20000
    ...etc...
    exec "/path/to/ruby" "$@"
    

    前几行设置您想要的任何自定义变量,最后一行调用ruby 本身,将脚本最初给出的任何参数传递给它。

    接下来您需要将此脚本标记为可执行文件 (chmod a+x /usr/local/bin/ruby-custom),然后通过将其添加到您的 Apache .conf 文件中来配置Passenger 以将其用作ruby 可执行文件:

    PassengerRuby /usr/local/bin/ruby-custom
    

    【讨论】:

    • 谢谢——但是第二个问题呢——我如何在运行时仔细检查配置是否有效? (这真的是我的主要问题)
    • 在 Ruby 1.9+ 中,您可以使用GC.stat 来检查其中一些设置。另请注意,REE 是 end-of-life
    猜你喜欢
    • 2010-12-17
    • 1970-01-01
    • 2010-10-19
    • 1970-01-01
    • 1970-01-01
    • 2017-08-23
    • 2021-12-02
    • 2016-12-30
    • 2020-03-12
    相关资源
    最近更新 更多