从 lsof 识别设备

从 lsof 识别设备

我们有一些 Ubuntu (18.04) 服务器在 Kestrel 上运行 .NET Core 应用程序。最近这些应用程序和操作系统一直挂起,需要重新启动整个 VM。

我们发现该应用程序有太多的网络套接字文件描述符。例如 /proc/

相应地,使用 lsof 进行查询将显示 dotnet 进程泄漏的 sock 类型“协议:TCP”池不断增长。

COMMAND  PID     USER   FD      TYPE             DEVICE SIZE/OFF   NODE NAME
dotnet  6905 www-data  675u     sock                0,9      0t0  96816 protocol: TCP
dotnet  6905 www-data  676u     sock                0,9      0t0  96863 protocol: TCP
dotnet  6905 www-data  677u     sock                0,9      0t0  96910 protocol: TCP
dotnet  6905 www-data  678u     sock                0,9      0t0  96959 protocol: TCP
dotnet  6905 www-data  679u     sock                0,9      0t0  97006 protocol: TCP
dotnet  6905 www-data  680u     sock                0,9      0t0  97053 protocol: TCP
dotnet  6905 www-data  681u     sock                0,9      0t0  97101 protocol: TCP

从另一个有类似报告问题的帖子中, https://serverfault.com/questions/153983/sockets-found-by-lsof-but-not-by-netstat 我们理解这是由于.NET 应用程序中的某些代码(可能是某些库)打开了套接字而没有绑定 IP 地址或端口。

然而,在这种情况下,我们特别想知道的是,设备 0 和 9在这种情况下?我看到其他报告列出了 0.5 或 0.7,但没有人解释这些数字代表哪种类型的设备。

相关内容