Spring boot 无法执行HTTP请求:无法';t启动握手

Spring boot 无法执行HTTP请求:无法';t启动握手,spring-boot,amazon-ec2,jmeter,aws-sdk,Spring Boot,Amazon Ec2,Jmeter,Aws Sdk,我正在尝试使用JMeter(5.0)使用500个用户线程访问我的Spring引导服务器(2.1.4)。在尝试此操作时,我在JMeter日志文件中得到了一个错误,大约占样本的1%。Spring引导服务器正在连接到aws服务 无法执行HTTP请求:无法启动握手 JMeter和SpringBoot服务器都在AWS EC2实例(m5a.2xlarge)上运行 注意:当我在不同的实例中运行Jmeter和Spring引导服务器时,错误减少到0.1% JDK-openjdk版本11 这显示aws sdk

我正在尝试使用JMeter(5.0)使用500个用户线程访问我的Spring引导服务器(2.1.4)。在尝试此操作时,我在JMeter日志文件中得到了一个错误,大约占样本的1%。Spring引导服务器正在连接到aws服务

无法执行HTTP请求:无法启动握手

JMeter和SpringBoot服务器都在AWS EC2实例(m5a.2xlarge)上运行

注意:当我在不同的实例中运行Jmeter和Spring引导服务器时,错误减少到0.1%

  • JDK-openjdk版本11

这显示aws sdkclient异常。我们是否需要更改任何awsclient配置或其与spring boot server的问题?

这可能是由于协议版本不匹配造成的,如果相同的应用程序在一个aws实例上运行良好,而在另一个实例上不工作,则可以将下一行添加到system.properties文件(位于JMeter安装的“bin”文件夹)

然后比较两个实例的输出,它将为您提供有关错误原因的线索

盲击:尝试显式设置JMeter和Spring引导应用程序的TLS协议版本

  • JMeter:将下一行添加到user.properties文件:

  • 您的应用程序:添加下一个JVM参数:

    -Djdk.tls.client.protocols=TLSv1.3
    -Dhttps.protocols=TLSv1.3
    
  • 参考资料:


    看起来您的应用程序试图与AWS服务建立太多连接或重新连接太快。因此,您可能必须使用AWS服务重新设计应用程序逻辑。但我们已将AWS客户端配置中的最大连接数增加到1000。因此,500个线程可以轻松地与AWS服务建立连接。什么您正在访问AWS服务吗?是否该服务对连接有一些限制?我们正在访问QLDB服务。我没有看到任何提到连接限制的文档。原始帖子说,只有一些连接失败,并且当更多资源可以专用时,失败的比例会降低。如果这是一个配置pro问题,则所有连接都将成功或失败。这可能是由于某种节流或连接限制。
    https.default.protocol=TLS
    https.socket.protocols=TLSv1
    
    -Djdk.tls.client.protocols=TLSv1.3
    -Dhttps.protocols=TLSv1.3