Hello!
On Tue, Dec 18, 2012 at 2:55 AM, Wayne wrote:
> 想到的方法是可以用ngx.shared.DICT来做,新建连接时加一,关闭的时候减一。
> 除了这个方法,有没有其他的途径能获取到呢?
>
还有一个做法是
1. 遍历 ngx_cycle->connections 数组,
2. 筛选出当前活动请求的连接,并得到请求对象,
3. 最后进一步过滤出使用当前 API 的 location 配置的请求。
如果只是自己人内部监控的话,建议实现为外部的 systemtap 脚本,可以参考我的 Nginx SystemTap 工具箱中的
ngx-active-reqs 工具:
https://github.com/agentzh/nginx-systemtap-toolkit#ngx-active-reqs
这个工具已经实现了上面提到的步骤 1 和步骤 2. 你可以将之扩展为符合你需求的步骤 3 :)
这种基于动态追踪技术的实时统计和监视是推荐的做法。一则不会影响 nginx
应用的复杂度,二是可以按需调用,使用时的开销极小(多是微秒级),不使用时便是严格的 0 运行时开销 :)
Best regards,
-agentzh