今天压力测试时, 刚开始出现了很多异常, 都是 java.net.NoRouteToHostException: Cannot assign requested address.
经网上查资料, 是由于linux分配的客户端连接端口用尽, 无法建立socket连接所致,虽然socket正常关闭,但是端口不是立即释放, 而是处于TIME_WAIT状态, 默认等待60s后才释放。
查看linux支持的客户端连接端口范围, 也就是28232个端口:
cat /proc/sys/net/ipv4/ip_local_port_range
32768 - 61000
解决方法:
1. 调低端口释放后的等待时间, 默认为60s, 修改为15~30s
echo 30 > /proc/sys/net/ipv4/tcp_fin_timeout
2. 修改tcp/ip协议配置, 通过配置/proc/sys/net/ipv4/tcp_tw_resue, 默认为0, 修改为1, 释放TIME_WAIT端口给新连接使用。
echo 1 > /proc/sys/net/ipv4/tcp_tw_reuse
3. 修改tcp/ip协议配置,快速回收socket资源, 默认为0, 修改为1.
echo 1 > /proc/sys/net/ipv4/tcp_tw_recycle
通过上面3项调整, 压力测试运行正常。
分享到:
相关推荐
在应用程序中调用不同服务时,经常会遇到No route to host程序异常的问题。下文分享该问题的排查过程与解决方法。
java.net.NoRouteToHostException: No route to host 是 Hadoop 中的常见问题,主要是由于网络连接问题。解决方法是停止 iptables 服务,例如使用 `sudo /etc/init.d/iptables stop` 命令。 更改 namenode 后,在 ...
格式化namenode时 报错 No Route to Host from node1/192.168.3.101 to hadoop05:8485 failed on socket timeout exception: java.net.NoRouteToHostException: No route to host解决方案 一、报错信息概要: 在配置...
- **错误现象1:java.net.NoRouteToHostException: No route to host** - 原因:此错误通常由于防火墙阻止了通信导致。 - 解决方法:关闭Master服务器上的防火墙,例如在Linux环境下使用`chkconfig iptables off`...
启用DNSSEC需要配置`java.net.useSystemProxies`和`java.net.preferIPv4Stack`系统属性。 4. **自定义DNS解析**: - 对于复杂的应用场景,Java允许通过实现`java.net.DnsResolver`接口创建自定义的DNS解析逻辑。这...
在Java中,网络编程涉及到几个关键的类,它们位于`java.net`包下。对于IP层,`InetAddress`类用于标识网络上的硬件资源,可以通过IP地址或主机名创建。对于应用层,`URL`类是统一资源定位符,它能够定位互联网上的...
Java提供了一套强大的API,位于`java.net`包及其子包中,用于处理网络通信的各种需求。本章节将深入探讨Java网络编程的基础知识,包括TCP和UDP协议、IP地址、端口号以及套接字的概念。 首先,Java中的网络API支持IP...
如`ConnectException`表示连接失败,`SocketException`通常与网络连接有关,`MalformedURLException`则是在解析URL时格式错误,`UnknownHostException`是无法解析主机名,`NoRouteToHostException`表示无法找到到...