Hello!
2013/8/15 jianping.zhao82:
>
> 谢谢春哥的回复。目前使用了,ngx.shard.incr 实现队列计数,
> 由于缺乏锁机制。导致并发时。达不到效果。 建议api 中加个lock
你可以使用 shdict 的 add/decr 来摸拟锁,就像人们使用 memcached
的对应操作来摸拟锁一样。不过在无法取得锁时的“等待”需要自己用 ngx.sleep() 这样的调用来摸似,实时性不及 redis 的
blpop 好。
> 如果不锁定io 操作
> 我认为。对性能不会有太多的影响。看来目前需要使用redis 的 incr 了
>
上封邮件我忘了说了,其实也可以直接使用 nginx 标准的 ngx_limit_conn 模块来实现请求级别的并发控制:
http://nginx.org/en/docs/http/ngx_http_limit_conn_module.html
另外,值得提醒的是,在进行同步等待方式来进行并发控制的时候,不要使用 timer,因为 timer 是异步的。
Regards,
-agentzh