Hello!
2013/10/30 <yws...@gmail.com>:
>
> 请教个问题,最近看nginx-lua的源码,一直疑惑lua注册表中连接池ngx_http_lua_socket_pool_key对应的table是什么时候初始化的,搜索了下代码发现在ngx_http_lua_init_registry中发现被初始化过,但是我的debug日志中显示没有调用过这个函数。
>
ngx_lua 的连接池目前是这样存放的:
Lua registry (Lua table)
-> socket_pools (Lua table)
-> socket pool (ngx_http_lua_socket_pool_t)
&ngx_http_lua_socket_pool_key 是 socket_pools 在 Lua registry 里保存时使用的
key. 而真正的 socket pool 保存在 socket_pools 里面时所使用的 key 一般是 "<host>:<port>"
这个 Lua 字符串(或者是用户自己指定的 key)。
socket_pools 这个 Lua table 初始化的位置是在 ngx_http_lua_init_registry 这个 C 函数里。
socket pool 的初始化位置(目前)是在 ngx_http_lua_socket_tcp_setkeepalive
这个函数里面。不过,我有计划将 socket_pool 的初始化位置移到 connect 函数里面。
Regards,
-agentzh