为什么我收到响应代码:非HTTP响应代码:java.net.SocketException?

时间:2015-06-10 00:58:23

标签: java performance spring-mvc jmeter performance-testing

我正在尝试使用JMeter将请求发送到我在 localhost 上运行的应用程序,但由于 java.net.SocketException ,许多请求都失败了。我在控制台中没有看到任何例外。

我阅读了这些question1question2,但没有多大帮助。

我的代码如下:

val allowedValues = Set("name", "age", "job")
val parsedJson: JsValue = ....

parsedJson match {
  case jsonObject: JsObject =>
    val underlyingObjectValues = jsonObject.underlying
    val keysNotInAllowedSet = underlyingObjectValues.keys.diff(allowedValues)
    // Add keysNotInAllowedSet to the error list
  case _ => // Possible parse JsArray, etc.
}

存储库

 try {
        return myService.findItems(group);

    } catch (NullPointerException n) {
        n.printStackTrace();
    } catch (HibernateException h) {
        h.printStackTrace();
    } catch (IOException i) {
        i.printStackTrace();
    }
    return null;

我的JMeter配置的屏幕截图

enter image description here

enter image description here

enter image description here

enter image description here

2 个答案:

答案 0 :(得分:12)

从您提供的屏幕截图中,我认为您认为您的系统/本地主机是超级计算机,或者您错误配置了jmeter设置。

屏幕截图显示,10000个用户/线程将在1秒内启动,这对于在localhost上运行的应用程序来说是完全不真实的。仅Jmeter就会占用大部分CPU,内存即系统资源。

如果您的Jmeter正在吃掉所有资源,您的应用程序将获得任何内容(简单答案为否)因此应用程序将关闭,您将开始获得超时错误或套接字异常。

如果你在diff机器上有jmeter和应用程序,那么1秒内仍然有10000个用户对于正常应用来说是非常高的负载,很明显你将面临这样的错误。尝试使用给定hw为您的应用程序预期的实际负载运行测试。也许100个用户在1秒内逐渐增加到预期值。

我希望你现在明白了:)

答案 1 :(得分:0)

SocketException意味着网络问题。检查你是否正在运行服务器状态。