日志报错信息:java.net.connectException: Cannot assign requested address (connect failed)
可能原因:客户端频繁的连服务器,由于每次连接都在很短的时间内结束,导致很多的TIME_WAIT,以至于用光了可用的端口号,所以新的连接没办法绑定端口,因此就会报出异常说无法分配请求地址。
查看连接列表命令:netstat -a|grep time_wait
查看连接数命令:netstat -ant|grep -i time_wait |wc -l
解决办法:编辑 /etc/sysctl.conf 文件,加入参数内容。
net.ipv4.ip_forward=1
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_tw_recycle = 1
编辑完成后执行命令 /sbin/sysctl -p 让参数立即生效
参数含义:
net.ipv4.ip_forward=1 表示开启对于TCP时间戳的支持,若该项设置为为0,则net.ipv4.tcp_tw_reuse设置不起作用,该值系统默认是0
net.ipv4.tcp_syncookies = 1 表示开启对于TCP时间戳的支持,若该项设置为为0,则net.ipv4.tcp_tw_reuse设置不起作用,该值系统默认是0
net.ipv4.tcp_tw_reuse = 1 表示开启重用。允许将TIME-WAIT sockets重新用于新的TCP连接,默认为0,表示关闭
net.ipv4.tcp_tw_recycle = 1 表示开启TCP连接中TIME-WAIT sockets的快速回收,默认为0,表示关闭
net.ipv4.tcp_fin_timeout = 30 修改系統默认的TIMEOUT时间,默认是60
建议:导入数据后还原参数配置