专栏首页皮振伟的专栏[linux][tcp]使用tcprtt排查网络延迟问题

[linux][tcp]使用tcprtt排查网络延迟问题

前言 网络后端业务,经常会遇到延迟抖动的问题。那么问题来了,如何排除出来是网络的问题呢,还是业务的逻辑问题呢,或者是其他的调度问题呢? 分析 SRTT 在TCP的连接中,有一个指标叫做SRTT(smoothed round trip time),关于SRTT的计算方法,可以参考linux/net/ipv4/tcp_probe.c,具体的计算逻辑可以参考代码,以及注释中的论文,不在这里展开(主要是作者看不懂)。 所以,能够dump出来的TCP连接的srtt,生成柱状图观察出来延迟的区间变化,我们就可以知道网络连接的srtt是否抖动。如果业务延迟发生了抖动,srtt很稳定,就可以说明大概率不是网络的问题,可能是业务的问题,或者调度的问题等等; 反之,如果srtt页发生了抖动,那么可以先检查一下网络连接。 和tcp probe的关系 tcp probe是内核提供的debug模块,也可以完成类似的功能,不过在高版本的内核上,已经移除掉了。 从原理上来看,都是基于kprobe原理,hook住tcp_rcv_established函数,来dump出来必要的数据。 但是,在使用性上没有bcc方便。需要说明的是,基于kprobe原理的工具都有overhead,在特别频繁调用到的路径上,需要谨慎使用。 tcprtt使用方法和例子

升级bcc到最新的版本,tools里面支持了tcprtt工具。

tcprtt [-h] [-i INTERVAL] [-d DURATION] [-T] [-m] [-p SPORT] [-P DPORT] [-a SADDR] [-A DADDR] [-D] 可以通过参数过滤预期的流。在man page中有详细说明。 下面是example中的例子: wrk压测一个web服务器,输出的结果: # wrk -d 30 -c 10 --latency http://192.168.122.100/index.html Running 30s test @ http://192.168.122.100/index.html 2 threads and 10 connections Thread Stats Avg Stdev Max +/- Stdev Latency 86.75ms 153.76ms 1.54s 90.85% Req/Sec 160.91 76.07 424.00 67.06% Latency Distribution 50% 14.55ms 75% 119.21ms 90% 230.22ms 99% 726.90ms 9523 requests in 30.02s, 69.62MB read Socket errors: connect 0, read 0, write 0, timeout 1 可以看到PCT 99非常不稳定,Avg延迟和Max延迟相差也比较多。 在运行期间,同时抓取tcprtt数据:

可以看到RTT不稳定,延迟以4-7ms居多,最大可以到达512 -> 1023ms。所以,可以简单判断出来网络环境不好,需要先排查网络环境。

本文分享自微信公众号 - AlwaysGeek(gh_d0972b1eeb60),作者:AlwaysGeek

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2020-09-12

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • [linux][tcp]tcprtt在server端监控多个client延迟

    前言 前文《[linux][tcp]使用tcprtt排查网络延迟问题》介绍了tcprtt的基本用法,可以监控特定的连接的TCP的rtt情况。 后来,Brande...

    皮振伟
  • 如何模拟弱网环境?

    运维过程中,最复杂的问题,莫过于网络的问题,而网络问题最烦的就是无法复现,这篇介绍一个强大的网络模拟工具Netem

    李俊鹏
  • 简单的 HTTP 调用,为什么时延这么大?

    最近项目测试遇到个奇怪的现象,在测试环境通过 Apache HttpClient 调用后端的 HTTP 服务,平均耗时居然接近 39.2ms。可能你乍一看觉得这...

    kirito-moe
  • 简单的 HTTP 调用,为什么时延这么大?

    最近项目测试遇到个奇怪的现象,在测试环境通过 Apache HttpClient 调用后端的 HTTP 服务,平均耗时居然接近 39.2ms。可能你乍一看觉得这...

    涤生
  • 解决Redis 延迟故障

    症状 前一段时间redis客户端在使用php connect 连接redis 的经常报一个redis server went away 等信息。 排查 首先想到...

    小小科
  • 处理网络超时问题的最佳实践

    对于云上的用户来说,业务日志里面报超时问题处理起来往往比价棘手,因为1) 问题点可能在云基础设施层,也有可能在业务软件层,需要排查的范围非常广;2) 这类问题往...

    JavaQ
  • 为什么MOBA、“吃鸡”游戏不推荐用tcp协议——实测数据

    我们知道,不同类型的游戏因为玩法、竞技程度不一样,采用的同步算法不一样,对网络延迟的要求也不一样。例如,MOBA类游戏多使用帧同步为主要同步算法,竞技性也较高,...

    云加社区
  • 谈谈Linux中的TCP重传抓包分析

    收到研发反馈,TCP重传严重。主机报文重传是TCP最基本的错误恢复功能,它的目的是防止报文丢失

    公众号_松华说
  • 不要启用 net.ipv4.tcp_tw_recycle

    本文为翻译英文BLOG《Coping with the TCP TIME-WAIT state on busy Linux servers》,但并非完整的翻译,...

    sunsky

扫码关注云+社区

领取腾讯云代金券