Nginx-ru mailing list archive (nginx-ru@sysoev.ru)
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: 1.0.4 неприятности с keepalive_ timeout
Hello!
On Wed, Jun 15, 2011 at 04:20:26PM +0400, sad@xxxxxxxxx wrote:
> саму неприятность описать сложно, она очень загадочно выглядит.
> скажем первый симптом: "если тупо жать кнопку reload в браузере то на каждый
> второй запрос nginx не отвечает"
>
> оказывается что фигня происходит ЕСЛИ запрос отправить до истечения
> keepalive-timeout.
> после истечения всё раб как надо.
>
> проблема полностью лечится keepalive-timeout 0;
>
> в ответ на "проблемный" запрос nginx молчит ровно keepalive-timeout времени.
> а затем выплёвывает нечто вроде:
>
> 0
>
> HTTP/1.1 200 OK
> Server: nginx/1.0.4
> Date: Wed, 15 Jun 2011 12:05:54 GMT
> Content-Type: text/plain; charset=utf-8
> Transfer-Encoding: chunked
> Connection: keep-alive
>
> 22
> exactly-the-expected-body
> 0
>
> 0
>
> тоесть заголовки прямо в теле и тело очень смахивает на chunked.
>
> проблему я встретил при изпользовании модуля ngx_postgres,
> а при отдаче статики проблему возпроизвести не удалось.
> тем не менее я думаю что эта проблема не специфична для postgres module
> может быть её можно воспроизвести с другими upstream...
Судя по всему, проблема именно в ngx_postgres: он видимо ставит на
буфер флаг last_buf, а не должен. Это приводит к двум final
chunk'ам (см. выше - CRLF "0" CRLF CRLF), что ломает протокол и
соответственно keepalive не может нормально работать.
Maxim Dounin
_______________________________________________
nginx-ru mailing list
nginx-ru@xxxxxxxxx
http://nginx.org/mailman/listinfo/nginx-ru
|