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