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