Ruby内存配置在哪里,以及如何检查它是否被设置?
问题描述:
在REE和MRI 1.9+,Ruby的垃圾收集器可以调整:Ruby内存配置在哪里,以及如何检查它是否被设置?
- http://www.rubyenterpriseedition.com/documentation.html#_garbage_collector_performance_tuning
- http://smartic.us/2010/10/27/tune-your-ruby-enterprise-edition-garbage-collection-settings-to-run-tests-faster/
- http://blog.evanweaver.com/articles/2009/04/09/ruby-gc-tuning/
但是,这些文章说,在那里把这个配置。我想如果它是在环境中,ruby会在启动时将它提取出来 - 但是,根据我的说法,无法检查这个问题。这些设置不会显示在我能找到的任何运行时常量中。
那么,我在哪里放置这个配置,我该如何仔细检查它是否被使用?
答
这些设置是environment variables,所以您只需要将它们设置在ruby
进程本身的父进程中。 Manypeople推荐用于此目的创建一个简单的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" "[email protected]"
前几行设置任何你想要的自定义变量,最后一行调用ruby
本身,传递给它的任何参数这个剧本最初给出。
接下来,您将需要以纪念这个脚本为可执行(chmod a+x /usr/local/bin/ruby-custom
),然后配置乘客用它作为ruby
可执行文件,加入这个到Apache .conf文件:
PassengerRuby /usr/local/bin/ruby-custom
感谢 - 但什么关于第二个问题 - 我如何在运行时仔细检查配置是否有效? (这真的是我的主要问题) – 2013-03-26 17:06:07
在Ruby 1.9+中,您可以使用['GC.stat'](http://ruby-doc.org/core-1.9.3/GC.html#method- c-stat)来检查其中一些设置。还要注意REE是[报废](http://blog.phusion.nl/2012/02/21/ruby-enterprise-edition-1-8-7-2012-02-released-end-of - 生命-迫在眉睫/) – 2013-03-26 17:11:12