JMeter错误:java.net.SocketException:来自服务器的文件意外结束

时间:2017-06-07 12:44:27

标签: jmeter

我已阅读并尝试过以前帖子中分享的此错误的解决方案,但没有任何帮助我解决此问题。请帮助。

我正在进行HTTPS API调用。一个非常简单的调用,它通过POST方法接受2 KB JSON消息并发送一个单词确认。它在Postman工具中完美运行。在JMeter,没有。线程(用户)保持为25.它完成了一次非常好的所有25个成功响应,有时几乎没有失败响应

  

响应代码:非HTTP响应代码:java.net.SocketException

     

响应消息:非HTTP响应消息:来自服务器的文件意外结束

完全没有一致性。我也试过启用和禁用"使用keepalive"复选框。两次都给了我一次成功;少数/全部因上述错误而在另一时间失败。请帮忙。谢谢。

以下是JMeter设置:

  • HTTP标头管理器:Content-Type - application / json
  • HTTPRequest sampler:protocol - HTTPS
  • 服务器名称或IP:项目服务器名称
  • 方法:POST
  • 路径:https身份验证详细信息作为参数传递的必需路径
  • 实施:设置为JAVA(HTTPCLIENT4给了我“443无法响应”错误)

2 个答案:

答案 0 :(得分:0)

这两个错误(Java实现和Apache HTTPClient4实现)基本上都说同样的事情:服务器关闭了连接,没有提供任何响应。我认为可能有以下原因:

  • 身份验证问题。如果服务器端在处理请求之前检查身份验证(例如使用Spring),它可能会拒绝您的请求,如果认为身份验证不正确,则可能不会对任何响应感到烦恼。

  • 请求问题。通过Jmeter发送的请求的一些不太明显的属性与您在Postman中发送的不同。它可能是格式化的一些小问题,或者服务器期望的一些标题。一些此类不一致也可能导致Load Balancer(如果您使用的话)在请求发送到服务器之前拒绝请求。

  • 证书问题。由于您使用的是HTTPS,因此需要确保在JMeter端正确设置了证书。

所以我建议:

  1. 查看服务器日志,查看您的请求是否发送到服务器。如果是,您可能会看到它被拒绝的方式。如果没有,您需要追溯并查看谁拒绝了它(LB,身份验证等)
  2. 将JMeter与Postman行发送的标题和正文比较到行(例如,使用TCPDump获取它)。

答案 1 :(得分:0)

添加标题 连接保持活跃