Debian系统监控JavaScript运行状态的常用方法
pm2是Node.js生态中最流行的进程管理工具,提供实时监控、自动重启、日志管理等功能,适合生产环境使用。
sudo npm install pm2 -g
pm2 start app.js --name "my-js-app" # 启动应用并命名
pm2 monit # 实时监控CPU、内存、日志输出
pm2 status:查看应用运行状态(进程ID、状态、CPU/内存占用);pm2 logs:实时查看应用日志(支持过滤错误日志);pm2 restart app-name:重启指定应用;pm2 save:保存当前进程列表,pm2 startup:设置开机自启。Node.js自带process、perf_hooks等模块,无需额外安装即可获取基础运行数据。
console.log('内存使用:', process.memoryUsage()); // { rss, heapTotal, heapUsed等 }
console.log('CPU使用:', process.cpuUsage()); // 用户态/内核态CPU时间
console.log('进程PID:', process.pid); // 当前进程ID
const { performance, PerformanceObserver } = require('perf_hooks');
const obs = new PerformanceObserver((list) => {
list.getEntries().forEach(entry => console.log(`${entry.name}: ${entry.duration}ms`));
});
obs.observe({ entryTypes: ['measure'] });
performance.mark('start');
// 你的业务逻辑(如数据库查询、接口处理)
performance.mark('end');
performance.measure('业务逻辑耗时', 'start', 'end');
通过Debian系统工具监控JS应用占用的系统资源,适合快速排查系统级性能问题。
top:实时显示进程CPU、内存占用(按P按CPU排序,M按内存排序);htop(需安装):增强版top,支持颜色高亮、鼠标操作:sudo apt install htop
htop
vmstat 1 # 输出包括内存、交换分区、CPU利用率等
prom-client库,暴露/metrics接口:const client = require('prom-client');
const collectDefaultMetrics = client.collectDefaultMetrics;
collectDefaultMetrics(); // 收集默认指标(CPU、内存、请求量等)
app.get('/metrics', (req, res) => {
res.set('Content-Type', client.register.contentType);
res.end(client.register.metrics());
});
newrelic包:npm install newrelic --save;require('newrelic');通过日志记录应用运行状态,便于后续排查问题。
winston或morgan记录日志(如请求日志、错误日志):const winston = require('winston');
const logger = winston.createLogger({
level: 'info',
format: winston.format.json(),
transports: [
new winston.transports.File({ filename: 'error.log', level: 'error' }),
new winston.transports.File({ filename: 'combined.log' })
]
});
logger.info('应用启动成功');
logger.error('数据库连接失败:', err);
journalctl查看systemd服务的实时日志(若应用以systemd运行):sudo journalctl -u my-js-app -f # -f表示实时跟踪