TCP/UDP的埠Dynamic Port Range問題

BTxigua發表於2011-11-26
TCP/UDP的埠採用16bit儲存,所以埠範圍為0~65535.埠被分為3類使用:
Well Known ports: 0 ~ 1023
Registered Ports: 1024 ~ 49151
Dynamic and/or Private Ports: 49152 ~ 65535
作為客戶端連線,我們使用的Dynamic port,埠總數為 16384個。
碰到過2次埠被佔用光的情況:
一次是Oracle RAC連線無法擴充套件,原因為HP NUMA架構下UDP開銷很大,導致當達到1500個連線左右的時候,用於CACHE FUSION的UDP埠被消耗光,導致session無法建立。
還有一次是因為網路問題,出現16000多個的FIN_WAIT_2狀態的FTP連線不釋放,導致TCP埠被佔光,Socket連線無法建立,程式無法fork。
 
在不同的平臺下,對於Dynamic Port Range的預設值也是不同的。
################
AIX
預設的埠範圍
/usr/sbin/no -a | fgrep ephemeral
tcp_ephemeral_low = 32768
tcp_ephemeral_high = 65535
udp_ephemeral_low = 32768
udp_ephemeral_high = 65535
可以通過下面的命令來調整:
/usr/sbin/no -o tcp_ephemeral_low=49152 -o tcp_ephemeral_high=65535
這個命令在重啟後失效,固化的方法是將命令新增到/etc/rc.tcpip
 
################
HP-UX
預設的埠範圍
#ndd /dev/tcp tcp_smallest_anon_port
49152
#ndd /dev/tcp tcp_largest_anon_port
65535
#ndd /dev/udp udp_smallest_anon_port
49152
#ndd /dev/udp udp_largest_anon_port
65535
/usr/bin/ndd -set /dev/tcp tcp_smallest_anon_port 50001
這個命令在重啟後失效,固化的方法是將配置新增到/etc/rc.config.d/nddconf
類似如下:
/etc/rc.config.d/nddconf:
TRANSPORT_NAME[0]=tcp
NDD_NAME[0]=tcp_largest_anon_port
NDD_VALUE[0]=65535
TRANSPORT_NAME[1]=tcp
NDD_NAME[1]=tcp_smallest_anon_port
NDD_VALUE[1]=49152
 
################
Linux
預設的埠範圍:
#cat /proc/sys/net/ipv4/ip_local_port_range
32768   61000
設定方法,在/etc/sysctl.conf中新增
net.ipv4.ip_local_port_range = 9000 65500
 
 
################
Solaris
預設埠範圍:
/usr/sbin/ndd /dev/tcp tcp_smallest_anon_port
32768
/usr/sbin/ndd /dev/tcp tcp_largest_anon_port
65535
/usr/sbin/ndd /dev/udp udp_smallest_anon_port
32768
/usr/sbin/ndd /dev/udp udp_largest_anon_port
65535

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10867315/viewspace-712162/,如需轉載,請註明出處,否則將追究法律責任。

相關文章