You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Ubuntu上仅为Node.js进程使用Jemalloc内存分配器?

如何仅让Jemalloc作用于Node.js应用而不影响其他进程(Ubuntu 20.04)

你当前的问题源于全局设置了LD_PRELOAD环境变量,导致所有启动的进程都尝试加载jemalloc,而Chromium因无法加载该库(可能是架构不匹配或权限问题)抛出错误。要实现仅Node.js应用使用jemalloc,可通过以下几种方式操作:

1. 启动Node时临时指定环境变量

直接在Node启动命令前追加LD_PRELOAD配置,这样只有当前启动的Node进程会加载jemalloc,不会干扰全局环境或其他进程:

LD_PRELOAD=/usr/lib/aarch64-linux-gnu/libjemalloc.so node your-app.js

2. 编写专用启动脚本

若需频繁启动该Node应用,可封装一个shell脚本:

  1. 创建脚本文件(示例命名start-my-node-app.sh):
#!/bin/bash
LD_PRELOAD=/usr/lib/aarch64-linux-gnu/libjemalloc.so node /full/path/to/your-app.js
  1. 给脚本添加执行权限:
chmod +x start-my-node-app.sh
  1. 后续启动应用直接运行该脚本即可。

3. 为systemd服务配置专属环境变量

如果Node应用是通过systemd作为后台服务运行的,编辑对应服务配置文件(例如/etc/systemd/system/my-node-app.service),在[Service]区块中添加环境变量:

[Service]
Environment="LD_PRELOAD=/usr/lib/aarch64-linux-gnu/libjemalloc.so"
ExecStart=/usr/bin/node /full/path/to/your-app.js
# 保留其他原有配置项...

修改完成后,重新加载systemd配置并重启服务:

sudo systemctl daemon-reload
sudo systemctl restart my-node-app.service

额外提醒

若之前你在~/.bashrc、~/.profile或/etc/environment等全局配置文件中添加过export LD_PRELOAD=$LD_PRELOAD:/usr/lib/aarch64-linux-gnu/libjemalloc.so,建议删除该行,彻底消除全局环境变量对其他进程的影响。

内容的提问来源于stack exchange,提问作者Hypothesis

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.13 03:33:13