gpt4 book ai didi

ruby-on-rails - 每个请求的 Ruby GC 执行超过 ~250-320 毫秒

转载 作者:数据小太阳 更新时间:2023-10-29 06:39:33 25 4
gpt4 key购买 nike

我有一个 ruby​​ on rails 应用程序。我正在调查我的 NewRelic 门户中的 Apdex 下降情况,我发现平均有 250-320 毫秒的时间花在了 GC 执行上。这是一个非常令人不安的数字。我在下面包含了一个屏幕截图。

我的 Ruby 版本是:

ruby 1.9.3p194(2012-04-20 修订版 35410)[x86_64-linux]

任何关于调整它的建议都是理想的。这个数字应该低得多。

enter image description here

最佳答案

您在 GC 上花费了很多时间,因为您经常运行 GC。默认情况下,Ruby 设置适用于小型脚本而非大型应用程序的 GC 参数。尝试使用以下环境参数集启动您的应用:

RUBY_HEAP_MIN_SLOTS=800000
RUBY_FREE_MIN=100000
RUBY_GC_MALLOC_LIMIT=79000000

这样做的目的是增加初始堆分配大小并填充 GC 编号,这样它就不会经常运行。这可能会让您的应用使用更多的 RAM,但它应该会显着减少 GC 花费的时间。在默认设置下,您可能会针对每个请求多次运行 GC;理想情况下,您希望每隔几个请求运行一次(或者更好,在带有类似 Unicorn's OOB::GC 的请求之间)。

这些是我的应用程序的 GC 设置,您需要上下调整它们以使其最适合您的应用程序以找到正确的设置;您正在寻找一个不经常运行 GC 并且没有过多内存使用的中间地带。不过,这是特定于每个应用程序的,因此我无法就这些确切的设置给出什么样板建议。从默认值(10k 插槽,1.8 倍增长因子)增加应该会产生立竿见影的效果,您可以根据当前情况上下调整。

这些参数有完整的说明 here及更多信息 here ,虽然这些帖子是为 REE 1.8.7 编写的,但它们也适用于 Ruby 1.9.2+。

这些是一些相当极端的数字,所以您可能在您的应用程序中做了一些导致您分配比您应该分配的更多 RAM 的事情,所以我鼓励您保持怀疑并仔细检查您的应用程序对于过度急切的分配。不过,GC 环境变量应该有助于在任何情况下对情况进行分类。

关于ruby-on-rails - 每个请求的 Ruby GC 执行超过 ~250-320 毫秒,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13387664/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com