如何为基于RVM的运行中Rails服务器添加jemalloc
给RVM管理的Ruby on Rails添加Jemalloc的方法
嘿,我之前刚好折腾过用RVM给Ruby配置jemalloc,针对你现在的情况(Ruby 2.5.1、Rails 5.2、RVM环境),给你两种可行的方案:
方案一:重新编译Ruby(推荐,一劳永逸)
这种方法会让Ruby永久链接jemalloc,不需要每次启动服务器都额外配置:
先安装系统级的jemalloc依赖
- Ubuntu/Debian系统:
sudo apt-get update && sudo apt-get install libjemalloc-dev - CentOS/RHEL系统:
sudo yum install jemalloc-devel - macOS(用Homebrew):
brew install jemalloc
- Ubuntu/Debian系统:
卸载当前的Ruby 2.5.1
因为我们要重新编译带jemalloc支持的版本:rvm remove 2.5.1设置编译参数,让RVM编译时包含jemalloc
导出环境变量指定配置选项:export CONFIGURE_OPTS="--with-jemalloc"重新安装Ruby 2.5.1
rvm install 2.5.1验证是否配置成功
运行你之前用的命令,查看输出是否包含-ljemalloc:ruby -r rbconfig -e "puts RbConfig::CONFIG['LIBS']"如果输出里有
-ljemalloc,就说明jemalloc已经成功链接到Ruby了。
方案二:临时加载jemalloc(适合快速测试)
如果你不想重新编译Ruby,可以在启动Rails服务器时临时指定加载jemalloc库:
Linux系统:
LD_PRELOAD=/usr/lib/x86_64-linux-gnu/libjemalloc.so rails server(注意:
/usr/lib/x86_64-linux-gnu/是常见路径,如果你系统里的jemalloc.so在别的位置,需要替换成实际路径)macOS系统:
DYLD_INSERT_LIBRARIES=/usr/local/lib/libjemalloc.dylib rails server(同样,路径根据你Homebrew安装的位置调整)
这种方法的缺点是每次启动服务器都要加这个前缀,适合快速验证jemalloc的效果,长期用还是推荐方案一。
内容的提问来源于stack exchange,提问作者Jose Kj
相关产品推荐
相关产品推荐

