如何为redis动态加载jemalloc.so模块?

问题描述

我正在尝试为reddis调整jemalloc选项,因此我想动态加载它并传递jemalloc options

我正在ubuntu 20.04 x86_64上运行,在Linux上,redis默认使用jemalloc。但是我也尝试通过使用 make MALLOC = libc make MALLOC = jemalloc 进行编译在libc和jemalloc之间切换。

然后我检查redis是否正在使用我使用以下命令编译的分配器:

$ redis-cli info | grep mem_allocator
mem_allocator:jemalloc-5.1.0

对于libc:

$ redis-cli info | grep mem_allocator
mem_allocator:libc

问题不在于静态编译,而是在于尝试动态加载allocator(jemalloc)时。我尝试了以下操作:

  1. 使用 LD_PRELOAD
MALLOC_CONF="tcache:false,dirty_decay_ms:1000"   
LD_PRELOAD=/usr/local/lib/libjemalloc.so.2 redis-benchmark -q -n 100000 --csv
  1. 使用redis MODULE LOAD
redis-cli MODULE LOAD /usr/local/lib/libjemalloc.so.2

redis-server --loadmodule /usr/local/lib/libjemalloc.so.2

这些尝试均无效,redis未加载模块。

$ redis-cli MODULE LIST
(empty array)

我还检查ldconfig并验证ld路径中是否存在 libjemalloc.so

所以我的问题是如何动态加载redis的jemalloc并同时更改jemalloc配置选项?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)