profiling.js 4.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. "use strict";
  2. Object.defineProperty(exports, "__esModule", { value: true });
  3. const addonProfiler_1 = require("../profilers/addonProfiler");
  4. const inspectorProfiler_1 = require("../profilers/inspectorProfiler");
  5. const constants_1 = require("../constants");
  6. const Debug = require("debug");
  7. class ProfilingConfig {
  8. }
  9. exports.ProfilingConfig = ProfilingConfig;
  10. const defaultProfilingConfig = {
  11. cpuJS: true,
  12. heapSnapshot: true,
  13. heapSampling: true,
  14. implementation: 'both'
  15. };
  16. const disabledProfilingConfig = {
  17. cpuJS: false,
  18. heapSnapshot: false,
  19. heapSampling: false,
  20. implementation: 'none'
  21. };
  22. class ProfilingFeature {
  23. constructor() {
  24. this.logger = Debug('axm:features:profiling');
  25. }
  26. init(config) {
  27. if (config === true) {
  28. config = defaultProfilingConfig;
  29. }
  30. else if (config === false) {
  31. config = disabledProfilingConfig;
  32. }
  33. else if (config === undefined) {
  34. config = defaultProfilingConfig;
  35. }
  36. if (process.env.PM2_PROFILING_FORCE_FALLBACK === 'true') {
  37. config.implementation = 'addon';
  38. }
  39. if (config.implementation === undefined || config.implementation === 'both') {
  40. config.implementation = constants_1.canUseInspector() === true ? 'inspector' : 'addon';
  41. }
  42. switch (config.implementation) {
  43. case 'inspector': {
  44. this.logger('using inspector implementation');
  45. this.profiler = new inspectorProfiler_1.default();
  46. break;
  47. }
  48. case 'addon': {
  49. this.logger('using addon implementation');
  50. this.profiler = new addonProfiler_1.default();
  51. break;
  52. }
  53. default: {
  54. return this.logger(`Invalid profiler implementation choosen: ${config.implementation}`);
  55. }
  56. }
  57. this.logger('init');
  58. this.profiler.init();
  59. }
  60. destroy() {
  61. this.logger('destroy');
  62. if (this.profiler === undefined)
  63. return;
  64. this.profiler.destroy();
  65. }
  66. }
  67. exports.ProfilingFeature = ProfilingFeature;
  68. //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZmlsaW5nLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2ZlYXR1cmVzL3Byb2ZpbGluZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUNBLDhEQUFzRDtBQUN0RCxzRUFBOEQ7QUFDOUQsNENBQThDO0FBQzlDLCtCQUE4QjtBQVE5QixNQUFhLGVBQWU7Q0FLM0I7QUFMRCwwQ0FLQztBQUVELE1BQU0sc0JBQXNCLEdBQW9CO0lBQzlDLEtBQUssRUFBRSxJQUFJO0lBQ1gsWUFBWSxFQUFFLElBQUk7SUFDbEIsWUFBWSxFQUFFLElBQUk7SUFDbEIsY0FBYyxFQUFFLE1BQU07Q0FDdkIsQ0FBQTtBQUVELE1BQU0sdUJBQXVCLEdBQW9CO0lBQy9DLEtBQUssRUFBRSxLQUFLO0lBQ1osWUFBWSxFQUFFLEtBQUs7SUFDbkIsWUFBWSxFQUFFLEtBQUs7SUFDbkIsY0FBYyxFQUFFLE1BQU07Q0FDdkIsQ0FBQTtBQUVELE1BQWEsZ0JBQWdCO0lBQTdCO1FBR1UsV0FBTSxHQUFhLEtBQUssQ0FBQyx3QkFBd0IsQ0FBQyxDQUFBO0lBNEM1RCxDQUFDO0lBMUNDLElBQUksQ0FBRSxNQUFrQztRQUN0QyxJQUFJLE1BQU0sS0FBSyxJQUFJLEVBQUU7WUFDbkIsTUFBTSxHQUFHLHNCQUFzQixDQUFBO1NBQ2hDO2FBQU0sSUFBSSxNQUFNLEtBQUssS0FBSyxFQUFFO1lBQzNCLE1BQU0sR0FBRyx1QkFBdUIsQ0FBQTtTQUNqQzthQUFNLElBQUksTUFBTSxLQUFLLFNBQVMsRUFBRTtZQUMvQixNQUFNLEdBQUcsc0JBQXNCLENBQUE7U0FDaEM7UUFHRCxJQUFJLE9BQU8sQ0FBQyxHQUFHLENBQUMsNEJBQTRCLEtBQUssTUFBTSxFQUFFO1lBQ3ZELE1BQU0sQ0FBQyxjQUFjLEdBQUcsT0FBTyxDQUFBO1NBQ2hDO1FBRUQsSUFBSSxNQUFNLENBQUMsY0FBYyxLQUFLLFNBQVMsSUFBSSxNQUFNLENBQUMsY0FBYyxLQUFLLE1BQU0sRUFBRTtZQUMzRSxNQUFNLENBQUMsY0FBYyxHQUFHLDJCQUFlLEVBQUUsS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFBO1NBQzNFO1FBRUQsUUFBUSxNQUFNLENBQUMsY0FBYyxFQUFFO1lBQzdCLEtBQUssV0FBVyxDQUFDLENBQUM7Z0JBQ2hCLElBQUksQ0FBQyxNQUFNLENBQUMsZ0NBQWdDLENBQUMsQ0FBQTtnQkFDN0MsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLDJCQUFpQixFQUFFLENBQUE7Z0JBQ3ZDLE1BQUs7YUFDTjtZQUNELEtBQUssT0FBTyxDQUFDLENBQUM7Z0JBQ1osSUFBSSxDQUFDLE1BQU0sQ0FBQyw0QkFBNEIsQ0FBQyxDQUFBO2dCQUN6QyxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksdUJBQWEsRUFBRSxDQUFBO2dCQUNuQyxNQUFLO2FBQ047WUFDRCxPQUFPLENBQUMsQ0FBQztnQkFDUCxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsNENBQTRDLE1BQU0sQ0FBQyxjQUFjLEVBQUUsQ0FBQyxDQUFBO2FBQ3hGO1NBQ0Y7UUFDRCxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFBO1FBQ25CLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUE7SUFDdEIsQ0FBQztJQUVELE9BQU87UUFDTCxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFBO1FBQ3RCLElBQUksSUFBSSxDQUFDLFFBQVEsS0FBSyxTQUFTO1lBQUUsT0FBTTtRQUN2QyxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sRUFBRSxDQUFBO0lBQ3pCLENBQUM7Q0FDRjtBQS9DRCw0Q0ErQ0MifQ==