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

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

我读了这些问题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配置的屏幕截图

在此处输入图像描述

在此处输入图像描述

在此处输入图像描述

在此处输入图像描述

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

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

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

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

我希望你现在明白了:)

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