Nodejs应用程序错误:使用pm2部署时绑定EADDRINUSE

lid*_*ang 19 deployment cluster-computing mongodb node.js express

使用pm2部署Express应用程序

数据库是mongodb

使用命令运行app时:

NODE_ENV=production pm2 start app.js -i max

aften有错误:绑定EADDRINUSE,这是日志,当出错时,

[app err (l0)] js:1073:26
[app err (l1)]     at Object.30:1 (cluster.js:587:5)
[app err (l2)]     at handleResponse (cluster.js:171:41)
[app err (l3)]     at respond (cluster.js:192:5)
[app err (l4)]     at handleMessage (cluster.js:202:5)
[app err (l5)]     at process.EventEmitter.emit (events.js:117:20)
[app err (l6)]     at handleMessage (child_process.js:318:10)
[app err (l7)]     at child_process.js:392:7
[app err (l8)]     at process.handleConversion.net.Native.got (child_process.js:91:7)Error: bind EADDRINUSE
[app err (l9)]     at errnoException (net.js:901:11)
[app err (l10)]     at net.js:1073:26
[app err (l11)]     at Object.31:1 (cluster.js:587:5)
[app err (l12)]     at handleResponse (cluster.js:171:41)
[app err (l13)]     at respond (cluster.js:192:5)
[app err (l14)]     at handleMessage (cluster.js:202:5)
[app err (l15)]     at process.EventEmitter.emit (events.js:117:20)
[app err (l16)]     at handleMessage (child_process.js:318:10)
[app err (l17)]     at child_process.js:392:7
[app err (l18)]     at process.handleConversion.net.Native.got (child_process.js:91:7)
Run Code Online (Sandbox Code Playgroud)

这导致app很慢,如何解决这个问题,非常感谢

San*_*nda 30

我不知道您的应用程序使用的端口.这取决于你的代码.在这个例子中,我将假设端口是3000.

您需要验证端口是否已在您的系统上使用.要做到这一点:

  • 在linux上: sudo netstat -nltp | grep 3000
  • 在OSX上: sudo lsof -i -P | grep 3000

如果有结果,则需要终止进程(kill <pid>).

你应该检查是否pm2 list返回0进程.此外,当您执行a时pm2 stopAll,套接字不会被释放.不要忘记做一个pm2 kill以确保守护程序被杀死.

$ pm2 kill
Daemon killed
Run Code Online (Sandbox Code Playgroud)

  • 没有列出任何进程我得到同样的错误..."pm2删除所有",然后"pm2启动app.js",我仍然得到错误..."sudo netstat -nltp | grep 3000"继续显示... (3认同)

Luk*_*kas 6

OS X

Cmd + Space->输入:活动监视器->查找您的应用并终止它。

在此处输入图片说明