Skip to content

Commit dad98e6

Browse files
authored
Merge pull request #3442 from Unitech/event-loop-inspector
feat: allow pm2 to install and enable event-loop-inspector data colle…
2 parents 36bf03e + e6b0c47 commit dad98e6

File tree

5 files changed

+30
-9
lines changed

5 files changed

+30
-9
lines changed

bin/pm2

+1
Original file line numberDiff line numberDiff line change
@@ -86,6 +86,7 @@ commander.version(pkg.version)
8686
.option('--attach', 'attach logging after your start/restart/stop/reload')
8787
.option('--sort <field_name:sort>', 'sort process according to field\'s name')
8888
.option('--v8', 'enable v8 data collecting')
89+
.option('--event-loop-inspector', 'enable event-loop-inspector dump in pmx')
8990
.usage('[cmd] app');
9091

9192
commander.on('--help', function() {

lib/API/Modules/Modularizer.js

+13
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,19 @@ Modularizer.install = function(CLI, module_name, opts, cb) {
6363
return false;
6464
}
6565

66+
if (module_name === 'event-loop-inspector') {
67+
installLangModule('event-loop-inspector', function(err) {
68+
if (err) {
69+
Common.printError(cst.PREFIX_MSG_MOD_ERR + chalk.bold.green('event-loop-inspector installation has FAILED (checkout previous logs)'));
70+
return cb(err);
71+
}
72+
73+
Common.printOut(cst.PREFIX_MSG + chalk.bold.green('event-loop-inspector ENABLED'));
74+
return cb();
75+
});
76+
return false;
77+
}
78+
6679
if (module_name.indexOf('typescript') > -1) {
6780
// Special dependency install
6881
return installLangModule(module_name, function(e) {

lib/API/schema.json

+5
Original file line numberDiff line numberDiff line change
@@ -197,6 +197,11 @@
197197
"boolean"
198198
]
199199
},
200+
"event-loop-inspector": {
201+
"type": [
202+
"boolean"
203+
]
204+
},
200205
"increment_var": {
201206
"type": "string"
202207
},

lib/ProcessContainer.js

+6-5
Original file line numberDiff line numberDiff line change
@@ -30,17 +30,18 @@ delete process.env.pm2_env;
3030
(function ProcessContainer() {
3131
var fs = require('fs');
3232

33-
if (process.env.pmx !== 'false')
33+
if (process.env.pmx !== 'false') {
3434
require('pmx').init({
35-
transactions: process.env.km_link == 'true' && process.env.trace == 'true' || false,
36-
http: process.env.km_link == 'true' || false,
37-
v8: process.env.v8 === 'true' || false
35+
transactions: (process.env.km_link === 'true' && process.env.trace === 'true') || false,
36+
http: process.env.km_link === 'true' || false,
37+
v8: process.env.v8 === 'true' || false,
38+
event_loop_dump: process.env['event-loop-inspector'] === 'true' || false
3839
});
40+
}
3941

4042
var stdFile = pm2_env.pm_log_path;
4143
var outFile = pm2_env.pm_out_log_path;
4244
var errFile = pm2_env.pm_err_log_path;
43-
var pmId = pm2_env.pm_id;
4445
var pidFile = pm2_env.pm_pid_path;
4546
var script = pm2_env.pm_exec_path;
4647
var cronRestart = pm2_env.cron_restart;

lib/ProcessContainerFork.js

+5-4
Original file line numberDiff line numberDiff line change
@@ -4,11 +4,12 @@
44
* can be found in the LICENSE file.
55
*/
66
// Inject custom modules
7-
if (process.env.pmx !== "false") {
7+
if (process.env.pmx !== 'false') {
88
require('pmx').init({
9-
transactions: process.env.km_link == 'true' && process.env.trace == 'true' || false,
10-
http: process.env.km_link == 'true' || false,
11-
v8: process.env.v8 === 'true' || false
9+
transactions: (process.env.km_link === 'true' && process.env.trace === 'true') || false,
10+
http: process.env.km_link === 'true' || false,
11+
v8: process.env.v8 === 'true' || false,
12+
event_loop_dump: process.env['event-loop-inspector'] === 'true' || false
1213
});
1314
}
1415

0 commit comments

Comments
 (0)