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

Jac*_*ack 4 java performance spring-mvc jmeter performance-testing

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

我读了这些问题1问题2,但没有多大帮助.

我的代码如下:

 try {
        return myService.findItems(group);

    } catch (NullPointerException n) {
        n.printStackTrace();
    } catch (HibernateException h) {
        h.printStackTrace();
    } catch (IOException i) {
        i.printStackTrace();
    }
    return null;
Run Code Online (Sandbox Code Playgroud)

知识库

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

        return items;
    }
Run Code Online (Sandbox Code Playgroud)

我的JMeter配置的屏幕截图

在此输入图像描述

在此输入图像描述

在此输入图像描述

在此输入图像描述

Nac*_*ate 12

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

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

如果你的Jmeter吃了所有资源,你的应用程序将得到任何东西(简单的答案是否)因此应用程序将关闭,你将开始获得超时错误或套接字异常.

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

我希望你现在明白了:)