前言

在项目中写了一个MQTT的客户端小程序,用于测试MQTTServer的毗邻数上限,运行了一段时间后报错:Cannot assign requested address

网上查了下"Cannot assign requested address"指的是linux系统无法继续为客户端分配端口了(已用尽),以是无法举行监理socket毗邻。

定位问题

1. 查看当前linux系统的可分配端口

cat /proc/sys/net/ipv4/ip_local_port_range

当前系统的端口数局限为20000~65534, 以是能分配的端口数为25535。若是我的毗邻数达到了25535个,就会报如上错误。

那么该若何调整这个端口局限呢?

解决方法

1. 修改端口局限

执行:vim /etc/sysctl.conf,添加如下内容

#1000到65534可供用户程序使用,1000以下为系统保留端口
net.ipv4.ip_local_port_range = 1000 65534

执行:sysctl -p

再次查看端口局限:cat /proc/sys/net/ipv4/ip_local_port_range


2. 设置tcp端口的重用设置,提高端口的接纳效率

执行:vim /etc/sysctl.conf添加如下内容:

#TCP connection recovery

net.ipv4.tcp_max_tw_buckets = 6000000

,

以太坊数据网

www.326681.com采用以太坊区块链高度哈希值作为统计数据,联博以太坊统计数据开源、公平、无任何作弊可能性。联博统计免费提供API接口,支持多语言接入。

,

net.ipv4.tcp_tw_reuse = 1

net.ipv4.tcp_tw_recycle = 1

net.ipv4.tcp_fin_timeout = 10

net.ipv4.route.max_size = 5242880

net.ipv4.ip_forward = 1

net.ipv4.tcp_timestamps = 1


博主:测试生财

座右铭:专注测试与自动化,致力提高研发效能;通过测试精进完成原始积累,通过念书理财奔向财政自由。

csdn:https://blog.csdn.net/ccgshigao

博客园:https://www.cnblogs.com/qa-freeroad/

51cto:https://blog.51cto.com/14900374