Re: Некорректная работа при выведении сервера из апстрима за timeout
Maxim Dounin
mdounin на mdounin.ru
Пт Фев 16 12:01:42 UTC 2018
Hello!
On Fri, Feb 16, 2018 at 01:12:43PM +0300, kpoxa wrote:
> Добрый день.
>
> nginx version: nginx/1.12.2
>
> Кслассическая схема:
>
> nginx - apache (10 серверов) - mysql
>
> В случае перегрузки базы данных апач отвечает медленно, что логично.
> Перестаёт отвечать nginx'у.
> И как следствие nginx выводит сервер с апачом из работы. Соответственно
> сервер начинает то включаться в работу то выключаться.
>
> Далее наблюдается следующая картина, которая у вызывает у меня вопрос, у
> апачей куча детей в статусе R, т.е. reading request.
>
> strace на процесс Апача примерно такой:
>
> accept(
>
> пришел syn пакет и апач его принял
>
> read(
>
> ждём HTTP запрос от nginx в течении 60+ секунд.
>
> не знаю в какой момент, но nginx открывает соединения, возможно до вывода
> сервера из работы, а далее не отправляет на него запросы, как следствие
> дети Апача заняты ожиданием запросов и апач в итоге не отвечают нормально.
Попробуйте снять tcpdump (причём желательно - с двух сторон,
nginx'а и backend'а), возможно станет понятнее, что тут
происходит.
Ну и сразу стоит убедиться, что между nginx'ом и апачами нет
какого-нибудь умного statefull firewall'а, а если вдруг есть -
убрать или тщательно исследовать на предмет настроек и ошибок.
--
Maxim Dounin
http://mdounin.ru/
Подробная информация о списке рассылки nginx-ru