Hello!
2015-10-10 15:23 GMT+08:00 人cc:
> 如标题,我发现我的access里面的日志,content_by_lua_file执行完到log_by_lua_file开始执行,之间的时间很长,有些有几秒时间,这个是不是因为openresty
> send结果给client这个阶段很耗时?
log_by_lua_file 在 nginx 的 log
处理阶段运行。这个阶段需要等请求本身完全结束才会执行。至于具体是什么原因,没有更多的信息,光靠猜是没用的。当然了,常见的情形是慢客户端导致的响应体写延时。
值得一提的是,临时启用 nginx 的调试日志有助于确定原因,当不推荐在生产环境启用,因为调试日志损耗巨大。请见
http://nginx.org/en/docs/debugging_log.html
生产环境应使用 systemtap 这样的动态追踪工具来进行非侵入式的活体分析。
> 这个时间有些甚至出现了几天的时间才执行log_by_lua_file
你 100% 确定是这种情况吗?这不太可能是因为客户端写超时默认是 60 秒,如果客户端过慢,也会在一分钟内超时终止。如果你使用了
OpenResty 以外的第三方 nginx C 模块,这些模块有可能存在连接泄漏 bug,所以需慎用。
Regards,
-agentzh
P.S. 发送到邮件列表的邮件请不要再专门抄送我,因为我已经在邮件列表里面了,谢谢合作。