为什么在启动Jmeter负载测试几分钟后,SpringBoot网站会拒绝客户端连接?

时间:2019-01-02 02:23:42

标签: spring spring-boot jmeter

这是一个SpringBoot网站,部署在一个Linux服务器中。我们使用Jmeter进行负载测试。

我们模拟了500个用户同时访问webiste索引页面。索引页是非常简单的html,没有数据库连接,因此连接很短。

大约2分钟后,Jmeter开始引发超时异常,成为异常

enter image description here

我想这是因为网站已达到其容量并且无法连接。

我在这里得到一个问题,为什么网站在Jemter启动2分钟后达到其功能。如果该网站的TCP连接容量为1000,那么我猜它会在Jmeter启动后不久(而不是2分钟)达到1000。

此外,我发现Linux服务器中许多TCP连接处于TIME_WAIT状态。我想这可能与连接超时有关?

编辑:有人认为它正在运行端口。有人认为连接已耗尽。有人认为它用完了处理线程(例如What does this messge java.net.ConnectException/Connection timed out mean in log.jtl file of Jmeter?)。我不知道是哪个原因...

1 个答案:

答案 0 :(得分:2)

根据TCP/IP文章,很可能这是由于底层Linux Linux TCP/IP tuning for scalability内核堆栈配置造成的:

  

默认情况下,连接应该在TIME_WAIT状态中保持两次msl。其目的是确保关闭连接后到达的所有丢失的数据包都不会混淆TCP子系统(有关其全部详细信息,不在本文的讨论范围之内,但请问我是否需要详细信息)。默认的msl是60秒,它将默认的TIME_WAIT超时值设置为2分钟。这意味着,如果您每秒收到的请求超过400个左右,或者如果我们回顾一下nginx代理的方式,那么实际上您的端口将用光,这实际上意味着每秒200个请求。不适合扩展。

SO双重检查超时以及Linux服务器上的最大端口/套接字/文件数量-我的期望是,上述参数需要针对高负载进行调整。

适当地监视基线OS运行状况指标(CPU,RAM,网络,磁盘,交换使用等)也是一个好习惯。您可以为此使用JMeter PerfMon PluginJMeter SSHMon Listener