是否有更快的接口来获取 /proc/net/tcp 中的信息?

是否有更快的接口来获取 /proc/net/tcp 中的信息?

给定一个 linux TCP 套接字的索引节点(通过 获得/proc/<pid>/fd),是否有一种更快的方法来查找我可以/proc/net/tcp从此套接字获取的信息?

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

我可以通过缓存来管理这个问题,但这必然会引入延迟,并使我想知道“API”的荒谬性,它需要读取和解析 2MB 的 ASCII 文本才能在套接字上查找信息。

答案1

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

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

答案2

网联。查看集合ss中的命令iproute2

这里是代码库iproute2ss进行了描述这里

相关内容