Как исправить ошибку «getaddrinfo ENOTFOUND localhost» на nuxt. js после DDoS? - PullRequest
1 голос
/ 16 января 2020

Коллеги!

Столкнулся с необычной проблемой, не смог найти решение самостоятельно. Суть в том, что на Nuxt есть веб-сайт. js в сочетании с Laravel в качестве бэкэнда. При рендеринге на стороне сервера интерфейс отправляет запросы к бэкэнду через localhost. Во время DDoS-атак (есть защита от популярного сервиса), запросы go проходят в самом начале, в течение минуты защита «просыпается» и атака сходит на нет.

Проблема в том, что если атака имеет очень высокую пиковую нагрузку, затем происходит следующее.

  1. Сначала появляются ошибки при превышении количества открытых файлов:
ERROR  EMFILE: too many open files, open '/*/*/*/app/client/static/img/image-1.svg'
ERROR  EMFILE: too many open files, open '/*/*/*/app/client/static/img/image-2.png'
ERROR  EMFILE: too many open files, open '/*/*/*/app/client/static/img/image-3.svg'
ERROR  EMFILE: too many open files, open '/*/*/*/app/client/static/img/image-4.svg'

Папка клиента - это просто nuxt-приложение.

Когда защита отразит атаку, начинаются ошибки подключения к localhost:
ERROR  getaddrinfo ENOTFOUND localhost localhost:80 at GetAddrInfoReqWrap.onlookup [as oncomplete] (dns.js:57:26)

Интерфейс продолжает работать в обычном режиме, за исключением того, что во время рендеринга сервера данные не принимаются. Соответственно 90% функциональности отваливается. При перезапуске приложения nuxt работа полностью восстанавливается. В журналах nginx и php -fpm нет ошибок, указывающих на проблему с подключением к localhost.

Сразу скажу, что увеличение лимита на количество открытых файлов не является решением проблемы. проблема. При соответствующей силе атаки ошибка появится снова.

Я хочу понять причину, по которой локальный хост падает. Если вы не можете решить проблему в зародыше, альтернативой является то, как отловить такую ​​ошибку в nuxt. js, чтобы инициировать перезапуск приложения?

Заранее спасибо!

...