Event based implementation in http module
agentzh at gmail.com
Tue May 8 12:15:33 UTC 2012
On Tue, May 8, 2012 at 1:46 PM, vivek goel <goelvivek2011 at gmail.com> wrote:
> Sorry just clearing my doubt.
> Again I have one doubt.
> Work I am doing in clcf->handle is a blocking io call.
> Now if I am running nginx with 2 worker process and function I am calling in
> clcf->handle takes 200 ms to generate response.
> So it means that I will not able to server other clients from same worker
> process withing 200 ms time ?
Sure. The worker process is single-threaded. And by using blocking
calls in the content handler essentially turns nginx into an apache
server with the prefork mpm. Some inexperienced nginx developers have
been making such serious mistakes in their nginx modules.
> If yes ,
> How can I make it non-blocking so that I can server multiple clients ?
Just use nonblocking calls and leverage the nginx event model. You can
check out all those nginx upstream modules out there, ngx_memcached,
ngx_redis2, ngx_memc, ngx_drizzle, ngx_postgres, ngx_proxy, ngx_lua,
ngx_beanstalkd, and etc etc etc.
More information about the nginx-devel