在Linux服务器上对Node.js进行性能调优,可以采取以下措施:
调整Linux内核参数:
echo "fs.file-max = 100000" >> /etc/sysctl.conf && sysctl -p
echo "net.ipv4.tcp_max_syn_backlog = 4096" >> /etc/sysctl.conf && echo "net.core.somaxconn = 4096" >> /etc/sysctl.conf && sysctl -p
提高进程限制:
limits.conf
:echo "* soft nofile 100000" >> /etc/security/limits.conf && echo "* hard nofile 100000" >> /etc/security/limits.conf
使用最新LTS版本:
nvm
管理Node.js版本:nvm install --lts && nvm use --lts
启动参数优化:
node --max-old-space-size=4096 --optimize-for-size app.js
集群模式:
const cluster = require('cluster');
const os = require('os');
if (cluster.isMaster) {
const cpuCount = os.cpus().length;
for (let i = 0; i < cpuCount; i++) {
cluster.fork();
}
} else {
require('./app');
}
中间件优化:
数据库优化:
mongoose.connect(uri, {
poolSize: 20, // 连接池大小
bufferMaxEntries: 0,
useNewUrlParser: true,
useUnifiedTopology: true
});
缓存策略:
const redis = require('redis');
const client = redis.createClient();
const cache = require('express-redis-cache')({ client });
// 路由缓存
app.get('/api/data', cache.route(), (req, res) => {
// 处理逻辑
});
性能监控工具:
clinic.js
进行性能分析:npm install -g clinic && clinic doctor -- node app.js
内存分析:
node --inspect
进行内存分析,然后用Chrome DevTools分析日志记录:
pino
记录日志:const pino = require('pino');
const logger = pino({
level: 'info',
prettyPrint: process.env.NODE_ENV !== 'production'
});
使用PM2管理进程:
npm install -g pm2 && pm2 start app.js -i max --name "api-server" && pm2 save && pm2 startup
负载均衡:
upstream node_app {
server 127.0.0.1:3000;
server 127.0.0.1:3001;
keepalive 64;
}
server {
listen 80;
location / {
proxy_pass http://node_app;
proxy_http_version 1.1;
proxy_set_header Connection "";
}
}
通过上述方法,可以显著提高Linux下Node.js应用程序的性能。根据具体情况选择合适的优化策略,并持续监控和调整以达到最佳性能。