优化 Linux 下的 Node.js 环境可以显著提高应用程序的性能和稳定性。以下是一些常见的优化策略:
Node.js 的每个新版本都会带来性能改进和新特性。确保你使用的是最新的稳定版本。
# 更新 Node.js
sudo apt update
sudo apt install nodejs
sudo apt install npm
nvm(Node Version Manager)是一个用于管理多个 Node.js 版本的工具,可以轻松切换版本。
# 安装 nvm
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.1/install.sh | bash
# 加载 nvm
export NVM_DIR="$([ -z "${XDG_CONFIG_HOME-}" ] && printf %s "${HOME}/.nvm" || printf %s "${XDG_CONFIG_HOME}/nvm")"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"
# 安装最新版本的 Node.js
nvm install node
# 使用最新版本的 Node.js
nvm use node
Node.js 默认的内存限制是 1.5GB。可以通过设置 --max-old-space-size 参数来增加内存限制。
node --max-old-space-size=4096 app.js
PM2 是一个进程管理器,可以帮助你管理和监控 Node.js 应用。
# 安装 PM2
npm install pm2 -g
# 启动应用
pm2 start app.js
# 查看应用状态
pm2 status
# 监控应用
pm2 monit
如果你使用 Nginx 作为反向代理,优化其配置可以提高性能。
# 增加 worker 进程数
worker_processes auto;
# 增加连接数
events {
worker_connections 1024;
}
# 启用 Gzip 压缩
http {
gzip on;
gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;
}
使用 Redis 或 Memcached 可以显著提高应用的响应速度。
# 安装 Redis
sudo apt update
sudo apt install redis-server
# 启动 Redis
sudo systemctl start redis-server
Node.js 的集群模块可以帮助你利用多核 CPU 的优势。
const cluster = require('cluster');
const http = require('http');
const numCPUs = require('os').cpus().length;
if (cluster.isMaster) {
console.log(`Master ${process.pid} is running`);
// Fork workers.
for (let i = 0; i < numCPUs; i++) {
cluster.fork();
}
cluster.on('exit', (worker, code, signal) => {
console.log(`worker ${worker.process.pid} died`);
});
} else {
// Workers can share any TCP connection
// In this case it is an HTTP server
http.createServer((req, res) => {
res.writeHead(200);
res.end('hello world\n');
}).listen(8000);
console.log(`Worker ${process.pid} started`);
}
如果你有前端项目,使用 Webpack 或 Rollup 进行打包优化可以减少文件大小和提高加载速度。
# 安装 Webpack
npm install --save-dev webpack webpack-cli
# 创建 webpack.config.js
const path = require('path');
module.exports = {
entry: './src/index.js',
output: {
filename: 'bundle.js',
path: path.resolve(__dirname, 'dist')
}
};
使用 ESLint 和 Prettier 可以提高代码质量和一致性。
# 安装 ESLint 和 Prettier
npm install --save-dev eslint prettier
# 初始化 ESLint 配置
npx eslint --init
# 初始化 Prettier 配置
npx prettier --write .
使用工具如 pm2 logs、node --inspect 和 Chrome DevTools 进行监控和分析,找出性能瓶颈。
# 查看 PM2 日志
pm2 logs
# 启动调试模式
node --inspect app.js
通过以上策略,你可以显著优化 Linux 下的 Node.js 环境,提高应用程序的性能和稳定性。