Linux客戶端連接報錯:Cannot assign requested address


前言

在項目中寫了一個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

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

 

博主:測試生財(一個不為996而996的測開碼農)

座右銘:專注測試開發與自動化運維,努力讀書思考寫作,為內卷的人生奠定財務自由。

內容范疇:技術提升,職場雜談,事業發展,閱讀寫作,投資理財,健康人生。

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

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

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

微信公眾號:測試生財(定期分享獨家內容和資源)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM