我创建了一个具有HelloController的简单Spring Boot应用程序。
Get API: http://localhost:8080/hello Response: Hello World
现在,我已经创建了一个JMeter脚本,该脚本具有10万个并发用户,并点击了上述get API。当我运行JMeter脚本时,计数30k后,我开始收到错误消息:
java.net.NoRouteToHostException: Cannot assign requested address (Address not available)
这是什么原因呢?我该如何解决这个问题?
您可以按照Lakshmi Narayan的答案来增加可用端口:
解析度: 使用以下命令增加本地端口范围: 回声1024 65000> / proc / sys / net / ipv4 / ip_local_port_range 这允许更多本地端口可用。 启用快速回收TIME_WAIT套接字,如下所示: $ sudo sysctl -w net.ipv4.tcp_tw_recycle = 1 默认, 猫/ proc / sys / net / ipv4 / tcp_tw_recycle 输出:0(默认情况下禁用) 如果在生产环境中启用,请务必谨慎,因为这是我们的内部环境,并且仅用于Jmeter负载测试的机器,因此我们启用了回收并解决了该问题。 启用套接字的重用,如下所示: $ sudo sysctl -w net.ipv4.tcp_tw_reuse = 1 默认, 猫/ proc / sys / net / ipv4 / tcp_tw_reuse 输出:0(默认情况下禁用) 注意:tcp_tw_reuse设置在打开许多短连接并使它们保持为TIME_WAIT状态的环境(例如Web服务器)中特别有用。重用套接字对于减少服务器负载非常有效。 在启用快速回收和重用之后,服务器可以通过单个Unix盒支持5K用户负载。
解析度:
回声1024 65000> / proc / sys / net / ipv4 / ip_local_port_range
这允许更多本地端口可用。
$ sudo sysctl -w net.ipv4.tcp_tw_recycle = 1
默认,
猫/ proc / sys / net / ipv4 / tcp_tw_recycle
输出:0(默认情况下禁用)
如果在生产环境中启用,请务必谨慎,因为这是我们的内部环境,并且仅用于Jmeter负载测试的机器,因此我们启用了回收并解决了该问题。
$ sudo sysctl -w net.ipv4.tcp_tw_reuse = 1
猫/ proc / sys / net / ipv4 / tcp_tw_reuse
注意:tcp_tw_reuse设置在打开许多短连接并使它们保持为TIME_WAIT状态的环境(例如Web服务器)中特别有用。重用套接字对于减少服务器负载非常有效。
在启用快速回收和重用之后,服务器可以通过单个Unix盒支持5K用户负载。