这个过程的pid是1996291。
/proc/1996291/fd
中有65534个fds,大部分fds都是套接字,如下所示:
lrwx------ 1 root root 64 Dec 30 13:59 10000 -> socket:[952574733]
lrwx------ 1 root root 64 Dec 30 13:59 10001 -> socket:[952566188]
我知道括号中的数字是套接字的inode。每个套接字在/proc/net/tcp
中应该有一个相同的inode。但是,可以找到一些inode,但有些不能:
cat /proc/net/tcp | grep 952574733
如果我找到了inode,输出如下:
sl local_address rem_address st tx_queue rx_queue tr tm->when retrnsmt uid timeout inode
336: 4114C80A:271A 1914C80A:0CEA 01 00000000:00000000 02:0000BE1B 00000000 0 0 962759319 2 ffff88035a20cb00 20 4 30 10 16
这是一个真正的联系。
我使用netstat -tnp
来显示连接并获得大量TIME_WAIT
个连接。我不知道他们是否与我的问题有关系。
我使用lsof -p 1996291
,输出是这样的,很多套接字:
app 1996291 root *520u sock 0,8 0t0 953021420 protocol: TCP
app 1996291 root *521u sock 0,8 0t0 953027193 protocol: TCP
app 1996291 root *522u sock 0,8 0t0 953021422 protocol: TCP
app 1996291 root *523u sock 0,8 0t0 953038715 protocol: TCP
有三个内核选项已设置为1:
net.ipv4.tcp_tw_reuse
net.ipv4.tcp_tw_recycle
net.ipv4.tcp_syncookies
我好几天都无法解决这些问题,有谁可以帮助我?
答案 0 :(得分:0)
对于计算机上的每个套接字,都有一个文件描述符。当您有太多打开的连接时,将打开太多文件并且它将崩溃。
您可以尝试通过同时限制打开的连接数量或通过关闭返回的回复正文来正确关闭fd来防止这种情况发生。快速回收插座也可能有所帮助。
另一个hacky方法是使用以下方法提高打开文件的限制:
ulimit -n [new limit]