首页 > Linux系统管理 > Cannot assign requested address
2016
05-13

Cannot assign requested address

nginx lua 模块链接redis的时候 出现了 Cannot assign requested address错误

连ping网络都有 ping: sendmsg: Operation not permitted 这样的丢包

直接在bid 机器上面telnet redis 6379 都报Cannot assign requested address错误

# netstat -n | awk ‘/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}’
TIME_WAIT 53985
CLOSE_WAIT 889
FIN_WAIT1 1
SYN_SENT 374
ESTABLISHED 807
SYN_RECV 89
LAST_ACK 1

CLOSE_WAIT 数量特别多。由于客户端频繁的连服务器,由于每次连接都在很短的时间内结束,导致很多的TIME_WAIT,以至于用光了可用的端 口号,所以新的连接没办法绑定端口,即“Cannot assign requested address”。

执行命令修改如下2个内核参数 (需要root权限)
sysctl -w net.ipv4.tcp_timestamps=1  开启对于TCP时间戳的支持,若该项设置为0,则下面一项设置不起作用
sysctl -w net.ipv4.tcp_tw_recycle=1  表示开启TCP连接中TIME-WAIT sockets的快速回收

实际上我开了也没啥效果,还是把nginx关了 等端口都回收后再开启后恢复正常了

最后编辑:
作者:saunix
大型互联网公司linux系统运维攻城狮,专门担当消防员

留下一个回复