/proc/net/tcp 是否有更快的信息接口?

ntn*_*tnt 8 networking api tcp proc

给定一个 linux TCP 套接字的 inode(通过 获得/proc/<pid>/fd),有没有更快的方法来查找我可以从/proc/net/tcp这个套接字中获得的信息?

我编写了一个故障排除工具,它监视进程并打印有关 IO 操作的实时信息(strace-type 信息收集到更高级别的抽象中并以不那么原始的方式呈现),但是在负载很重的网络服务器上,我发现它需要时间查找套接字信息(例如外部地址/端口)是令人望而却步的,因为它的大小非常大/proc/net/tcp(我目前正在查看的服务器上大约有 2MB)。

我可以通过缓存来管理这个,但这必然会引入延迟,让我怀疑“API”的荒谬性,它需要读取和解析 2MB 的 ASCII 文本才能找到有关套接字的信息。

Omn*_*ous 3

这是libnetfilter_conntrack的链接。您必须使用支持直接从库调用 C 函数的语言重新编写程序。但我认为这个库将拥有您所需的钩子,可以比解析该文本文件更快地获取您想要的数据。

这就是iptstate程序用来完成其任务的内容。