11

我为一家科技公司工作。我正在尝试在现场对我们的一个应用程序实例进行故障排除,并且需要监视 TCP 套接字缓冲区的完整性。

我知道如果我可以访问源代码,我可以使用 ioctl 和 SIOCOUTQ 在任何时间点查询套接字缓冲区的完整性。

但我没有。

所以我的问题是,有没有办法从应用程序外部查看套接字缓冲区的完整性?

谷歌将我带到 /proc/net/tcp,但我不能 100% 确定 tx_queue 列是我正在寻找的。是吗?

如果是这样,它是否足够“实时”,我可以编写一个 perl 脚本来不断地轮询它以获得套接字缓冲区利用率的视图?

4

1 回答 1

5

Proc 与实时一样好,是的,当您在 /proc 下获取文件的内容时,它实际上是在内核中构建输出,而不是从文件或类似的东西中读取

正如乔恩所说,将无法读取缓冲区内容,但是如果您只想知道您是否接近队列限制,那么 tx_queue 是正确的查看位置。(或者可能是 rx_queue 当然取决于延迟发生的位置)

现在我不知道你在看什么应用程序,或者它做了什么,但是在 bufferbloat 的标题下有一些有趣的读物,关于如何实际上可能更好地减少你的队列长度并让 tcp 更快地处理速率变化,这可能是一个更好的解决方案,而不是监控队列(并重新启动应用程序或?)

于 2012-08-21T03:52:50.523 回答