【问题标题】:Can I monitor Linux socket buffer fullness?我可以监控 Linux 套接字缓冲区的完整性吗?
【发布时间】:2012-08-16 09:36:39
【问题描述】:

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

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

但我没有。

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

Google 将我带到 /proc/net/tcp,但我不能 100% 确定 tx_queue 列就是我要查找的内容。是吗?

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

【问题讨论】:

  • 我认为很多人付出了很多努力来确保您无法从应用程序外部读取应用程序的缓冲区。

标签: linux sockets tcp


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 2014-01-31
    • 2010-10-03
    • 1970-01-01
    • 1970-01-01
    • 2014-08-19
    • 1970-01-01
    • 2016-04-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多