Jmeter SSHCommandSampler: Failed to connect to server with credentials :

本文介绍在使用Apache JMeter的SSH插件执行远程Linux命令时遇到的连接重置问题,重点讲解了MaxStartups配置对SSH连接的影响,并提供了修改配置、重启服务及解决超时问题的步骤。

使用Jmeter的SSH插件执行命令行时,出现以下错误:

 详细错误信息:

2021-09-02 17:03:43,023 ERROR o.a.j.p.s.s.SSHCommandSampler: Failed to connect to server with credentials root@10.xx.xx.xx:22 pw=****
2021-09-02 17:03:43,023 ERROR o.a.j.p.s.s.AbstractSSHSampler: SSH connexion error
com.jcraft.jsch.JSchException: Session.connect: java.net.SocketException: Connection reset

    at com.jcraft.jsch.Session.connect(Session.java:565) ~[jsch-0.1.54.jar:?]
    at org.apache.jmeter.protocol.ssh.sampler.AbstractSSHSampler.connect(AbstractSSHSampler.java:72) [ApacheJMeter_ssh-1.1.1-SNAPSHOT.jar:?]
    at org.apache.jmeter.protocol.ssh.sampler.SSHCommandSampler.sample(SSHCommandSampler.java:64) [ApacheJMeter_ssh-1.1.1-SNAPSHOT.jar:?]
    at org.apache.jmeter.threads.JMeterThread.executeSamplePackage(JMeterThread.java:491) [ApacheJMeter_core.jar:3.2 r1790748]
    at org.apache.jmeter.threads.JMeterThread.processSampler(JMeterThread.java:425) [ApacheJMeter_core.jar:3.2 r1790748]
    at org.apache.jmeter.threads.JMeterThread.run(JMeterThread.java:254) [ApacheJMeter_core.jar:3.2 r1790748]
    at java.lang.Thread.run(Unknown Source) [?:1.8.0_131]

仔细看了下: SSH connexion error
com.jcraft.jsch.JSchException: Session.connect: java.net.SocketException: Connection reset

原因: SSH插件连接远程linux机器时 连接重置,经定位发现是系统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服务 
    systemctl restart sshd.service
  • 查看状态
    systemctl status sshd.service

另外,系统的默认连接时间120秒,如果远程终端连接数过多,则会出现超时连接,解决办法如下:

  • 修改/etc/ssh/sshd_config中LoginGraceTime 120,将其改为LoginGraceTime 0,其中0表示不限制连接时间。
  • 重启SSH服务systemctl restart sshd.service

参考:并发下sftp连接报错——com.jcraft.jsch.JSchException: connection is closed by foreign host_weixin_30772261的博客-优快云博客

### 解决JMeter Connection Refused错误的方法 当遇到`Connection refused`错误时,这通常意味着客户端无法成功建立与服务器的连接。对于JMeter而言,在分布式测试环境中可能会由于多种原因导致此问题的发生。 #### 1. 检查防火墙设置 确保所有参与远程调用的机器上的防火墙允许RMI通信所需的端口通过。默认情况下,JMeter使用1099作为RMI注册表端口[^1]。如果更改了该端口号,则需相应调整防火墙规则。 #### 2. 修改JMeter属性文件 可以通过编辑`jmeter.properties`或创建自定义的`system.properties`文件来指定必要的参数。例如: ```properties server_port=1099 server.rmi.localport=4000 client.rmi.localport=4001 ``` 这些配置项可以帮助解决因本地和远程主机之间的端口冲突而导致的连接失败问题。 #### 3. 启用详细的日志记录 为了更好地诊断问题所在,可以在启动JMeter服务端时增加更多的调试信息输出。命令如下所示: ```bash jmeter -s -Dsun.rmi.loader.logLevel=verbose ``` 上述指令会省略掉原本需要加上的`-J`前缀,并且能够提供更详尽的日志以便于排查故障。 #### 4. 确认Java版本一致性 保证所有的JMeter实例都运行在同一版本的Java虚拟机之上非常重要。不同版本之间可能存在兼容性差异,从而引发意想不到的行为甚至完全阻止正常工作。 #### 5. 测试单机模式下的功能 在尝试构建复杂的分布式环境之前,先验证单独一台计算机上能否顺利执行计划中的负载测试场景。这样做有助于排除潜在的基础架构层面的问题。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值