nginx, echo module & lua
Pierre
serarien at baqs.net
Thu May 3 10:43:17 UTC 2012
Investigating a bit more, here is the conclusion:
location = /store {
internal;
#test 1
#echo_subrequest_async PUT /trucalacon -q 'filename=$arg_filename' -b $echo_request_body;
#test 2
#content_by_lua '
# local filename = ngx.req.get_uri_args()["md5"]
# local res = ngx.location.capture("/trucalacon",
# { args = {filename = filename } ,
# ctx = ngx.ctx })
#';
}
location = /trucalacon {
proxy_set_header X-Real-IP $remote_addr;
proxy_pass http://otherserver;
}
using echo_subrequest_async, I directly reach :
2012/05/03 12:08:25 [error] 13204#0: *1 subrequests cycle while processing "/trucalacon",
using echo_subrequest, I get the same behaviour as ngx.location.capture
using content_by_lua + location.capture, everything is smooth.
/store is called by another lua script, which does
location.capture.multi('/store'), 20 by 20
Last interrogation:
What is the best way to discard body (I mean free the memory by body passed to subrequests ) ?
On 03/mai - 01:34, Pierre wrote:
> On 02/mai - 19:46, agentzh wrote:
> > Hello!
> >
> > On Wed, May 2, 2012 at 4:11 PM, Pierre <serarien at baqs.net> wrote:
> > > I'm trying to use both echo module & lua, but I'm having some issues:
> > >
> > > 1. I reach quickly "subrequests cycle". Looking @ the code, subrequests is
> > > unsigned:8,
> > > but I would need thousands of subrequests sometimes. putting subrequests to
> > > unsigned just
> > > results to crashes.
> > >
> >
> > There's no way to support thousands of subrequests in a single main
> > request without patching the nginx core.
> >
> > But you're encouraged to try out ngx_lua's cosocket API to avoid
> > subrequests altogether. And the cosocket stuff does not have such
> > limitations.
> >
> > There's already several Lua drivers based on that, including
> > memcached, redis, mysql, http, and mongodb. For instance, the
> > lua-resty-redis library:
> >
> > https://github.com/agentzh/lua-resty-redis
> >
>
> how can I combine cosocket & foreign upstream ?
> also, I didn't find any example involving cosocket between locations, or maybe
> I'm getting it wrong.
>
> > > 2. when in config: set_by_lua_file $varname luafile.lua , and luafile.lua
> > > references to ngx.ctx,
> > > I get the following error:
> > > (lua-error)...no request ctx found
> > > according to the doc, ngx.ctx is available in set_lua*, but does not work.
> > > Would anybody suggest
> > > me a workaround ?
> > >
> >
> > This is indeed a bug. Thanks for reporting this!
> >
> > I've just committed a patch for it:
> >
> > https://github.com/chaoslawful/lua-nginx-module/commit/bee1cab
>
> works like a charm, thanks !
>
> >
> > Could you try out the git master HEAD on your side?
> >
> > Thanks!
> > -agentzh
> >
> > _______________________________________________
> > nginx mailing list
> > nginx at nginx.org
> > http://mailman.nginx.org/mailman/listinfo/nginx
>
> _______________________________________________
> nginx mailing list
> nginx at nginx.org
> http://mailman.nginx.org/mailman/listinfo/nginx
More information about the nginx
mailing list