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

ssh_exchange_identification: connection closed by remote host

fatal: Could not read from remote repository

比较要命的是错误信息是间歇性的随机爆发 , 无法预测的 , 不能重现 , 也没有明确指出截图和日志来说明问题发生的各种现象和环境 , 当然该错误信息也太笼统没有啥太大的意义 。 SSH客户端报告该信息可能的原因:碎片化的客户端或虚拟机 , 网络防火墙行为 , ISP做的手脚 , 当然也有可能是GitLab应用程序问题 。 GitLab在线仓库每天要处理2600万的Git-over-SSH的连接 , 大约平均每秒300个的链接 , 要从中发现少数几个失败 , 显然是一件很有挑战性的问题 。

第一个线索

经过初步分析后 , 运维团队联系了有问题的客户 , 他说每天都会有多次出现这个问题 , 所以以此来作为出发点显然很合适 。 客户还提供了问题是对应的公网IP地址 , 所以可以在的GitLab前端代理HAproxy节点抓包分析 , 定位到具体有问题的数据包信息 。 好消息是 , 客户使用了alternate-ssh端口 , 这样就可以只分析两台HAProxy服务器 , 将问题定位范围进一步由16减少到2 。

推荐阅读