[PATCH]Upstream: fix possible request hang when "proxy_buffering" is off.

flygoast flygoast at 126.com
Wed Jun 25 14:00:35 UTC 2014


At here:
in ngx_http_write_filter():


    if (limit
        && c->write->ready
        && c->sent - sent >= limit - (off_t) (2 * ngx_pagesize))
    {
        c->write->delayed = 1;
        ngx_add_timer(c->write, 1);
    }


limit's value from clcf->sendfile_max_chunk. In my nginx.conf, I set "sendfile_max_chunk 8k;". I attached a debug log for this situation in last mail.


Thanks.








At 2014-06-25 21:09:29,"Maxim Dounin" <mdounin at mdounin.ru> wrote:
>Hello!
>
>On Wed, Jun 25, 2014 at 07:23:32PM +0800, flygoast wrote:
>
>> # HG changeset patch
>> # User FengGu <flygoast at 126.com>
>> # Date 1403694825 -28800
>> #      Wed Jun 25 19:13:45 2014 +0800
>> # Node ID 12fd8ef2f6ea3167dd96cb000aafeb2665aeee14
>> # Parent  63d7d69d0fe48e030ff9fc520c7036dbd1ebc13f
>> Upstream: fix possible request hang when "proxy_buffering" is off.
>> 
>> 
>> In ngx_http_upstream_process_non_buffered_request(), when processing non
>> buffered request, if write event has been delayed, deleting write timer
>> event is likely to result in follow-up writing buffered in
>> ngx_http_write_filter() ever since.
>
>The question is "how write event got delayed?"
>In the non-buffered mode, the r->limit_rate is explcitly set to 0, 
>and this shouldn't happen.
>
>-- 
>Maxim Dounin
>http://nginx.org/
>
>_______________________________________________
>nginx-devel mailing list
>nginx-devel at nginx.org
>http://mailman.nginx.org/mailman/listinfo/nginx-devel
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mailman.nginx.org/pipermail/nginx-devel/attachments/20140625/3950e30c/attachment.html>


More information about the nginx-devel mailing list