TCP连接的几个问题的处理

问题一:

accept4: too many open files; retrying in 640ms

或者

dial tcp 127.0.0.1:8080: socket: too many open files

都是socket的数量,即文件描述符的数量不够用了,解决方法,增加文件描述符的数量

ulimit -n 204800

其中204800可以适当增加,不超过系统上限就行。

问题二:

dial tcp 127.0.0.1:8080: connect: cannot assign requested address

这个是端口不够用了,一般计算机的端口最多是65535个

查询的方法:

sysctl -a |grep port_range

解决的方法是:

vi /etc/sysctl.conf
net.ipv4.ip_local_port_range = 10000     65000
sysctl -p

更直接的方法:

多配几个ip

ifconfig eth0:1 xxx
ifconfig eth0:2 xxx

出现问题的原因:

netstat -ano

可见大量的state是time_wait的连接,释放这些连接可以避免问题。

方法是:

sysctl -w net.ipv4.tcp_fin_timeout=30 调低端口释放后的等待时间,默认为60s,修改为15~30s
sysctl -w net.ipv4.tcp_timestamps=1  开启对于TCP时间戳的支持,若该项设置为0,则下面一项设置不起作用
sysctl -w net.ipv4.tcp_tw_recycle=1  表示开启TCP连接中TIME-WAIT sockets的快速回收

总之,只要程序写的还行的话,受限的资源无外乎socket的文件数量或者端口数量,把数量改大了或者及时释放了,是解决问题的主要思路。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值