运维经典案例学习之GitLab官网在线仓库SSH连接故障排查和经验总结( 四 )

S:服务器中止 , 或者服务器明确拒绝它

D:会话处于DATA阶段 。

D很清楚 , 已正确建立TCP连接 , 并且正在发送数据 , 这与数据包捕获证据相匹配 。 S表示HAProxy从后端收到RST或ICMP失败消息 。 至于是哪种情况发生或可能的原因没有直接的头绪 。 可能是从网络问题(例如故障或堵塞)直到应用程序级问题的很多原因 。 使用BigQuery通过Git后端进行聚合 , 很明显它并不是特定于任何VM 。

事实证明 , 带有SD的日志并不是该问题所独有的 。 在alternate-ssh端口上 , 会对HTTPS进行大量扫描 , 会导致在SSH服务器看到TLS ClientHello消息时遇到SSH问候语时会记录SD 。

在捕获HAProxy和Git服务器之间的一些流量并再次通过使用Wireshark统计工具时 , 很明显Git服务器上的SSHD在TCP三次握手后立即拆除了与TCP FIN-ACK的连接 。 HAProxy仍然没有发送第一个数据包 , 但是即将发送状态 , 当它很快要发送时 , Git服务器以TCP RST响应 。 因此有理由HAProxy使用SD记录连接失败 。 SSH正在关闭连接 , 显然就已经关闭了 。 RST只是SSH服务器在FIN-ACK之后接收数据包 , 并不代表什么 。

推荐阅读