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

4
我正在尝试使用JMeter向运行在本地主机上的应用程序发送请求,但由于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;

仓库

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

        return items;
    }

我的 JMeter 配置的屏幕截图

enter image description here

enter image description here

enter image description here

enter image description here


您正在连接的服务似乎不是一个HTTP服务器,或者您发送了一个格式错误的请求。 - user207421
2个回答

14

从您提供的截图来看,我认为您可能将您的系统/本地主机视为超级计算机或者您已经配置错误了jmeter设置。

截图显示,10000个用户/线程将在1秒内启动,这对于在本地主机上运行的应用程序来说是完全不真实的。Jmeter单独会占用大量CPU、内存等系统资源。

如果您的Jmeter正在占用所有资源,那么您的应用程序将得不到任何东西(简单的答案是否定的)。因此应用程序将崩溃,并且您将开始收到超时错误或套接字异常。

即使您的jmeter和应用程序在不同的机器上,10000个用户在1秒钟内仍然是普通应用程序的非常高的负载,很明显您将面临这样的错误。尝试使用给定硬件预期的应用程序实际负载运行测试。也许最初以每秒100个用户开始逐渐增加到预期值。

希望您现在理解了 :)


0

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


我正在本地运行应用程序,请澄清您所说的“检查运行服务器状态”的含义。 - Jack
我在使用Mac,有没有其他的选择?你确定代码没有任何问题吗? - Jack
不,这不是你代码的问题。我不熟悉 Mac,也许你可以谷歌一下如何检查本地主机的监听端口并进行检查。 - Jiang YD

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接