nginx eval with memc set command very slowly
agentzh at gmail.com
Sat Apr 10 18:40:52 MSD 2010
On Fri, Mar 12, 2010 at 11:09 AM, agentzh <agentzh at gmail.com> wrote:
> On Fri, Mar 12, 2010 at 11:05 AM, agentzh <agentzh at gmail.com> wrote:
>> I've reproduced this hang on my side and spent half of my day tracking
>> this issue. But it looked deeper than I had expected.
> Forgot to mention that the "post subrequest" handler does not get
> called in this case. It seems ngx_http_upstream does not call
> finalize_request. Most likely an issue in ngx_memc's input filters.
I've fixed this bug in ngx_memc v0.08:
ngx_memc didn't support subrequests in memory for memcached commands
other than "get" in earlier versions. Now it's finally fixed by
setting r->upstream->buffer's .pos and .last pointers properly in the
upstream input filters.
Also I've fixed a nasty bug in the discard_bufs function in my fork of
ngx_eval. It used to produce random hanging or segfaults when
eval_subrequest_in_memory was turned off.
More information about the nginx