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

接近问题实质

通过查看SSHD的文档 , 发现MaxStartups参数 , 它可以控制处于预认证状态的最大连接数 。 在波峰的时刻 , 互联网预定的任务的冲击下 , 似乎超出了连接限制似乎也是合理的 。 MaxStartups实际上有三个数字:低watermark(开始丢弃连接的数量) , 低watermark以上任何连接的(随机)丢弃连接的百分比 , 以及超过所有新连接的绝对最大值 。 默认值为10:30和100 , GitLab的设置为100:30:200 , 显然我们过去曾经增加过连接设置 , 也需要再加大配置 。

问题是 , Gitlab服务器上openssh版本是7.2 , 并且在该版本中查看MaxStartups设置的唯一方法需要打开调试级别日志记录 。 这是可能对导致数据泄漏 , 所以只能在一台服务器上测试打开 。 打开调试日志后 , 在几分钟内 , 明显MaxStartups设置就被超出了 , 因此连接被提前放弃 。

事实证明 , OpenSSH 7.6(Ubuntu 18.04附带的版本)有更好的MaxStartups日志记录 , 只需要Verbose日志记录就可以获得该信息 。 虽然不很理想 , 但总比Debug级别更好 。

经验三:在默认日志级别记录有用信息很有意义 , 出于任何原因服务器主动丢弃连接绝对是运维的锅 。

推荐阅读