On Fri, Feb 11, 2011 at 2:12 AM, Akins, Brian <Bria...@turner.com> wrote:
I was wondering if you had considered having a capture mode that used a
callback rather than coroutines? In really high traffic servers, the
coroutines seem to eat a good bit of memory.
Have you tried getting Lua to garbage collect before yielding? That
Have you tried LuaJIT 2.0? It saves 25+% of the total RAM used by our
nginx worker processes in our business, compared to the standard Lua
5.1 interpreter. Also the latter's coroutine implementation is
Another issue is that most of the upstream modules do not release its
output bufs as early as possible in the context of subrequests, they
usually rely on the nginx memory pool to release all those bufs when
the pool is destroyed at the end of the main request, which is quite
unacceptable. We'll fix our upstream modules and possibly other
standard modules (via patches) to release buffers at the end of the
subrequest, rather than main request.
That sounds a good fix...
Technically speaking, callbacks won't save memory, we still need to
save all your Lua context such that you can get access to data in the
outer context in your Lua callback, or it'll be useless :)