如何测量服务器代码的性能和 TCP RTT?

2023-11-29

我创建了一个基本的 TCP 服务器,它以协议缓冲区格式读取传入的二进制数据,并写入二进制消息作为响应。我想对往返时间进行基准测试。

我尝试了 iperf,但无法让它多次发送相同的输入文件。除了可以重复发送二进制输入文件之外,还有其他基准测试工具吗?


If you have access to a linux or unix machine1, you should use tcptrace. All you need to do is loop through your binary traffic test while capturing with wireshark or tcpdump file.

After you have that .pcap file2, analyze with tcptrace -xtraffic <pcap_filename>3. This will generate two text files, and the average RTT stats for all connections in that pcap are shown at the bottom of the one called 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]$

The .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)

您可以根据服务器的情况调整循环之间的睡眠时间accept()性能和测试持续时间。


结束语:

  1. A Knoppix Live-CD will do
  2. 过滤以仅捕获测试流量
  3. tcptrace如果您使用其他选项,则能够获得非常详细的每个套接字统计信息......


================================
[mpenning@Bucksnort tcpperf]$ tcptrace -lr willers.pcap
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.080496, 205252 pkts/sec analyzed
trace file elapsed time: 0:03:21.754962
TCP connection info:
200 TCP connections traced:
TCP connection 1:
        host c:        myhost.local:44781
        host d:        willers.local:22
        complete conn: RESET    (SYNs: 2)  (FINs: 1)
        first packet:  Tue May 31 22:52:24.154801 2011
        last packet:   Tue May 31 22:52:25.668430 2011
        elapsed time:  0:00:01.513628
        total packets: 73
        filename:      willers.pcap
   c->d:                              d->c:
     total packets:            34           total packets:            39
     resets sent:               4           resets sent:               0
     ack pkts sent:            29           ack pkts sent:            39
     pure acks sent:           11           pure acks sent:            2
     sack pkts sent:            0           sack pkts sent:            0
     dsack pkts sent:           0           dsack pkts sent:           0
     max sack blks/ack:         0           max sack blks/ack:         0
     unique bytes sent:      2512           unique bytes sent:     14336
     actual data pkts:         17           actual data pkts:         36
     actual data bytes:      2512           actual data bytes:     14336
     rexmt data pkts:           0           rexmt data pkts:           0
     rexmt data bytes:          0           rexmt data bytes:          0
     zwnd probe pkts:           0           zwnd probe pkts:           0
     zwnd probe bytes:          0           zwnd probe bytes:          0
     outoforder pkts:           0           outoforder pkts:           0
     pushed data pkts:         17           pushed data pkts:         33
     SYN/FIN pkts sent:       1/1           SYN/FIN pkts sent:       1/0
     req 1323 ws/ts:          Y/Y           req 1323 ws/ts:          Y/Y
     adv wind scale:            6           adv wind scale:            1
     req sack:                  Y           req sack:                  Y
     sacks sent:                0           sacks sent:                0
     urgent data pkts:          0 pkts      urgent data pkts:          0 pkts
     urgent data bytes:         0 bytes     urgent data bytes:         0 bytes
     mss requested:          1460 bytes     mss requested:          1460 bytes
     max segm size:           792 bytes     max segm size:          1448 bytes
     min segm size:            16 bytes     min segm size:            32 bytes
     avg segm size:           147 bytes     avg segm size:           398 bytes
     max win adv:           40832 bytes     max win adv:           66608 bytes
     min win adv:            5888 bytes     min win adv:           66608 bytes
     zero win adv:              0 times     zero win adv:              0 times
     avg win adv:           14035 bytes     avg win adv:           66608 bytes
     initial window:           32 bytes     initial window:           40 bytes
     initial window:            1 pkts      initial window:            1 pkts
     ttl stream length:      2512 bytes     ttl stream length:        NA
     missed data:               0 bytes     missed data:              NA
     truncated data:            0 bytes     truncated data:            0 bytes
     truncated packets:         0 pkts      truncated packets:         0 pkts
     data xmit time:        1.181 secs      data xmit time:        1.236 secs
     idletime max:          196.9 ms        idletime max:          196.9 ms
     throughput:             1660 Bps       throughput:             9471 Bps

     RTT samples:              18           RTT samples:              24
     RTT min:                43.8 ms        RTT min:                 0.0 ms
     RTT max:               142.5 ms        RTT max:                 7.2 ms
     RTT avg:                68.5 ms        RTT avg:                 0.7 ms
     RTT stdev:              35.8 ms        RTT stdev:               1.6 ms

     RTT from 3WHS:          80.8 ms        RTT from 3WHS:           0.0 ms

     RTT full_sz smpls:         1           RTT full_sz smpls:         3
     RTT full_sz min:       142.5 ms        RTT full_sz min:         0.0 ms
     RTT full_sz max:       142.5 ms        RTT full_sz max:         0.0 ms
     RTT full_sz avg:       142.5 ms        RTT full_sz avg:         0.0 ms
     RTT full_sz stdev:       0.0 ms        RTT full_sz stdev:       0.0 ms

     post-loss acks:            0           post-loss acks:            0
     segs cum acked:            0           segs cum acked:            9
     duplicate acks:            0           duplicate acks:            1
     triple dupacks:            0           triple dupacks:            0
     max # retrans:             0           max # retrans:             0
     min retr time:           0.0 ms        min retr time:           0.0 ms
     max retr time:           0.0 ms        max retr time:           0.0 ms
     avg retr time:           0.0 ms        avg retr time:           0.0 ms
     sdv retr time:           0.0 ms        sdv retr time:           0.0 ms
