并发下sftp连接报错——com.jcraft.jsch.JSchException: connection is closed by foreign host
当对单接口极限测试时,随着并发量上升,接口稳定性出现不稳定的情况,排查后台日志,发现报错在该接口调用sftp上传时出现问题(确切的是在初始化连接时失败)
原因:系统SSH终端连接数配置过小,查看虚拟机该参数(该参数在/etc/ssh/sshd_config中配置,为MaxStartups),MaxStartups 默认设置是 10:30:100,意思是从第10个连接开始以30%的概率(递增)拒绝新连接,直到连接数达到100为止。
解决方法:
- 修改/etc/ssh/sshd_config中的MaxStartups,将其改为MaxStartups 1000:30:1200;修改/etc/ssh/sshd_config中的MaxSessions,将其修改为1000
- 重启SSH服务/etc/init.d/ssh restart
另外,系统的默认连接时间120秒,如果远程终端连接数过多,则会出现超时连接,解决办法如下:
- 修改/etc/ssh/sshd_config中LoginGraceTime 120,将其改为LoginGraceTime 0,其中0表示不限制连接时间。
- 重启SSH服务/etc/init.d/ssh restart