问题描述

APP推送使得短时间内大量用户集中访问mysql程序报错

Cannot assign requested address


原因分析

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


解决方法

1、调低端口释放后的等待时间默认为60s

# vim /etc/sysctl.conf
net.ipv4.tcp_fin_timeout = 30


2、调整下port_range的范围增加可用端口数量

port_range 默认为 32768    61000   即28232可用端口

因为本地服务端口都在20000以下所以将最小值设为20000最大值增加到65000

# vim /etc/sysctl.conf
net.ipv4.ip_local_port_range = 20000 65000


3、使配置生效

# sysctl -p


完成之后几天观察没有再发现Cannot assign requested address错误