Рейтинг:0

Прерывистое «Адрес уже используется: AH00072: make_sock: не удалось выполнить привязку к адресу» на порту 80

флаг ng

Мы сталкиваемся с прерывистым сообщением «Адрес уже используется: AH00072: make_sock: не удалось выполнить привязку к адресу» при сбоях порта 80 на наших серверах. Я просмотрел другие ответы, и они в основном основаны на том, что это постоянный сбой, а LISTEN определяется дважды, что не является нашей проблемой.

Наша проблема возникает только вскоре после загрузки экземпляра, когда мы «sudo service httpd перезапускаем» службу для загрузки новой конфигурации, которую мы устанавливаем в зависимости от среды.

Я смог поймать проблему в прямом эфире и убедиться, что это было на самом деле httpd что связано. Похоже, проблема в том, что Apache/httpd зависает и не может перезапуститься, а затем перезапуск не ждет его.

Мы используем Apache 2.4 на Amazon Linux 1.

введите описание изображения здесь

Michael Hampton avatar
флаг cz
Амазон линукс 1? Это _древний_. Это все еще поддерживается? Я думал, что его бросили много лет назад. Я не уверен, как далеко вы сможете зайти с этим.
флаг ng
Да, это правда, недавно он потерял поддержку. Мы работаем над переходом на контейнеры на K8s, но до этого еще несколько месяцев, а до тех пор я все еще ищу решение этой проблемы. Прямо сейчас это влияет только на наш компакт-диск с более низкой средой, но прямо сейчас вызывает у нас случайные сбои.
Michael Hampton avatar
флаг cz
Я бы посоветовал вам развернуть вашу конфигурацию _перед_ запуском httpd.
флаг ng
Я думаю, что у нас есть ограничение на нашу систему развертывания (основанную на Ansible), но я посмотрю на нее и посмотрю, смогу ли я ее реорганизовать. Это звучит так, как будто это было бы надежным решением и решило бы эту проблему. Спасибо, Михаил, за это предложение!
флаг ng
связанные: https://askubuntu.com/questions/500977/ah00015-unable-to-open-logs-action-start-failed-in-ubuntu-14-04
Рейтинг:1
флаг cn

Есть две основные причины для получения Адрес уже используется ошибка:

  1. Другой сервер использует этот IP:порт

    В этом случае вы пытаетесь запустить две службы, и обеим нужна одна и та же комбинация адреса и порта, что невозможно. Только одна служба может прослушивать один конкретный порт. Судя по всему, вы не в этой ситуации.

  2. Один и тот же сервер слишком быстро перезагружается

    По умолчанию ядро ​​​​удерживает комбинацию IP: порт в течение нескольких секунд (возможно, минуту), прежде чем разрешить службе снова использовать их. Это делается для того, чтобы все клиенты имели возможность получить надлежащий сигнал закрытия. Кроме того, из соображений безопасности вы можете получить пакеты, которые должны были быть отправлены на старое соединение. Это может вызвать проблемы.

    Похоже, это будет ваша ситуация, хотя я думал, что Apache будет автоматически использовать SO_REUSEADDR флаг. Способ исправить это — посмотреть на реализацию перезагрузки и добавить сон между командами выключения и запуска. Это довольно просто, если вы используете сценарий инициализации:

     [...отрезать...]
         ;;
     рестарт)
         log_daemon_msg "Перезапуск $DESC" "$NAME"
         do_stop стоп
         случай "$?" в
                 0|1)
                         sleep 12 # <<-- спать перед перезагрузкой
                         do_start
                         случай "$?" в
     [...отрезать...]
    

    С systemd вам придется отредактировать файл .service и добавить сон перед запуском сервера apache2.

     ExecStart=спать 20 && /usr/sbin/apache2
    

Ваш порядок инициализации также может быть причиной проблемы (если вам нужно запустить, что-то изменить, а затем перезапустить apache2 при загрузке; при этом возможность перезапустить apache2 в любой момент времени, вероятно, важна).

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.