我可以监控Linux套接字缓冲区的满度吗?

11
我在一家科技公司担任支持工作。我正在尝试解决我们的一个应用程序在外部运行时出现的问题,并需要监视TCP套接字缓冲区的满度。
我知道如果有源代码,我可以使用ioctl和SIOCOUTQ在任何时间点查询套接字缓冲区的满度。
但是我没有源代码。
那么我的问题是,是否有一种方法可以从应用程序外部查看套接字缓冲区的满度?
谷歌搜索引擎将我引到了/proc/net/tcp,但我不确定tx_queue列是否是我要寻找的内容。它是吗?
如果是,它是否足够“实时”,以便我编写Perl脚本来不断轮询它以获取套接字缓冲区利用率的视图?

3
我认为很多人都付出了很多努力,以确保从应用程序外部无法读取应用程序的缓冲区。 - Jon Lin
1个回答

5

当你在/proc目录下获取文件内容时,实际上它是在内核中构建输出,而不是从文件中读取等操作,因此Proc和实时性一样好。

正如Jon所说的那样,无法读取缓冲区内容,但是如果你只想知道是否接近了队列限制,那么tx_queue就是正确的地方。(或者当然也可能是rx_queue,这取决于延迟出现的位置)

现在我不知道你正在查看什么应用程序或它的功能,但是在关于bufferbloat的标题下有一些有趣的阅读材料。它可能更好地减少队列长度,让TCP更负责任地处理速率变化,这可能比监视队列(以及重新启动应用程序或?)更好。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接