簡體   English   中英

pm2在同一端口上運行多個服務器

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM