[英]pm2 running multiple servers on same port
第一次使用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)
此錯誤將停止該節點。 對於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不允許我多次運行同一腳本,除非我更改了文件。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.