--max-old-space-size命令行参数直接配置这是最基础的配置方式,用于设置Node.js应用的最大内存限制(单位:MB)。启动应用时直接添加参数即可,例如将内存限制为512MB:
node --max-old-space-size=512 app.js
适用于临时测试或直接运行的场景,但每次启动都需手动输入,不适合长期运行的生产环境。
NODE_OPTIONS全局配置若需避免每次启动都输入参数,可通过设置NODE_OPTIONS环境变量实现。在当前终端会话中执行:
export NODE_OPTIONS="--max-old-space-size=1024"
node app.js
若需永久生效,将上述命令添加到用户配置文件(如~/.bashrc或~/.bash_profile)中,然后执行source ~/.bashrc使配置生效。这种方式适用于个人开发环境。
systemd服务文件配置(推荐用于生产环境)若应用通过systemd管理(如CentOS的默认服务管理方式),可在服务文件中添加Environment指令设置内存限制。步骤如下:
/etc/systemd/system/your-app.service):sudo vi /etc/systemd/system/your-app.service
[Service]部分添加以下内容(以1GB为例):[Service]
Environment="NODE_OPTIONS=--max-old-space-size=1024"
ExecStart=/usr/bin/node /path/to/your-app.js
systemd配置并重启服务:sudo systemctl daemon-reload
sudo systemctl restart your-app
这种方式适用于生产环境,能确保应用启动时自动应用内存限制。
PM2是常用的Node.js进程管理工具,支持通过配置文件或命令行参数设置内存限制。
ecosystem.config.js):max_memory_restart字段(以2GB为例):module.exports = {
apps: [{
name: 'your-app',
script: 'app.js',
env: {
NODE_OPTIONS: '--max-old-space-size=2048'
},
max_memory_restart: '2G' // 内存超过2GB时自动重启
}]
};
启动应用:pm2 start ecosystem.config.js。pm2 start app.js --max-memory-restart 2G
PM2还支持监控内存使用、自动重启等功能,适合生产环境。
若需要对内存使用进行更严格的限制(如限制单个进程的内存使用),可使用cgroups(控制组)。步骤如下:
cgroup-tools:sudo yum install cgroup-tools
sudo cgcreate -g memory:/your-app
echo 536870912 | sudo tee /sys/fs/cgroup/memory/your-app/memory.limit_in_bytes
PID),然后执行:sudo cgclassify -g memory:/your-app <PID>
这种方式适用于需要严格隔离资源的场景(如容器环境)。
heapdump、memwatch-next等工具排查内存泄漏问题。