【问题标题】:Why am I receiving Response code: Non HTTP response code: java.net.SocketException?为什么我收到响应代码:非 HTTP 响应代码:java.net.SocketException?
【发布时间】:2015-08-25 01:21:33
【问题描述】:

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

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

我的代码如下:

 try {
        return myService.findItems(group);

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

存储库

  public LinkedHashMap findItems(String group) throws NullPointerException, HibernateException, IOException {
        Session session = sessionFactory.getCurrentSession();
                 ..... //request is sent to database

        return items;
    }

我的 JMeter 配置的屏幕截图

【问题讨论】:

  • 您要连接的服务似乎不是 HTTP 服务器,或者您以某种方式发送了格式错误的请求。

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


【解决方案1】:

SocketException 表示网络问题。检查您正在运行的服务器状态。

【讨论】:

  • 我在 localhost 上运行应用程序,请澄清“检查您正在运行的服务器状态”是什么意思
  • 我在mac上还有其他选择吗?你确定代码没有问题吗?
  • 不,不是您的代码的问题。我不知道mac,可能是谷歌它来检查你的本地主机监听端口并检查。
【解决方案2】:

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

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

如果您的 Jmeter 正在吃掉所有资源,您的应用程序将得到任何东西(简单的答案是否定的)因此应用程序将停止运行,您将开始收到超时错误或套接字异常。

如果你在 diff 机器上有 jmeter 和应用程序,那么 1 秒内仍然有 10000 个用户对于普通应用程序来说是非常高的负载,很明显你会遇到这样的错误。尝试使用给定硬件的应用程序预期的实际负载运行测试。可能 1 秒内有 100 个用户,并逐渐将其增加到预期值。

希望你现在明白了:)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-01-27
    • 2020-11-12
    • 2014-10-29
    • 2017-12-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多