在 Linux 上配置 Node.js 应用程序的内存限制可以通过多种方式实现,具体取决于你使用的 Node.js 运行环境。以下是几种常见的方法:
1. 使用 --max-old-space-size
标志
Node.js 提供了一个内置的标志 --max-old-space-size
,可以用来设置 V8 引擎的最大内存使用量。这个标志通常用于限制老生代内存的使用。
node --max-old-space-size=4096 app.js
上面的命令将 Node.js 应用程序的最大内存限制设置为 4GB。
2. 使用环境变量
你也可以通过设置环境变量来限制 Node.js 应用程序的内存使用。例如,在启动脚本中设置 NODE_OPTIONS
环境变量:
export NODE_OPTIONS="--max-old-space-size=4096" node app.js
3. 使用 PM2 进程管理器
如果你使用 PM2 来管理 Node.js 应用程序,可以通过配置文件来设置内存限制。
使用 JSON 配置文件
创建一个 ecosystem.config.js
文件,内容如下:
module.exports = { apps: [{ name: 'my-app', script: 'app.js', max_memory_restart: '4G' }] };
然后使用 PM2 启动应用程序:
pm2 start ecosystem.config.js
使用 YAML 配置文件
创建一个 ecosystem.config.yml
文件,内容如下:
apps: - name: my-app script: app.js max_memory_restart: '4G'
然后使用 PM2 启动应用程序:
pm2 start ecosystem.config.yml
4. 使用 systemd 服务文件
如果你使用 systemd 来管理 Node.js 应用程序,可以在服务文件中设置内存限制。
创建一个 my-app.service
文件,内容如下:
[Unit] Description=My Node.js App [Service] ExecStart=/usr/bin/node /path/to/app.js LimitNOFILE=65536 MemoryMax=4G [Install] WantedBy=multi-user.target
然后启用并启动服务:
sudo systemctl enable my-app.service sudo systemctl start my-app.service
5. 使用 Docker 容器
如果你使用 Docker 来运行 Node.js 应用程序,可以在 Dockerfile 或 docker-compose 文件中设置内存限制。
Dockerfile
在 Dockerfile 中添加以下行:
FROM node:14 WORKDIR /usr/src/app COPY package*.json ./ RUN npm install COPY . . CMD ["node", "app.js"]
然后在运行容器时设置内存限制:
docker run -m 4g --name my-node-app my-node-image
docker-compose.yml
在 docker-compose.yml
文件中添加以下行:
version: '3.8' services: my-app: build: . deploy: resources: limits: memory: 4g
然后启动服务:
docker-compose up
通过以上几种方法,你可以在 Linux 上配置 Node.js 应用程序的内存限制。选择适合你项目需求的方法进行配置即可。