skip to Main Content

I’m running a NodeJS application on ubuntu LTS 20.4 managed by PM2. Application is running fine but when I check the logs I see lots of EADDRINUSE address already in use message.

I started the server using the command sudo pm2 start index.js

Error: listen EADDRINUSE: address already in use :::8000
    at Server.setupListenHandle [as _listen2] (node:net:1432:16)
    at listenInCluster (node:net:1480:12)
    at Server.listen (node:net:1568:7)
    at file:///home/ubuntu/wapi/index.js:105:10
    at process.processTicksAndRejections (node:internal/process/task_queues:95:5) {
  code: 'EADDRINUSE',
  errno: -98,
  syscall: 'listen',
  address: '::',
  port: 8000
}
cleanup

Stack trace is pointing to line number 105 of the file below.

https://github.com/billbarsch/myzap/blob/myzap2.0/index.js

What I don’t understand is why PM2 is trying to start the server almost every second (because this message appears in the log every second) when the service is already running?

And sudo pm2 ls is listing 2 processes

│ id │ name │ namespace │ version │ mode │ pid │ uptime │ ↺ │ status │ cpu │ mem │ user │ watching │

│ 0 │ index │ default │ 1.0.0 │ fork │ 1673211 │ 103s │ 130 │ online │ 0% │ 111.8mb │ root │ disabled │

│ 1 │ index │ default │ 1.0.0 │ fork │ 1673848 │ 2s │ 450… │ online │ 66.7% │ 120.3mb │ root │ disabled │

Really appreciate some help.

Thanks

2

Answers


  1. It appears that you already have another process of pm2 which is running the same application. That is why you are seeing EADDRINUSE.

    And the reason you are getting the same log every second is that pm2 tends to restart the application when it errors out.

    You can stop all the processes using

    pm2 stop all
    

    And then try to re-run your process.

    Login or Signup to reply.
  2. Your error tell that another process already use the specified port.
    That can be every process on your server, not only a node process running under PM2.

    To determine what process already use the port, you can issue the netstat command:

    netstat -ano -p -t | grep 8000
    

    This will print out ALL process connected to this port, server as client. To identify server process look for LISTEN.

    If not logged as privileged user, use sudo:

    sudo netstat -ano -p -t | grep 8000
    
    Login or Signup to reply.
Please signup or login to give your own answer.
Back To Top
Search