“Cannot assign requested address.”是因为Linux分配的客户端链接端口用尽,没法创建socket链接所致,虽然socket正常关闭,可是端口不是当即释放,而是处于TIME_WAIT状态,默认等待60s后才释放。linux
解决办法:nginx
vi /etc/sysctl.conf net.ipv4.tcp_timestamps=1 net.ipv4.tcp_tw_recycle=1 sysctl -p
还有种问题致使 Cannot assign requested address,本地可分配端口数比较少bash
cat /proc/sys/net/ipv4/ip_local_port_range 查询可用端口区间服务器
默认是:32768 61000,说明这台机器本地能向外链接61000-32768=28232个链接,注意是本地向外链接,不是这台机器的全部链接,不会影响这台机器的 80端口的对外链接数。但这个数字会影响到代理服务器(nginx)对app服务器的最大链接数,由于nginx对app是用的异步传输,因此这个环节的 链接速度很快,因此堆积的链接就不多。app
解决办法异步
vi /etc/sysctl.conf net.ipv4.ip_local_port_range = 1024 65535 sysctl -p