Linux Node.js 配置文件如何优化
导读:Linux 下 Node.js 配置文件与环境优化指南 一 运行时环境与内存优化 设置应用运行环境:使用环境变量区分环境,生产环境建议固定为production,并结合cross-env保证跨平台一致性。示例: package.json...
Linux 下 Node.js 配置文件与环境优化指南
一 运行时环境与内存优化
- 设置应用运行环境:使用环境变量区分环境,生产环境建议固定为production,并结合cross-env保证跨平台一致性。示例:
- package.json
{ "scripts": { "start": "cross-env NODE_ENV=production node app.js", "dev": "cross-env NODE_ENV=development nodemon app.js" } }
- package.json
- 内存上限控制:
- 直接启动:
NODE_OPTIONS="--max-old-space-size=4096" node app.js - PM2 配置(ecosystem.config.js):
module.exports = { apps: [{ name: 'myapp', script: 'app.js', instances: 'max', exec_mode: 'cluster', max_memory_restart: '4G' } ] } ; pm2 start ecosystem.config.js - Docker 运行时限制:
docker run -m 4g your-app-image # 或 docker-compose.yml services: app: image: your-app-image deploy: resources: limits: memory: 4G
- 直接启动:
- 多核利用:使用Cluster模块或 PM2 的cluster模式,按 CPU 核数扩展工作进程,提升吞吐与稳定性。
二 进程管理与部署配置
- 使用PM2进行守护、自动重启、日志轮转与集群管理:
npm i -g pm2 pm2 start app.js -i max --name api pm2 save & & pm2 startup - 推荐的 PM2 配置要点:
- 集群模式:exec_mode: ‘cluster’、instances: ‘max’ 或按核数设定。
- 内存阈值:max_memory_restart 设为合理值(如2G/4G)避免 OOM。
- 日志与监控:开启日志文件与pm2 monit,便于定位问题。
三 多环境与敏感信息管理
- 分层配置与文件结构:
- 使用dotenv加载.env 文件,分层为:.env(公共)、.env.development、.env.test、.env.production、.env.local(本地覆盖,加入.gitignore)。
- 入口加载顺序建议:先加载公共配置,再按NODE_ENV加载环境配置,后者覆盖前者。
require('dotenv').config(); // 公共 const env = process.env.NODE_ENV || 'development'; require('dotenv').config({ path: `.env.${ env} ` } ); // 环境特定
- 安全与协作:
- 敏感信息不提交到 Git,提供**.env.example**模板。
- 代码中以process.env读取配置,生产环境对必填项进行校验。
- 跨平台一致性:在 npm scripts 中使用cross-env设置环境变量,避免 Windows 与类 Unix 差异。
四 版本管理与全局安装优化
- 使用n管理 Node.js 版本(避免 sudo 安装系统目录):
- 用户级安装路径与镜像加速:
export N_PREFIX=$HOME/.n export PATH=$N_PREFIX/bin:$PATH export N_NODE_MIRROR=https://npmmirror.com/mirrors/node - 安装与切换:
n install 20 n use 20 - 常用优化项:
- 缓存目录:N_CACHE_PREFIX(将缓存放到大容量磁盘)
- 保留 npm:N_PRESERVE_NPM=1
- 压缩格式:N_USE_XZ=0/1
- 诊断工具:n doctor
- 用户级安装路径与镜像加速:
- 使用NVM作为替代方案(适合需要多版本快速切换的场景):
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash # ~/.bashrc 或 ~/.zshrc export NVM_DIR="$HOME/.nvm" [ -s "$NVM_DIR/nvm.sh" ] & & \. "$NVM_DIR/nvm.sh" nvm install 20 nvm use 20 nvm alias default 20 - 路径优先级提示:若使用 n,请确保**$N_PREFIX/bin在PATH**中优先级最高,避免调用到系统旧版本 Node。
五 Linux 系统层面优化
- 文件描述符与内核网络参数(提升并发连接能力):
- 提高进程可打开文件数:
ulimit -n 65535 # 持久化:/etc/security/limits.conf * soft nofile 65535 * hard nofile 65535 - 内核网络优化(/etc/sysctl.conf):
应用:执行sysctl -p使配置生效。net.core.somaxconn = 4096 net.ipv4.tcp_max_syn_backlog = 4096 net.ipv4.ip_local_port_range = 1024 65535 net.ipv4.tcp_tw_reuse = 1 net.ipv4.tcp_fin_timeout = 30
- 提高进程可打开文件数:
- 存储与监控:
- 优先使用SSD降低 I/O 延迟。
- 接入Prometheus + Grafana或New Relic/Datadog进行指标与性能观测。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Linux Node.js 配置文件如何优化
本文地址: https://pptw.com/jishu/775516.html
