http的性能壓測,異常:Cannot assign requested address

“Cannot assign requested address.”是由於linux分配的客戶端連接端口用盡,無法建立socket連接所致,雖然socket正常關閉,但是端口不是立即釋放,而是處於TIME_WAIT狀態,默認等待60s後才釋放。

查看linux支持的客戶端連接端口範圍, 也就是28232個端口:
cat /proc/sys/net/ipv4/ip_local_port_range
32768 - 61000


可能解決方法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端口可用

改完後,執行命令“sysctl -p”使參數生效,不需要reboot。
 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章