CentOS上配置Node.js内存的方法

这是最直接的配置方式,通过设置V8引擎的老生代(Old Generation)最大内存限制,解决默认1.5GB(64位系统)可能不足的问题。启动应用时添加参数,单位为MB:
node --max-old-space-size=2048 your-app.js# 限制为2GB适用于临时测试或直接运行的场景。
将内存限制写入环境变量,避免每次启动都输入参数。临时生效(当前shell会话):
export NODE_OPTIONS="--max-old-space-size=4096"# 限制为4GBnode your-app.js永久生效:将上述export命令添加到用户配置文件(如~/.bashrc或~/.bash_profile),然后执行source ~/.bashrc使配置生效。
PM2可管理进程生命周期,并支持内存超限自动重启。通过ecosystem.config.js配置文件设置:
module.exports = {apps: [{name: 'your-app',script: 'your-app.js',instances: 'max',// 根据CPU核心数自动扩展max_memory_restart: '4G'// 内存超过4GB时自动重启}]};启动应用:pm2 start ecosystem.config.js。也可通过命令行快速设置:pm2 start your-app.js --max-memory-restart 4G。
若应用以systemd服务运行(如your-app.service),需编辑服务文件(路径通常为/etc/systemd/system/your-app.service),在[Service]部分添加:
[Service]ExecStart=/usr/bin/node /path/to/your-app.jsWorkingDirectory=/path/to/your-appUser=your-userGroup=your-groupEnvironment="NODE_OPTIONS=--max-old-space-size=2048"# 限制为2GBMemoryLimit=2G# systemd自带的内存限制(可选,双重保障)修改后执行以下命令使配置生效:
sudo systemctl daemon-reloadsudo systemctl restart your-app适用于需要长期运行、开机自启的服务场景。
若应用运行在Docker容器内,需同时限制容器总内存和Node.js进程内存,避免容器因内存溢出被杀死:
docker run覆盖);--memory限制容器内存,--max-old-space-size限制Node.js进程内存:docker run -it --memory=4g --max-old-space-size=2g your-node-image其中4g是容器总内存,2g是Node.js进程的最大内存。heapdump(生成堆快照)、memwatch-next(监控泄漏)等工具分析内存使用情况;ulimit -n(文件描述符限制,建议设为65535以上)、vm.swappiness(虚拟内存交换倾向,建议设为10以下)等参数,提升系统整体性能。