Catch ALL requests by LUA-script

HowToMeetLadies nginx-forum at nginx.us
Thu May 5 04:05:17 MSD 2011


> 
> Your feedback is always welcome! Sorry for the
> delay on my side for I
> was enjoying my vocation in the Fuzhou city in the
> southern region of
> China in the last few days :)
> 

Heh, I know what delays are and that was no delay.. Here it is best
weather for bicycling, so i do all the time! ;) One thing on my todo is
to visit china, my cousin lived there past 5-6 years and i've seen many
pictures and videos.. Last month he married his wife there, but i could
not get away :(



> 
> What's your operating system? We used to observe
> similar periodic
> segfaults with exactly the same version of
> ngx_openresty on RedHat
> Enterprise Linux (RHEL) 5.4 in production but now

My good *old* development box is a quad *i686* with deb5 (old)stable gcc
4.3.2-1.1



> all is fine after we
> switched LuaJIT to a more recent git HEAD version
> which includes an
> important work-around for an old libgcc bug
> explained here in the
> lua-l mailing list:
> 
>    
> http://lua-users.org/lists/lua-l/2011-03/msg00576.
> html
> 

Tried both samples and luajit detected it. Anyway thank you for sharing
this, so ill try that next.



> I'll make a new release of ngx_openresty to
> include a new version of
> LuaJIT as well as some other modules' updates like
> ngx_lua's and
> ngx_srcache's. I'll inform you here when I'm done.
> 
> Also, it'll be very appreciated if you can obtain
> a gdb backtrace for
> your segfaults so that we can look at the details
> ;)

Sure, thats no problem. Tomorrow ill attach to it and take a sample for
you. Have also a full dump, as every build has its own /prefix.


> 
> Oh, that's awesome :)
> 

Thanks, but yours is *epic*.



> >
> > Below ill use luasql, instead you can use
> > ngx.location.capture("/some-internal-rds-json")
> and lua-yajl, but this
> > approach ends as soon as you want INSERT
> followed by LAST_INSERT_ID() or
> > other complex queries/transactions (as long as
> libdrizzle has no support
> > for multiple queries, maybe this is not the best
> option to go with, ive
> > tried alternatives and workarounds, but for now
> this is what *I* want).
> >
> 
> The luasql library will certainly block nginx
> worker processes. Please
> dont' use that.
> 

Tbh, youre absolutely right. Realized it before i used this and *I* had
no problems, also do not have much inserts (about 25-40k text each,
stored in a fraction of a second). Tested it also further with luasql
all queries, no problems so far but only with circumventions and all
under pre-calculated conditions with *enough* instances, fast i/o,
caching etc. This is at no will a reliable solution and much likely a
show-stopper! So do *not* try at home eh?!!

In the meantime or maybe forever ill stick to redis only (: Exchanges to
or from intermediates are stressing me, but still better as seeing ruby
eating up resources and doing "nothing" on ngx_passenger/ree.. sinatra,
merb, rails, foo, bla -.-" Redis helped there a lot, but even in my
*experimental* Rack written with D ive done better! ;) But thats true
another story..

As a last resort for mysql i thought of getting an unique id from a
(lua) location which is then used for insertion and afterwards on
success, i.e. for redirects. Or have i missed something, what would you
do? 


> I know libdrizzle is very limited in terms of
> functionality and it's
> *not* maintained very well. We'll start a
> completely new nginx
> upstream modules for mysql named ngx_mysql by
> implementing a
> non-blocking full-fledged highly-optimized mysql
> client from scratch.
> I'd love to see it happen this year ;)
> 
> Another direction we're taking is to introduce the
> "cosocket"
> mechanism into ngx_lua such that one can use a
> *synchronous* Lua
> socket API that is transparently *asynchronous*
> and *non-blocking* on
> the nginx C level. Atop that, we can build
> pure-Lua non-blocking mysql
> client driver and thus putting everything onto the
> Lua land and no
> longer need to mess up the nginx.conf file and
> nginx subrequests. I'd
> also want to see it happen by this Christmas ;)
> 

You mentioned "cosocket" somewhere (github?) already and IMO that would
be really amazing! I'm following "agentzh" and "chaoslawful" on github
and will take a deeper look when i get more time. Will be linking to
your projects when i release something useful (safe) for it.



> 
> The high-level abstraction for ngx_lua is
> excellent! We're taking a
> slightly different approach along the line in our
> web applications:
> 
>    
> http://agentzh.org/misc/nginx/lzsql-manual.html
> 
> We're using a DSL (Domain Specific Language)
> compiler that emits Lua
> code and business logic is mostly implemented in
> this DSL. It's
> targeting our business though, not meant to be
> useful for general web
> application development (yet).
> 

Looks very promising, i seen that page already on my researches and
would love to get my hands on it. I do a lot of research, trying as much
as possible, protocols like XMPP and PSYC and such good things, but
mostly everything apart from PHP, .Net and Java.. :>

> Thanks for sharing!
> 
> -agentzh
> 

Heh. >.< All the thanks belong to you and who else is also behind that
projects! Had so much *fun* with it so far, you wont believe it how it
boosted everything at our groups site, ookeh not *that* much, but enough
to already left ruby (was riding since little rails). And personally it
helped me alot to grok lua, as i needed that for deeper reworks of my
prosody-im fork (another lua project thats awesome, i prefer it over
ejabberd/erl which indeed is both neat feature-wise, but wont let me
change (easily) from mnesia to redis or other nice tricks).


Thanks again!
# HTML

Posted at Nginx Forum: http://forum.nginx.org/read.php?2,179364,195682#msg-195682




More information about the nginx mailing list