【问题标题】:Ruby 2.6.5 with jemalloc带有 jemalloc 的 Ruby 2.6.5
【发布时间】:2021-04-27 19:47:16
【问题描述】:

我已经使用 jemalloc 从源代码构建并安装了 rub 2.6.5。但是,当我检查它是否在那里时,我没有看到条目。还有什么我应该做的吗?

ubuntu:~$ uname -a
Linux ip-10-0-3-198 4.15.0-1032-aws #34-Ubuntu SMP Thu Jan 17 15:18:09 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux
ubuntu:~$ ./configure --enable-shared --with-jemalloc
ubuntu:~$ make
ubuntu:~$ make install

结果:

ubuntu:~$ ruby -r rbconfig -e "puts RbConfig::CONFIG['LIBS']"
-lm 

在部署后跟踪内存使用情况,与没有 jemalloc 的类似配置服务器相比,我也没有看到下降。

我不确定我需要做什么才能让 jemalloc 正常工作。

谢谢!

【问题讨论】:

    标签: ruby jemalloc


    【解决方案1】:

    试试:

    puts RbConfig::CONFIG['MAINLIBS']
    

    并在输出中检查-ljemalloc

    这种行为最近发生了变化(准确地说是在 2.6.x 中)。

    【讨论】:

    • 谢谢!我确实在列表中看到了jemalloc:"$ ruby​​ -r rbconfig -e "puts RbConfig::CONFIG['MAINLIBS']" -lz -lpthread -lrt -lrt -ljemalloc -lgmp -ldl -lcrypt -lm"
    • 谢谢。可悲的是,虽然没有真正看到内存使用的改善。回到调查。
    【解决方案2】:

    由于某种原因,接受的答案对我(Heroku)不起作用,但是:

    MALLOC_CONF=stats_print:true ruby -e "exit"

    成功了。

    如果您有一些统计数据输出,则表示它正在工作。

    来源:https://github.com/gaffneyc/heroku-buildpack-jemalloc/issues/5#issuecomment-499932026

    【讨论】:

      【解决方案3】:

      对于那些使用 LD_PRELOAD 而不是直接构建 ruby​​ 的人,更完整的答案是:

      RbConfig::CONFIG['MAINLIBS'].include?("jemalloc") || ENV['LD_PRELOAD'].include?("jemalloc")
      

      当然,这不足以判断 jemalloc 是否真的有效,至于接受的答案!

      【讨论】:

        猜你喜欢
        • 2012-03-20
        • 2023-02-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-01-26
        • 2017-10-10
        • 1970-01-01
        • 2020-03-24
        相关资源
        最近更新 更多