解决Cannot assign requested address报错

网络问题Cannot assign requested address的解决方法:

出现这个问题的原因是说无法分配请求地址,使用netstat -anlp 看到大量time wait的进程,确认问题是由于频繁建立socket连接耗尽端口号导致,解决方法当然是修改内核配置加快回收time wait端口号,或者是配置可以重复利用time wait状态的端口,采用第二种方法,对应的内核参数在/proc/sys/net/ipv4/tcp_tw_reuse,凡是对应/proc文件的参数修改都有如下几种方法

1
2
3
4
5
6
7
#方法1
echo 1 > /proc/sys/net/ipv4/tcp_tw_reuse #立即生效,但是重启失效
#方法2
vim /etc/sysctl.conf #增加一行net.ipv4.tcp_tw_reuse = 1
sysctl -p
#方法3
sysctl -w 'net.ipv4.tcp_tw_reuse = 1'

另外在使用过程中还发现了ip_local_port_range这个限制了在于远端建立连接时使用的本地端口号的范围(32768 61000)防止与本地listen 端口发生冲突 :)