AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 408966
Accepted
sajal
sajal
Asked: 2012-07-19 11:45:46 +0800 CST2012-07-19 11:45:46 +0800 CST 2012-07-19 11:45:46 +0800 CST

检测 http 客户端往返时间的廉价方法

  • 772

我正在尝试找出一种方法来检测连接到我服务器上端口 80 的每个 IP 的往返时间。这样做的好方法是什么?

有很多连接,ping 每个 ip 是不切实际的。我在想,以某种方式测量服务器发送 syn/ack 数据包和服务器接收到它的 ack 之间的时间差。

有没有办法便宜地记录这个?也许使用一些神奇的 tcpdump 过滤器?

此练习的目标是汇总数据并确定是否存在路由效率低下的问题。假设一个地区的一个 ISP 可能路由不正确,等等。

FWIW 网络服务器是 nginx。

linux networking tcpdump nginx linux-networking
  • 2 2 个回答
  • 5812 Views

2 个回答

  • Voted
  1. Best Answer
    VBart
    2012-07-19T13:13:17+08:002012-07-19T13:13:17+08:00

    $tcpinfo_rtt, $tcpinfo_rttvar, $tcpinfo_snd_cwnd, $tcpinfo_rcv_space

    information about the client TCP connection; available on systems that support
    the TCP_INFO socket option
    

    http://nginx.org/en/docs/http/ngx_http_core_module.html#variables

    • 6
  2. Mike Pennington
    2012-07-19T11:51:11+08:002012-07-19T11:51:11+08:00

    如果您可以访问 linux 或 unix 机器1,则应该使用tcptrace。您需要做的就是使用wireshark或tcpdump将客户端流量捕获到 pcap 文件中。

    获得该.pcap文件2后,使用tcptrace -xtraffic <pcap_filename>3进行分析。这将生成两个文本文件,该 pcap 中所有连接的平均 RTT 统计数据显示在名为traffic_stats.dat.

    [mpenning@Bucksnort tcpperf]$ tcptrace -xtraffic willers.pcap
    mod_traffic: characterizing traffic
    1 arg remaining, starting with 'willers.pcap'
    Ostermann's tcptrace -- version 6.6.1 -- Wed Nov 19, 2003
    
    16522 packets seen, 16522 TCP packets traced
    elapsed wallclock time: 0:00:00.200709, 82318 pkts/sec analyzed
    trace file elapsed time: 0:03:21.754962
    Dumping port statistics into file traffic_byport.dat
    Dumping overall statistics into file traffic_stats.dat
    Plotting performed at 15.000 second intervals
    [mpenning@Bucksnort tcpperf]$
    [mpenning@Bucksnort tcpperf]$ cat traffic_stats.dat
    
    
    Overall Statistics over 201 seconds (0:03:21.754962):
    4135308 ttl bytes sent, 20573.672 bytes/second
    4135308 ttl non-rexmit bytes sent, 20573.672 bytes/second
    0 ttl rexmit bytes sent, 0.000 bytes/second
    16522 packets sent, 82.199 packets/second
    200 connections opened, 0.995 conns/second
    11 dupacks sent, 0.055 dupacks/second
    0 rexmits sent, 0.000 rexmits/second
    average RTT: 67.511 msecs        <------------------
    [mpenning@Bucksnort tcpperf]$
    

    本.pcap示例中使用的文件是我在循环执行expect从我的其中一台服务器提取数据的脚本时生成的捕获文件。这就是我生成循环的方式......

    #!/usr/bin/python
    from subprocess import Popen, PIPE
    import time
    
    for ii in xrange(0,200):
        # willers.exp is an expect script
        Popen(['./willers.exp'], stdin=PIPE, stdout=PIPE, stderr=PIPE)
        time.sleep(1)
    


    尾注:

    1. Knoppix Live-CD就可以了
    2. 过滤以仅捕获测试流量
    3. tcptrace如果您使用其他选项,则能够获得非常详细的每个插槽统计信息...
    ================================
    [mpenning@Bucksnort tcpperf]$ tcptrace -lr willers.pcap
    剩余 1 个参数,从“willers.pcap”开始
    Ostermann 的 tcptrace——版本 6.6.1——2003 年 11 月 19 日,星期三
    
    看到 16522 个数据包,跟踪到 16522 个 TCP 数据包
    经过的挂钟时间:0:00:00.080496,205252 pkts/sec 分析
    跟踪文件运行时间:0:03:21.754962
    TCP连接信息:
    跟踪到 200 个 TCP 连接:
    TCP 连接 1:
            主机 c:myhost.local:44781
            主持人 d:willers.local:22
            完整连接:RESET(SYN:2)(FIN:1)
            第一个数据包:2011 年 5 月 31 日星期二 22:52:24.154801
            最后一个数据包:2011 年 5 月 31 日星期二 22:52:25.668430
            经过时间:0:00:01.513628
            总数据包:73
            文件名:willers.pcap
       c->d: d->c:
         总数据包:34 总数据包:39
         发送的重置:4 发送的重置:0
         发送的确认包:29 发送的确认包:39
         发送的纯确认:11 发送的纯确认:2
         发送的 sack pkts:0 发送的 sack pkts:0
         发送的 dsack pkts:0 发送的 dsack pkts:0
         最大 sack blks/ack: 0 最大 sack blks/ack: 0
         发送的唯一字节数:2512 发送的唯一字节数:14336
         实际数据包:17 实际数据包:36
         实际数据字节:2512 实际数据字节:14336
         rexmt 数据包:0 rexmt 数据包:0
         rexmt 数据字节:0 rexmt 数据字节:0
         zwnd 探测包:0 zwnd 探测包:0
         zwnd 探测字节:0 zwnd 探测字节:0
         乱序 pkts:0 乱序 pkts:0
         推送数据包:17 推送数据包:33
         SYN/FIN 数据包发送:1/1 SYN/FIN 数据包发送:1/0
         请求 1323 ws/ts:是/是 请求 1323 ws/ts:是/是
         adv 风级:6 adv 风级:1
         要求麻袋:Y 要求麻袋:Y
         发送麻袋:0 发送麻袋:0
         紧急数据包:0 包紧急数据包:0 包
         紧急数据字节:0 字节紧急数据字节:0 字节
         请求的 mss:1460 字节 请求的 mss:1460 字节
         最大段大小:792 字节最大段大小:1448 字节
         最小段大小:16 字节最小段大小:32 字节
         平均段大小:147 字节平均段大小:398 字节
         最大获胜广告:40832 字节最大获胜广告:66608 字节
         最小获胜广告:5888 字节最小获胜广告:66608 字节
         零胜进阶:0 次零胜进阶:0 次
         平均获胜广告:14035 字节 平均获胜广告:66608 字节
         初始窗口:32 字节初始窗口:40 字节
         初始窗口:1 pkts 初始窗口:1 pkts
         ttl 流长度:2512 字节 ttl 流长度:NA
         丢失数据:0 字节丢失数据:NA
         截断数据:0 字节截断数据:0 字节
         截断数据包:0 pkts 截断数据包:0 pkts
         数据发送时间:1.181 秒数据发送时间:1.236 秒
         最大空闲时间:196.9 毫秒最大空闲时间:196.9 毫秒
         吞吐量:1660 Bps 吞吐量:9471 Bps
    
         RTT 样本:18 RTT 样本:24
         RTT 最小值:43.8 毫秒 RTT 最小值:0.0 毫秒
         RTT 最大值:142.5 毫秒 RTT 最大值:7.2 毫秒
         RTT 平均值:68.5 毫秒 RTT 平均值:0.7 毫秒
         RTT 标准偏差:35.8 毫秒 RTT 标准偏差:1.6 毫秒
    
         3WHS 的 RTT:80.8 毫秒 3WHS 的 RTT:0.0 毫秒
    
         RTT full_sz smpls:1 RTT full_sz smpls:3
         RTT full_sz 分钟:142.5 毫秒 RTT full_sz 分钟:0.0 毫秒
         RTT full_sz 最大值:142.5 毫秒 RTT full_sz 最大值:0.0 毫秒
         RTT full_sz 平均:142.5 毫秒 RTT full_sz 平均:0.0 毫秒
         RTT full_sz 标准偏差:0.0 毫秒 RTT full_sz 标准偏差:0.0 毫秒
    
         丢失后确认:0 丢失后确认:0
         段兼确认:0 段兼确认:9
         重复确认:0 重复确认:1
         三联装:0 三联装:0
         最大#重新传输:0 最大#重新传输:0
         最小返回时间:0.0 毫秒 最小返回时间:0.0 毫秒
         最大重传时间:0.0 毫秒 最大重传时间:0.0 毫秒
         平均返回时间:0.0 毫秒 平均返回时间:0.0 毫秒
         sdv retr 时间:0.0 ms sdv retr 时间:0.0 ms
    ================================
    
    • 3

相关问题

  • 更改 PHP 的默认配置设置?

  • 有什么软件可以模拟局域网?

  • 保护新的 Ubuntu 服务器 [关闭]

  • 带宽利用工具?[关闭]

  • (软)Ubuntu 7.10 上的 RAID 6,我应该迁移到 8.10 吗?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve