本地使用jsch执行shell命令基本没有延迟,但是在centos7虚拟机上出现了部分连接很慢一般要十几秒有点连接甚至不可用的情况。
部分接口直接获取jsch连接执行shell命令,另一部分对session连接进行池化管理,从session池中获取session并建立jsch连接。
直接调用两种不同的接口发现直接获取jsch连接方式,方法执行很慢普遍十秒往上。调用池化session建立jsch连接方式,方法不能执行会直接报错,说明池化方式失效了。
后来发现可能是SSH的DNS解析导致连接建立变慢,甚至池化连接无法使用。
关闭SSH的DNS解析后发现session连接池变得可用,初次使用仍会很慢,第二次后就会在一秒内执行完成。
在操作中,我们都会用SSH协议来远程控制虚拟机,但是在输入用户名时候,会有一段时间的卡顿,此时正在进行SSH协议的DNS解析,我们为了快速的连接到虚拟机上,就要关闭这个解析过程,如下是具体配置:
1. 修改sshd配置:vim /etc/ssh/sshd_config
- [root@work1 ~]# vim /etc/ssh/sshd_config
- ...
- # 关闭SSH的DNS解析
- UseDNS no
- ...
1. 重启sshd服务:systemctl restart sshd
springboot调用池化session建立jsch连接并执行shell命令