================================
  
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何测量服务器代码的性能和 TCP RTT? 的相关文章

  • 在 .NET 中将套接字发送/接收超时设置为小于 500 毫秒

    根据 MSDN 文档 不可能将 Socket SendTimeout 设置为小于 500ms 的值 http msdn microsoft com en us library system net sockets socket sendti
  • BulkRequestBuilder 的 Elasticsearch 索引速度变慢

    大家好 elasticsearch 大师们 我有数百万数据需要由elasticsearch Java API 索引 Elasticsearch 的集群节点数量为 3 个 1 个主节点 2 个节点 我的代码片段如下 Settings sett
  • 从具有多个分区列的 hive 表中获取最新数据

    我有一个具有以下结构的配置单元表 ID string Value string year int month int day int hour int minute int 该表每 15 分钟刷新一次 并按年 月 日 小时 分钟列进行分区
  • 视图和表在性能上的差异

    对于包含大量数据的表来说什么是最好的 我有一个存储过程 可以根据一些过滤器创建报告 在我的 SP 中 我读取表格并放入所有内部联接和公式 然后在放置过滤器的 where 条件中 谈论性能什么更好 创建一个包含所有联接的视图或读取表 就像我正
  • 为什么在 Python 中创建类比实例化类慢得多?

    我发现类的创建比类的实例化慢得多 gt gt gt from timeit import Timer as T gt gt gt def calc n return T class Haha object pass timeit n lt
  • 如何计算 ARM 处理器算法的 MIPS

    最近 我被要求为我们开发的算法生成 MIPS 每秒百万条指令 该算法由一组 C 风格函数公开 我们在 Dell Axim 上运行了代码 以对不同输入下的性能进行基准测试 这个问题来自我们的硬件供应商 但我主要是一名 HL 软件开发人员 所以
  • C 中的字节顺序和套接字编程

    我正在制作一个使用 C 套接字与某些患者监视器进行通信的程序 我使用无连接套接字 UDP 与设备进行通信 但我的计算机和设备之间存在字节顺序不匹配 到目前为止 我这样做是为了从患者监视器获取解析响应 recvfrom int socket
  • 如何使我的网站获得更好的性能

    嘿那里 我在 Windows 2008 服务器上运行 IIS7 在高峰时段 我们有以下行为 CPU负载接近空闲 请求排队 使用资源监视器进行监控 执行时间超过10秒 1 4 请参阅以前的版本和编辑 5 异步做事 按照建议 我创建了一个简单的
  • 基准测试socket.io

    我想对我的 socket io 服务器进行基准测试 我想测试服务器可以处理多少并行连接和消息 但是当我用大约 200 个 websocket 启动基准测试几分钟后 我的 socket io 服务器崩溃了 我尝试使用node js的集群模块将
  • 如何在C中模拟套接字

    我有一个使用套接字的函数 我会模拟它 但我找不到如何做到这一点 有没有办法在 C 中模拟套接字 Thanks 大多数系统 库函数是弱符号 https en wikipedia org wiki Weak symbol 这意味着您可以创建自己
  • 如何使用带有 Scripts.Render 的 ASP MVC 4 捆绑包的脚本延迟属性

    我浏览了 Google 和 Stackoverflow 但没有找到答案 是否有任何内置方法可以使捆绑包按延迟执行 或者有人知道有人为此编写的扩展帮助器方法吗 尝试将 Web Optimization 升级到版本 1 1 0Codeplex
  • 有人可以解释一下以下内存分配 C 程序的性能行为吗?

    在我的机器上 时间 A 和时间 B 交换取决于是否A是 定义或未定义 这会改变两个的顺序 callocs 被称为 我最初将此归因于寻呼系统 奇怪的是 当mmap被用来代替calloc 情况更加奇怪 两个循环花费的时间相同 正如预期的那样 作
  • C 中每 N 个元素中出现次数最多的元素

    我有一个大小为 0 8388608 的大数组 A 其中包含 相对较小 的整数 A i 0 131072 我想找到每个 N 32 个元素中最常出现的元素 什么会更快 A 创建一个大小为131072的关联数组B 迭代32个元素 递增B A i
  • 如何配置和采样英特尔进程内性能计数器

    简而言之 我试图在用户级基准测试进程中实现以下目标 伪代码 假设 x86 64 和 UNIX 系统 results for iteration 0 iteration lt num iterations iteration pctr sta
  • 跟踪数据包通过内核 (linux)

    我有两台机器设置为使用 Ip Security 机器 A 我们称它们为 A 和 B 有一个套接字 该套接字绑定到本地机器上的特定 UDP 端口 并且它经常轮询它以查看是否收到任何内容在上面 当我禁用 IP 安全性时 两台机器之间的数据可以正
  • 从高斯分布中采样随机值的最快方法是什么?

    The Box Muller 变换 http en wikipedia org wiki Box E2 80 93Muller transform 是一种从高斯分布中采样随机值的优雅且性能合理的方法 我正在寻找一种用 C 编写 清晰的更快方
  • 在方法之间重用PreparedStatement?

    We all know https stackoverflow com questions 2467125 reusing a preparedstatement multiple times that https stackoverflo
  • WinSock.h 和 WinSock2.h 使用哪个?

    有谁知道 WinSock h 和 WinSock2 h 之间的区别 我知道它们不使用相同的库 lib 但我不知道 WinSock2 是否仅添加了新功能 或者是否还改进了 WinSock 1 功能 我正在使用 IP TCP 套接字 并希望使用
  • 使用 iOS 设备作为 TCP 客户端 - 无 Bonjour

    我想使用 iOS 设备作为 TCP 客户端 但我找不到可理解的 API 指南 示例来说明如何做到这一点 我试过SimpleNetworkStreams and PictureSharing 但他们都使用 Bonjour 我可以轻松建立 UD
  • .Net 4.0 应用程序在 64 位上比 32 位慢(分析和可能的解决方案)(应用程序正在使用 NetAdvantage)

    我们已经用 VB NET 4 0 VS2010 编写了 NET 应用程序 并使用设置为调试和发布配置的 AnyCPU 设置的所有项目进行编译 我们注意到 当此应用程序在 64 位环境中运行 在 Windows Server 2003 R2

