【问题标题】:How to measure TCP back pressure?如何测量 TCP 背压?
【发布时间】:2016-07-19 16:44:46
【问题描述】:

我正在尝试调查通过 TCP 套接字将数据发布到服务器的代码的性能问题。一种假设是发布者在套接字级别遇到背压。有没有办法从操作系统获取背压指标?

我确信答案是特定于操作系统的。就我而言,我使用的是 Linux。

【问题讨论】:

    标签: linux performance sockets


    【解决方案1】:

    用tcpdump查看窗口大小:https://en.wikipedia.org/wiki/TCP_tuning#Window_size

    如果另一端跟不上流量,它应该会下降。

    【讨论】:

      【解决方案2】:

      正如@karol-nowak 所说,您可以使用tcpdump 来检查每个 TCP 数据包 (here the structure of a TCP packet) 上发送的 window 字段。

      我分享一个服务器开始处理速度变慢的例子:

      上下文:服务器在端口 8080 上运行。它将文件从客户端流式传输到外部服务器。代理和外部服务器之间的路径很慢,因为受到 Internet 连接的限制。客户端和代理之间的路径很快,并且受到代理能够处理的速度的限制。需要注意的是,代理只是通过流处理将传入的请求转发给外部服务器的传出请求,而不会将传入文件的所有内容都分配到堆上。

      检查客户端和代理之间的路径(更快的路径):

      sudo tcpdump -i any -nn "src port 8080"
      

      地点:

      • -i any -> 任何网络接口
      • -nn -> 不要将地址转换为名称
      • "src port 8080" -> 仅选择来自端口 8080(代理正在侦听)的数据包

      上述tcpdump的部分输出:

      在win 列中,您可以看到代理如何开始用尽空间来缓冲客户端数据包,在本例中是从端口63447 发送的,从而减慢了从客户端发送数据包的速度(值得注意的是14:10:46 和 14:10:51)

      【讨论】:

        猜你喜欢
        • 2016-02-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-10-02
        • 2015-06-30
        • 1970-01-01
        • 1970-01-01
        • 2015-07-04
        相关资源
        最近更新 更多