第一次使用pm2,我对某些事情感到有些困惑。我在端口var http = require('http');
var server = http.createServer(function (request, response) {
response.writeHead(200, {"Content-Type": "text/plain"});
response.end("Hello World\n");
});
server.listen(1337);
上运行一个非常简单的http服务器并使用pm2运行它:
pm2 start app.js
并按如下方式运行:
pm2 start app.js
我不明白的是,如果我多次执行上述命令(1337
),pm2会毫无问题地创建此应用程序的更多实例。但是,由于所有人都在监听端口{{1}},所以不存在冲突吗?如果不是,它们中的多个同时运行会产生什么影响?如果请求进来,请问哪一个?
由于
答案 0 :(得分:0)
假设您已经在端口1337上运行了服务器 如果您尝试在同一端口上运行另一台服务器,则应收到以下错误
Error: listen EADDRINUSE 0.0.0.0:1337
at Object.exports._errnoException (util.js:1036:11)
at exports._exceptionWithHostPort (util.js:1059:20)
at Server._listen2 (net.js:1252:14)
at listen (net.js:1288:10)
at Server.listen (net.js:1384:5)
at EventEmitter.listen (/share/CE_CACHEDEV1_DATA/Web/radiationRepository/web/node_server/node_modules/express/lib/application.js:618:24)
at Object.<anonymous> (/share/CE_CACHEDEV1_DATA/Web/radiationRepository/web/node_server/server.js:51:5)
at Module._compile (module.js:556:32)
at Object.Module._extensions..js (module.js:565:10)
at Module.load (module.js:473:32)
此错误将停止节点。对于pm2,当它收到退出信号时,它应该尝试再次重启服务器并获得以下日志
0|app | Error: listen EADDRINUSE 0.0.0.0:1337
0|app | Caught exception: Error: listen EADDRINUSE 0.0.0.0:1337
PM2 | App [app] with id [0] and pid [1167], exited with code [0] via signal [SIGINT]
PM2 | Starting execution sequence in -fork mode- for app name:app id:0
PM2 | App name:app id:0 online
我在这里跳过了一些日志。因此,端口上应该只有一个服务器。如果出现此错误,PM2仍将接受任务并尝试重新启动服务器。
您可以运行pm2 logs
来查找pm2的日志
<强>更新强>
我试图用pm2运行相同的脚本。除非我更改了文件,否则pm2不允许我多次运行相同的脚本。