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

进一步的工作

显然SSH身份验证阶段仍需要很长时间 , 可能长达3.4秒 。 GitLab可以使用AuthorizedKeysCommand直接在数据库中查找SSH密钥 。 当拥有大量用户时 , 这对于快速操作至关重要 , 否则SSHD必须按顺序读取非常大的authorized_keys文件以查找用户的公钥 , 并且这不能很好实现横向扩展 。 目前使用一些调用内部HTTP API的ruby实现查找 。 工程研究员Stan Hu和GitLab知识的常驻来源 , 确定Git/ SH服务器上的实例正在经历大量排队 。 这可能是~3秒预认证阶段的重要贡献者 , 因此需要进一步研究解决 。

当看到表明问题正在发生的HAProxy日志时 , 还需要发出警报 。 后续可能还需要进一步增加MaxStartup配置 , 或者如果资源限制了 , 则添加更多Git/SSH节点 。

总结

本文通过GitLab线上服务的一个实例分析 , 显示了线上问题排查的全过程 , 通过抓包、日志定位 , 参数配置调整测试和问题总结等过程全面展示了从问题发现、定位到解决的全过程 , 并且在该过程中进行经验总结 。 总之该问题不是特例 , 该问题解决方法、步骤和思路更是可以学习和推广的好案例 。

推荐阅读