Hello! 2013/7/31 xunen: > nginx 启动后,需要定时(每60s)向中心服务器发送心跳等数据,socket 短连接,并将收到的数据打印出来。 > > 我们知道 如果在 一个 HTTP 请求的上下文中,模块开发是可以通过 > ngx_event_connect_peer(ngx_peer_connection_t *pc) 函数 > > 连接外部服务器的。现在 我想 在 模块的 init process 处注册一个 钩子函数,添加一个 60s 的定时器, > > 这个定时器调用 ngx_event_connect_peer 函数来完成发送心跳数据。不知道这种方案是否可行,还有有什么别的更好的办法呢? > 我记得姚伟斌同学的 ngx_upstream_healthcheck 模块大约就是这么弄的,可以参考一下: https://github.com/yaoweibin/nginx_upstream_check_module 当然,他这个模块不仅检查是否可以在 TCP 层面上连接成功,还会在应用层协议的层面上进行更细致的可用性验证。 等 ngx_lua 支持了 init_worker_by_lua 配置指令之后,再结合现有的 ngx.timer API,类似这样的健康检查的需求也可以直接通过一点点 Lua 代码来快速实现和定制了 :) Best regards, -agentzh
期待 ngx_lua 对 init_worker_by_lua 的支持,那样开发效率就大大提高了! -----邮件原件----- 发件人: openresty@googlegroups.com [mailto:openresty@googlegroups.com] 代表 Yichun Zhang (agentzh) 发送时间: 2013年8月2日 3:36 收件人: openresty 抄送: 593512449@qq.com 主题: Re: [openresty] 【咨询】nginx 异步问题请教 Hello! 2013/7/31 xunen: > nginx 启动后,需要定时(每60s)向中心服务器发送心跳等数据,socket 短连接,并将收到的数据打印出来。 > > 我们知道 如果在 一个 HTTP 请求的上下文中,模块开发是可以通过 > ngx_event_connect_peer(ngx_peer_connection_t *pc) 函数 > > 连接外部服务器的。现在 我想 在 模块的 init process 处注册一个 钩子函数,添加一个 60s 的定时器, > > 这个定时器调用 ngx_event_connect_peer 函数来完成发送心跳数据。不知道这种方案是否可行,还有有什么别的更好的办法呢? > 我记得姚伟斌同学的 ngx_upstream_healthcheck 模块大约就是这么弄的,可以参考一下: https://github.com/yaoweibin/nginx_upstream_check_module 当然,他这个模块不仅检查是否可以在 TCP 层面上连接成功,还会在应用层协议的层面上进行更细致的可用性验证。 等 ngx_lua 支持了 init_worker_by_lua 配置指令之后,再结合现有的 ngx.timer API,类似这样的健康检查的需求也可以直接通过一点点 Lua 代码来快速实现和定制了 :) Best regards, -agentzh --
Hello! 2013/8/1 zhou.lei: > 期待 ngx_lua 对 init_worker_by_lua 的支持,那样开发效率就大大提高了! > 我已经让戴冠兰同学把这一项加入他的工作列表了。他很可能会在未来几周之内搞定 :) Regards, -agentzh