天天看點

Orphan socket的産生

1. Orphan socket

不屬于任何程序的socket叫orphan socket。這裡順便一下讨論orphan socket,因為很多網絡資源不足導緻的錯誤都和“孤兒socket”有關。

1.1 Orphan socket是怎麼産生的呢?

網上沒有明确的說明,我們做一個線上調查:

Shell代碼 

[maoyidao@03701 ~]# netstat -nap | awk '/^tcp/  {++S[$NF]} END {for(a in S) print a, S[a]}' 

2976/sshd 1 

11065/gearman 1 

- 2166 

32726/java 31455 

25554/scribed 4 

[maoyidao@03701 ~]# netstat -nap | awk '/^tcp/ {if($NF == "-") {++S[$6]}}  END {for(a in S) print a, S[a]}' 

TIME_WAIT 451 

FIN_WAIT1 655 

ESTABLISHED 118 

FIN_WAIT2 102 

SYN_RECV 249 

CLOSING 2 

LAST_ACK 619 

可以看到任何一個TCP stat情況下都有可能産生“orphan socket”,但多數是在建立過程當中,以及斷開連接配接中的socket。

可以通過以下參數減少orphan socket的産生。

sysctl -a | grep orphan

net.ipv4.tcp_orphan_retries = 0

net.ipv4.tcp_max_orphans = 65536

原文

http://maoyidao.iteye.com/blog/1744309