問(wèn)題: socket(SOCK_DRAGM): Too many open files錯(cuò)誤導(dǎo)致進(jìn)程掛掉
1. 調(diào)試:查看socket的連接數(shù)
root@OpenWrt:/tmp# cat /proc/net/sockstat
sockets: used 87
TCP: inuse 9 orphan 0 tw 0 alloc 14 mem 0
UDP: inuse 11 mem 2
UDPLITE: inuse 0
RAW: inuse 0
FRAG: inuse 0 memory 0
Ipv6:
cat /proc/net/sockstat6
2.說(shuō)明:
sockets: used:已使用的所有協(xié)議套接字總量
TCP: inuse:正在使用(正在偵聽(tīng))的TCP套接字?jǐn)?shù)量。其值≤ netstat –lnt | grep ^tcp | wc –l
TCP: orphan:無(wú)主(不屬于任何進(jìn)程)的TCP連接數(shù)(無(wú)用、待銷(xiāo)毀的TCP socket數(shù))
TCP: tw:等待關(guān)閉的TCP連接數(shù)。其值等于netstat –ant | grep TIME_WAIT | wc –l
TCP:alloc(allocated):已分配(已建立、已申請(qǐng)到sk_buff)的TCP套接字?jǐn)?shù)量。其值等于netstat –ant | grep ^tcp | wc –l
TCP:mem:套接字緩沖區(qū)使用量(單位不詳。用scp實(shí)測(cè),速度在4803.9kB/s時(shí):其值=11,netstat –ant 中相應(yīng)的22端口的Recv-Q=0,Send-Q≈400)
UDP:inuse:正在使用的UDP套接字?jǐn)?shù)量
RAW:
FRAG:使用的IP段數(shù)量
3. 導(dǎo)致原因:
socket創(chuàng)建后,后續(xù)程序執(zhí)行出錯(cuò),退出函數(shù)之前沒(méi)有關(guān)閉socket