文档章节

nginx Cannot assign requested address TIME_WAIT解决

千惊万喜
 千惊万喜
发布于 2016/12/09 14:01
字数 439
阅读 119
收藏 0

netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}' 查看端口状态

“Cannot assign requested address.”是由于linux分配的客户端连接端口用尽,无法建立socket连接所致,虽然socket正常关闭,但是端口不是立即释放,而是处于TIME_WAIT状态,默认等待60s后才释放。

解决方法1 调低time_wait状态端口等待时间:

  1. 调低端口释放后的等待时间,默认为60s,修改为15~30s sysctl -w net.ipv4.tcp_fin_timeout=30
  2. 修改tcp/ip协议配置, 通过配置/proc/sys/net/ipv4/tcp_tw_resue, 默认为0,修改为1,释放TIME_WAIT端口给新连接使用 sysctl -w net.ipv4.tcp_timestamps=1
  3. 修改tcp/ip协议配置,快速回收socket资源,默认为0,修改为1 sysctl -w net.ipv4.tcp_tw_recycle=1

可能解决办法2--增加可用端口: CCH:~ # sysctl -a |grep port_range net.ipv4.ip_local_port_range = 50000 65000 -----意味着50000~65000端口可用

修改参数: $ vi /etc/sysctl.conf net.ipv4.ip_local_port_range = 10000 65000 -----意味着10000~65000端口可用

永久解决方案(重启有效)

$ vi /etc/sysctl.conf

加入

net.ipv4.ip_local_port_range = 1024 65535

net.ipv4.tcp_timestamps=1

net.ipv4.tcp_tw_recycle=1

net.ipv4.tcp_tw_reuse=1

改完后,执行命令“sysctl -p”使参数生效,不需要reboot。

另外一种

vi /etc/sysctl.conf

net.ipv4.tcp_syncookies = 1

net.ipv4.tcp_tw_reuse=1 #让TIME_WAIT状态可以重用,这样即使TIME_WAIT占满了所有端口,也不会拒绝新的请求造成障碍 默认是0

net.ipv4.tcp_tw_recycle=1 #让TIME_WAIT尽快回收 默认0

net.ipv4.tcp_fin_timeout=30

/sbin/sysctl -p 让修改生效

##linux文件打开数限制

sysctl -w fs.file-max=10485760

msysctl -w net.ipv4.tcp_rmem=1024

sysctl -w net.ipv4.tcp_wmem=1024

sysctl -w net.ipv4.ip_local_port_range='1024 65535' #

sysctl -w net.ipv4.tcp_tw_recycle=1

sysctl -w net.ipv4.tcp_tw_reuse=1

echo '* soft nofile 1048576' >> /etc/security/limits.conf

echo '* hard nofile 1048576' >> /etc/security/limits.conf

© 著作权归作者所有

共有 人打赏支持
千惊万喜
粉丝 4
博文 56
码字总数 15471
作品 0
海淀
程序员
私信 提问
高并发下,自己写的基于httpclient发送post请求的工具类,求高手分析代码中的问题

基于httpclient4.5.1写了一个发送http请求的工具类: 目前是每秒发送2000的post请求,服务器是一个apache服务器, 出现的问题有如下: 1.可能存在内存溢出,可能是httpclient没有关闭导致的,...

ahdkk
2016/09/29
3.1K
4
Can’t connect to MySQL server有关linux tcp连接优化

最近有2台web机器链接mysql有时会出现Can’t connect to MySQL server的情况,查看exception日志: 如下: [message:protected] => SQLSTATE[HY000] [2003] Can’t connect to MySQL server......

SANSOM
2013/07/30
0
0
Cannot assign requested address

线上服务器A上发送请求到另一台服务器B,服务器B接受请求的条件是服务器A的出口ip必须为内网ip。使用的CloseableHttpAsyncClient,在requestConfig中增加了setLocalAddress来绑定本地内网ip,...

t0m
09/05
44
0
ossutil报"Cannot assign requested address"解决方案

问题 某用户使用如下命令上传目录到OSS,中间隐去bucket name。 出现如下错误。 分析 原因 由于Linux分配的客户端连接端口用尽,无法建立socket连接所致,虽然socket正常关闭,但是端口不是立...

zuozhao
06/15
0
0
nginx 报错 99: Cannot assign requested address

nginx 报错 99: Cannot assign requested address net.ipv4.iplocalport_range = 10240 65535 >> /etc/sysctl.conf awk '{print $1}' log/test-access.log | sort | uniq -c | sort -nr | he......

wennan
2014/07/06
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Netty handle方法周期 (四)

写了一个练习之后,发现自定义的助手类每次肯定是必须的,对于不同的业务逻辑需求,会写相对应的逻辑 最简单的查看Handle生命周期的方式,就是重写上级方法,看名字差不多应该可以知道方法的作用 ...

_大侠__
9分钟前
0
0
vue主动刷新页面及列表数据删除后的刷新实例

1.场景 在处理列表时,常常有删除一条数据或者新增数据之后需要重新刷新当前页面的需求。 2.遇到的问题 1. 用vue-router重新路由到当前页面,页面是不进行刷新的 2.采用window.reload(),或者...

前端小攻略
19分钟前
1
0
闲话高并发的那些神话,看京东架构师如何把它拉下神坛

高并发也算是这几年的热门词汇了,尤其在互联网圈,开口不聊个高并发问题,都不好意思出门。高并发有那么邪乎吗?动不动就千万并发、亿级流量,听上去的确挺吓人。但仔细想想,这么大的并发与...

James-
24分钟前
3
0
Emacs 系列:让我们拥抱 Emacs 和 org 模式

导读 我必须承认,在使用了几十年的 vim 后, 我被 Emacs 吸引了。长期以来,我一直对如何组织安排事情感到沮丧。我也有用过 GTD 和 ZTD 之类的方法,但是像邮件或是大型文件这样的事务真的很...

问题终结者
25分钟前
3
0
解析Node.js通过axios实现网络请求

本次给大家分享一篇node.js通过axios实现网络请求的方法,写的十分的全面细致,具有一定的参考价值,对此有需要的朋友可以参考学习下。如有不足之处,欢迎批评指正。 1、使用Npm 下载axios n...

前端攻城老湿
38分钟前
7
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部