Ошибка EAI_AGAIN на сервере Node JS при подключении к MongoDB Atlas - PullRequest
0 голосов
/ 05 августа 2020

Сегодня я получил следующую ошибку от сервера:

    { MongoTimeoutError: Server selection timed out after 30000 ms
    at Timeout.setTimeout [as _onTimeout] (/home/ubuntu/xxx-v.1-backend/node_modules/mongoose/node_modules/mongodb/lib/core/sdam/topology.js:897:9)
    at ontimeout (timers.js:436:11)
    at tryOnTimeout (timers.js:300:5)
    at listOnTimeout (timers.js:263:5)
    at Timer.processTimers (timers.js:223:10)
  name: 'MongoTimeoutError',
  reason:
   { Error: getaddrinfo EAI_AGAIN xyz.mongodb.net xyz.mongodb.net:27017
       at GetAddrInfoReqWrap.onlookup [as oncomplete] (dns.js:56:26)
     name: 'MongoNetworkError',
     errorLabels: [ 'TransientTransactionError' ],
     [Symbol(mongoErrorContextSymbol)]: {} },
  [Symbol(mongoErrorContextSymbol)]: {} }

Сервер работал нормально больше года, и внезапно сервер сегодня перестал работать. Когда я заглянул в таблицу мониторинга EC2 AWS, он упомянул, что загрузка ЦП составляет 100%. Итак, я перезагрузил сервер из консоли EC2. После перезапуска сервера, когда я просмотрел журналы, я обнаружил, что указанная выше ошибка повторяется несколько раз. Итак, я предполагаю, что NodeJS мог несколько раз пытаться подключиться к Atlas и, следовательно, загрузка ЦП составляла 100%.

Когда я поискал в Интернете ошибку EAI_AGAIN, они упомянули, что IP-адрес может не быть добавленным в Атлас MongoDB или указано неправильное имя. Я проверил оба предложения, и в результате выяснилось, что проблема не в них.

Я не знаю, как действовать дальше. Пожалуйста, помогите с этой проблемой.

...