Re: "Странные" таймауты при получении ответа от бекенда
Maxim Dounin
mdounin at mdounin.ru
Thu Jul 24 20:55:09 UTC 2014
Hello!
On Thu, Jul 24, 2014 at 04:12:13PM -0400, yanda.a wrote:
> > Запрос с телом и обработка, начинающаяся только при разрыве
> > соединения - поведение, характерное для ошибок, связанных с
> > чтением тела запроса. Бекенд по каким-то причинам считает, что
> > должно быть больше данных, и ждёт их - пока соединение не закроют.
> >
> > При этом каких-либо проблем с отправляемым nginx'ом телом, судя по
> > debug log'у, нет, так что имеет смысл смотреть в первую очередь на
> > бекенд.
> Тоже логично по сути. Просто изначально грешил либо на сетевую подсистему,
> либо на сам nginx, но пока не хватает опыта для анализа такого лога, как
> этот. Тогда есть еще один вопрос. Если есть опыт работы с apache, можете
> подсказать, каким образом в нем можно отловить эту ошибку?
Для начала имеет смысл посмотреть в конфиг бекенда и понять, как
обрабатываются соответствующие запросы. Если это динамика - то
скорее всего проблема в скрипте, который обрабатывает запрос.
Если статика - то имеет смысл обновить апач и посмотреть, не
вылечит ли; если не вылечит - крутить LogLevel и смотреть в код.
Или просто выкинуть апач из схемы и отдавать статику сразу
nginx'ом. :)
Ну и универсальный совет - в первую очередь имеет смысл научиться
воспроизводить проблему. E.g., снять tcpdump'ом весь запрос
целиком, и посылая его руками (telnet'ом, nc, ...) - убедиться,
что таймаут воспроизводится.
--
Maxim Dounin
http://nginx.org/
Подробная информация о списке рассылки nginx-ru