gpt4 book ai didi

javascript - pm2 在同一个端口上运行多个服务器

转载 作者:行者123 更新时间:2023-12-03 16:48:32 25 4
gpt4 key购买 nike

第一次使用pm2,有些困惑。我在端口 1337 上运行一个非常简单的 http 服务器并使用 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);

并按如下方式运行它:
pm2 start app.js

我不明白的是,如果我多次执行上述命令( pm2 start app.js ),pm2 会毫无问题地创建此应用程序的更多实例。但是是否存在冲突,因为它们都在监听端口 1337 ?如果不是,同时运行多个它们会产生什么影响?如果一个请求进来,它会去哪一个?

谢谢

最佳答案

假设您已经有一台服务器在 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)

此错误将停止 Node 。对于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 不允许我多次运行相同的脚本,除非我更改了文件。

关于javascript - pm2 在同一个端口上运行多个服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46460381/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com