如何将 Node.js 与 Jemalloc 结合使用?

Ter*_*ion 6 node.js jemalloc

Node.js 可以与 Jemalloc 一起使用(https://github.com/nodejs/node/issues/21973)。在大多数情况下,它会缩短 RSS,这是我的大问题。

但我找不到任何有关如何将节点与 Jemalloc 一起使用的信息,也找不到在机器上或在 docker 中的信息。

有人可以帮忙吗?

Tyr*_*eal 8

我刚刚完成了将 Nodejs 应用程序切换到 jemalloc 的过程,以下是我在 Debian Stretch 上的操作方法:

安装jemalloc:

sudo apt-get install libjemalloc-dev
Run Code Online (Sandbox Code Playgroud)

找到 jemalloc 二进制文件:

sudo find / -name "*jemalloc*"
Run Code Online (Sandbox Code Playgroud)

在 /usr/lib/... 等文件夹中查找以 .so 结尾的文件,例如路径可以是/usr/lib/x86_64-linux-gnu/libjemalloc.so

配置服务器以对所有程序使用 jemalloc:

  1. 使用预加载配置创建文件:

sudo nano /etc/ld.so.preload

  1. 将 jemalloc 二进制文件的路径添加到文件中:

/path/to/jemalloc/binary

  1. 重新启动nodejs并检查是否使用了jemalloc,例如这样(如果使用了jemalloc,您应该看到一些显示jemalloc二进制文件的行):

cat /proc/<PID OF NODEJS>/smaps | grep jemalloc

替代方案:仅对 Nodejs 使用 jemalloc

在 bash 中执行

export LD_PRELOAD=$LD_PRELOAD:/path/to/jemalloc/binary

在启动nodejs进程之前