有人可以给我关于以下情况的想法(Linux 2.6.18-348.4.1.el5):
什么是可能的原因,可能导致tcpdump显示strace中丢失的数据包? 它看起来更像是服务器问题,TCP设置问题还是一些防火墙服务问题?
有些东西会触发服务器端的连接closures。 很可能是远程服务器上closures连接的应用程序。 可能的原因是服务器上的闲置断开function,软件错误等
如果远程服务器位于NAT之后,则也可能是由执行NAT的设备中的NAT条目到期引起的。
您应该在服务器上运行tcpdump
并查看FIN
数据包是否源自该服务器。 如果是,那么可能的罪魁祸首就是应用程序。 如果不是,那么它是来自防火墙。
kasperd是正确的strace没有显示进程的所有线程 (不知何故,我确定附加到进程将监视所有线程)。 所以审计确认它是我的应用程序closures套接字(因为一些神秘的“信号33”发生和recv()不正确处理EINTR,我会问另一个问题) 。