在 Ubuntu 系统上优化 Node.js 代码可以从多个方面入手,包括性能调优、内存管理、并发处理、代码质量提升等。以下是一些具体的优化建议:
确保你使用的是最新的稳定版本,因为新版本通常包含性能改进和 bug 修复。
sudo apt update
sudo apt install nodejs
sudo apt install npm
使用 Node.js 内置的性能分析工具或第三方工具来识别性能瓶颈。
Node.js 内置工具:
node --inspect
:启动调试模式。node --prof
:生成性能分析报告。第三方工具:
clinic.js
:一个综合的性能分析工具。pm2
:进程管理器,可以监控和分析应用性能。npm install -g clinic
clinic doctor -- node your-app.js
const fs = require('fs');
fs.readFile('file.txt', 'utf8', (err, data) => {
if (err) throw err;
console.log(data);
});
const fs = require('fs');
const readStream = fs.createReadStream('large-file.txt');
readStream.on('data', (chunk) => {
console.log(chunk);
});
const cluster = require('cluster');
const http = require('http');
const numCPUs = require('os').cpus().length;
if (cluster.isMaster) {
console.log(`Master ${process.pid} is running`);
for (let i = 0; i < numCPUs; i++) {
cluster.fork();
}
cluster.on('exit', (worker, code, signal) => {
console.log(`worker ${worker.process.pid} died`);
});
} else {
http.createServer((req, res) => {
res.writeHead(200);
res.end('hello world\n');
}).listen(8000);
console.log(`Worker ${process.pid} started`);
}
PM2 是一个强大的进程管理器,可以帮助你监控、重启和扩展你的 Node.js 应用。
npm install pm2 -g
pm2 start app.js --name my-app
pm2 monit
使用 Nginx 作为反向代理可以提高应用的稳定性和安全性。
server {
listen 80;
server_name example.com;
location / {
proxy_pass http://localhost:3000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
将配置信息放在环境变量中,而不是硬编码在代码中,可以提高代码的可维护性和安全性。
require('dotenv').config();
const port = process.env.PORT || 3000;
通过以上这些方法,你可以显著提升在 Ubuntu 系统上运行的 Node.js 应用的性能和稳定性。