In memory subrequest hang if backend return 500

Maxim Dounin mdounin at mdounin.ru
Wed Mar 21 08:53:56 UTC 2012


Hello!

On Wed, Mar 21, 2012 at 10:53:45AM +0800, Abioy Sun wrote:

> Hi All,
> 
> In the file ngx_http_upstream.c I found some code like this:
> 
> 1618     if (u->headers_in.status_n > NGX_HTTP_SPECIAL_RESPONSE) {
> 1619
> 1620         if (r->subrequest_in_memory) {
> 1621             u->buffer.last = u->buffer.pos;
> 1622         }
> 
> that means, if the status backend return if greater than 300, the first
> part of the body would be abandoned.  Will this cause the issue that the
> main request won't be woken again and keep sleeping until timeout? Or did I
> misunderstand anything?

Do you use keepalive connections to backends?

As far as I see, this may indeed cause problems with keepalive 
connections, though should be ok in non-keepalive case.

Maxim Dounin



More information about the nginx-devel mailing list