在 Linux 上配置 Node.js 应用程序的内存限制可以通过多种方式实现,具体取决于你使用的 Node.js 运行环境。以下是几种常见的方法:
--max-old-space-size
标志Node.js 提供了一个内置的标志 --max-old-space-size
,可以用来设置 V8 引擎的最大内存使用量。这个标志通常用于限制老生代内存的使用。
node --max-old-space-size=4096 app.js
上面的命令将 Node.js 应用程序的最大内存限制设置为 4GB。
你也可以通过设置环境变量来限制 Node.js 应用程序的内存使用。例如,在启动脚本中设置 NODE_OPTIONS
环境变量:
export NODE_OPTIONS="--max-old-space-size=4096"
node app.js
如果你使用 PM2 来管理 Node.js 应用程序,可以通过配置文件来设置内存限制。
创建一个 ecosystem.config.js
文件,内容如下:
module.exports = {
apps: [{
name: 'my-app',
script: 'app.js',
max_memory_restart: '4G'
}]
};
然后使用 PM2 启动应用程序:
pm2 start ecosystem.config.js
创建一个 ecosystem.config.yml
文件,内容如下:
apps:
- name: my-app
script: app.js
max_memory_restart: '4G'
然后使用 PM2 启动应用程序:
pm2 start ecosystem.config.yml
如果你使用 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
如果你使用 Docker 来运行 Node.js 应用程序,可以在 Dockerfile 或 docker-compose 文件中设置内存限制。
在 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
文件中添加以下行:
version: '3.8'
services:
my-app:
build: .
deploy:
resources:
limits:
memory: 4g
然后启动服务:
docker-compose up
通过以上几种方法,你可以在 Linux 上配置 Node.js 应用程序的内存限制。选择适合你项目需求的方法进行配置即可。