Déploiement d'une application express avec pm2
la base de données est mongodb
lors de l'exécution de l'application avec la commande:
NODE_ENV=production pm2 start app.js -i max
aften a une erreur: liez EADDRINUSE, ce sont les journaux, lorsque l'erreur,
[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)
Cela provoque une application lente, comment résoudre ce problème, merci beaucoup
Je ne connais pas le port utilisé par votre application. Cela dépend de votre code. Dans cet exemple, je suppose que le port est 3000
.
Vous devez vérifier si le port est déjà pris sur votre système. Pour faire ça:
Sudo netstat -nltp | grep 3000
Sudo lsof -i -P | grep 3000
Si vous avez un résultat, vous devez tuer le processus (kill <pid>
).
Vous devez vérifier si pm2 list
renvoie 0 processus. En outre, lorsque vous effectuez une pm2 stopAll
, le socket n'est pas libéré. N'oubliez pas de faire un pm2 kill
pour être sûr que le démon est tué.
$ pm2 kill
Daemon killed