有时需要收集运行时信息,主要是在生产环境中。但是分析器有一些开销,所以我不想在默认情况下使用--prof标志来启用它,而是只在需要的时候启用一段时间。有没有可能通过向NodeJS进程发送信号来以编程方式启用它,就像您使用kill -SIGUSR1启用检查器一样?
--prof
kill -SIGUSR1
2sbarzqh1#
我可以想象你可以像这样听SIGUSR2...
// https://nodejs.org/api/process.html#signal-events process.on('SIGUSR2', () => { console.log('SIGUSR2 signal received'); const inspector = require('node:inspector'); const fs = require('node:fs'); const session = new inspector.Session(); session.connect(); // https://nodejs.org/api/inspector.html#cpu-profiler_1 session.post('Profiler.enable', () => { session.post('Profiler.start', () => { // Invoke business logic under measurement here... // some time later... session.post('Profiler.stop', (err, { profile }) => { // Write profile to disk, upload, etc. if (!err) { fs.writeFileSync('./profile.cpuprofile', JSON.stringify(profile)); } }); }); }); });
1条答案
按热度按时间2sbarzqh1#
我可以想象你可以像这样听SIGUSR2...