随机推荐

  • 什么是胖接口?

    你好 我在电影行业工作 模拟和应用工作室效果 我可以问一下什么是胖接口吗 我听到网上有人说它是什么 编辑 是的here尼可波拉斯说 我相信非常好的指示 fat interface an interface with more member
  • 如何更改PHP中数组的索引[重复]

    这个问题在这里已经有答案了 我想在执行一些操作后更改数组的索引 我的实际输出是 Array 0 gt Array 0 gt 4 1 gt 6 2 gt Array 0 gt 1 1 gt 7 5 gt Array 0 gt 1 1 gt 7
  • 如何从 Http 集成流程创建 Spring Reactor Flux?

    我有一个与此非常相似的问题如何从 ActiveMQ 队列创建 Spring Reactor Flux 唯一的区别是消息来自 Http 端点而不是 JMS 队列 问题是消息通道由于某种原因没有被填充 或者它没有被 Flux from 拾取 日
  • JavaScript substr();按字限制而不是字符

    我想用单词而不是字符来限制子字符串 我正在考虑正则表达式和空格 但不知道如何实现 场景 使用 javascript jQuery 将一段单词限制为 200 个单词 var postBody postBody substr 200 这很棒 但
  • MongoDB 未授权查询 admin.system.users

    我对 MongoDb 有点陌生 我正在使用 MongoDb v 2 4 这里的问题是 当我使用 auth 参数运行 mongod 时 即使在经过身份验证后 我也无法执行简单的操作 例如 显示用户 但如果我在没有 auth 参数的情况下运行
  • 复选框未显示在下拉列表中

    我必须从下拉列表中进行多项选择 所以我已经提到了这个link 但是 当我尝试在浏览器中打开该程序时 我没有看到该复选框 也无法选择更多数据 我的脚本看起来像这样
  • 如何在liferay DXP中添加语言图标

    如何在liferay 7 liferay ce portal 7 0 ga4 中添加语言图标图像 我已按照以下文章中提到的步骤进行操作 https web liferay com web salman khan blog blogs add
  • Java正则表达式匹配无回车符后跟换行符

    我试过了 r n但这行不通 你怎么做到这一点 我很欣赏 在类似 Java 的代码中 您需要使用 r n 谢谢你 根据您的要求 r n 前面有除回车符之外的任何字符的换行符 这意味着换行之前必须有一个字符 and 两个符号将被匹配
  • ASP.NET Masterpage 中的 Google Maps API:为什么它保持空白?

    当在 Visual Studio localhost port 服务器中启动时 这个简单的示例以纯 html 运行
  • D3:树形图中的超链接

    我在超链接 Reingold Tilford 树图中的子元素时遇到问题 该图是在 D3 中构建的 并且基于 Mike Bostock 使用的示例 http bl ocks org mbostock 4339184 我的代码和 JSON 文件
  • 如何将 ASP.NET 网站转换为 SharePoint 网站?

    假设您有一个包含隐藏代码的 ASP NET 站点 现在 您需要将此网站移动到 SharePoint 环境 在该环境中它将成为其自己的 Web 应用程序中网站集的根网站 在不完全重新设计每个页面的情况下实现这一目标的最简单方法是什么 以下是一
  • api <21 的可绘制着色

    是否可以为 api
  • C# 循环遍历 List> 以填充 DataTable

    我需要循环遍历字典列表 List
  • iPhone 上的自定义相机变焦功能

    我是 XCode 新手 我正在尝试开发具有覆盖视图的自定义相机 我能够很好地加载它并且工作得很好 现在我想添加通过叠加视图上的按钮激活的缩放功能 有人可以指导我吗 我试图找出如何变焦相机 但我还没有找到任何东西 谢谢 您可以使用camera
  • 弹出窗口外部点击设置为 false [setOutsideTouchable(false)] 不起作用

    创建布局充气器 尝试 LayoutInflater inflator LayoutInflater from this 创建视图 final View menuview inflater inflate R layout menu View
  • Gatsby - 页面刷新损坏

    我的盖茨比网站上的一个页面出现问题 如果我从任何其他页面转到该页面 那么它会呈现良好的效果 但是 如果我直接点击链接 或者在加载后刷新页面 那么它就无法正确呈现 所有其他页面都呈现良好 与此不同的一件事是使用柔性显示布局 查看页面结构 它的
  • x 轴为 24 小时的条形图,日期时间数据仅为本部分的开头

    我想绘制一个条形图 或直方图 但不是其他图 使得 x 值对应于时间段 但 x 轴标签是从 00 00 到 23 59 间隔为半小时 问题出在我的数据框中 开始时间 列中的值的类型为 datetime time 看起来像 0 00 30 00
  • JQuery UI 选项卡 - 微调器背景图像

    All 我正在使用 JQuery UI 选项卡 单击选项卡时 我希望选项卡显示选项卡标题以及旁边的旋转动画 gif 加载选项卡后 图像应该隐藏 我怎样才能实现这个目标 Thanks 添加微调器选项tabs tabs tabs spinner
  • 获取 Google Drive NodeJS 客户端的上传进度?

    当我们从以下位置获取请求对象后req drive files insert如何使用它查找文件上传进度 我在req string多次调用但无济于事 function uploadFile var path untildify workspac
  • 如何测量服务器代码的性能和 TCP RTT?

    我创建了一个基本的 TCP 服务器 它以协议缓冲区格式读取传入的二进制数据 并写入二进制消息作为响应 我想对往返时间进行基准测试 我尝试了 iperf 但无法让它多次发送相同的输入文件 除了可以重复发送二进制输入文件之外 还有其他基准测试工