运维经典案例学习之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之后接收数据包 , 并不代表什么 。
推荐阅读
- Ansible自动化运维
- 数据库紧急修复中 微盟系统遭遇自家核心运维破坏
- 爬虫学习之HttpClient练习
- 爬虫学习之HTTP协议初步了解
- 正则表达式学习之替换分组练习
- 正则表达式学习之分割字符及数量词练习
- Scala学习之基础函数
- Scala学习之数据类型和变量
- 编程学习之亲密数(C++描述)
- 企业级IT系统运维者如何才能体现真正价值?