NodeJS -是否可以按需启用Profiler,而不是通过`--prof`标志?

sauutmhj  于 2023-06-05  发布在  Node.js
关注(0)|答案(1)|浏览(135)

有时需要收集运行时信息,主要是在生产环境中。但是分析器有一些开销,所以我不想在默认情况下使用--prof标志来启用它,而是只在需要的时候启用一段时间。
有没有可能通过向NodeJS进程发送信号来以编程方式启用它,就像您使用kill -SIGUSR1启用检查器一样?

2sbarzqh

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));
        }
      });
    });
}); 


});

相关问题