Hello!
2013/7/19 Freeman Zhang:
> 可以确认是我方服务器发起的connection reset
> 从tcpdump的抓包上看,RST ACK确实是服务器的IP和nginx服务端口。
>
进一步追踪问题我觉得有两个方向,不过都在很低的层面上:
1. 同时记录 RST,ACK 包发送之前当前 TCP 连接上两个方向上往来的包信息。从这些包的内容,结合 TCP 协议的要求,推测引发
kernel TCP 协议栈实现返回 RST,ACK 包的原因。
2. 通过 systemtap 这样的动态追踪工具,直接探入 kernel TCP 协议栈实现中所有发送 RST 包的位置,通过
kernel backtrace 信息(以及 userspace backtrace)确认发起 RST 的代码位置,从而确认原因。
第二个方向更直接一些,运行时代价或许也更低一些,毕竟所你所说,RST 是小频率事件。
Regards,
-agentzh
P.S. 同时抄送 openresty 中文邮件列表。