ITPub博客

首页 > Linux操作系统 > Linux操作系统 > tcprstat和tcpstat工作原理

tcprstat和tcpstat工作原理

原创 Linux操作系统 作者:myownstars 时间:2015-03-09 20:35:12 0 删除 编辑

1 tcprstat

原理

采用libpcap捕获tcp,计算请求响应时间并进行一系列聚集统计,响应时间 = diff(last inbound packet, first outbound packet)

相较tcpstat,该工具侧重于响应时间而非通信流量的计算;

可以直接监控网络接口(默认端口3306),或者读取tcpdump文件。

 

安装

文件本身为二进制格式,下载后无需编译可直接放入系统bin目录,赋予chmod +x后便可直接调用。

 

输出格式

# tcprstat -p 3306 -t 1 -n 5

timestamp        count    max      min      avg      med      stddev   95_max   95_avg   95_std   99_max         99_avg   99_std

1283261499       1870     559009   39       883      153      13306    1267     201      150      6792         323      685

1283261500       1865     25704    29       578      142      2755     889      175      107      23630         333      1331

1283261501       1887     26908    33       583      148      2761     714      176      94       23391         339      1340

1283261502       2015     304965   35       624      151      7204     564      171      79       8615         237      507

1timestampmicrosecond为统计单位;Percentiles = 结果排序并忽略最大的N%

 

可以只输出部分字段,譬如只统计完成的请求数:

# tcprstat -f '%n\n' -p 3306 -t 1 -n 0
count
2212
2070
...

 

Format Code

Header

Default?

Meaning

%n

count

y

Count of requests that completed during this iteration

%a

avg

y

Average response time

%s

sum

y

Sum of response times

%x

sqs

Sum of squares of response times

%m

min

y

Minimum response time

%M

max

y

Maximum response time

%h

med

y

Median response time

%S

stddev

y

Standard deviation of response times

%v

var

Variance of response times

%I

iter#

Iteration number

%t

elapsed

Seconds elapsed since the first iteration

%T

timestamp

y

Unix timestamp

%%

A literal %

\t

A tab character

\n

A newline character

95,99

Adds a prefix

y

A percentile indicator; see later in this section for more

 

 

 

2 tcpstat

统计网络接口的流量信息,可直接监控某指定接口,或者读取tcpdump文件;

统计内容主要包括:带宽;packet数量;每秒的packet;平均packet大小;interface load.

 

输出样例

   bash-2.03$ tcpstat -i eth0
   Time:940948785  n=107   avg=251.81      stddev=422.45   bps=43110.40
   Time:940948790  n=99    avg=400.21      stddev=539.39   bps=63393.60
   Time:940948795  n=43    avg=257.16      stddev=352.83   bps=17692.80

2n = packet数量;avg = 平均packet大小;stddev = standard deviation of packet sizebps = 每秒带宽(bit)

 

 

 

3 libpcap

是一个网络包捕获函数库,tcpdump便基于此实现,可用于构造网络嗅探器(sniffer)

工作架构如下

一个包捕获机制包含三个主要部分:最底层是针对特定操作系统的包捕获机制,最高层是针对用户程序的接口,第三部分是包过滤机制。

 

数据包常规的传输路径:网卡 -- 设备驱动层 -- 数据链路层(捕获) -- IP -- 传输层 -- 应用程序

包捕获机制是在数据链路层增加一个旁路处理,对发送和接收到的数据包做过滤/缓冲等相关处理,最后直接传递到应用程序。

3:这也解释了在开启checksum offloading时,sniffer抓取的包显示bad checksum,因为此种情形下checksum由网卡完成checksum计算http://blog.itpub.net/15480802/viewspace-1416446/

 

网络接口在Linux网络体系中是一个很重要的概念,它是对具体网络硬件设备的一个抽象,在它的下面是具体的网卡驱动程序,而其上则是网络协议层。Linux中最常见的接口设备名eth0loLo 称为回路设备,是一种逻辑意义上的设备, 其主要目的是为了调试网络程序之间的通讯功能。eth0对应了实际的物理网卡,在真实网络环境下,数据包的发送和接收都要通过 eth0。如果计算机有多个网卡,则还可以有更多的网络接口,如eth1,eth2 等等。调用命令ifconfig可以列出当前所有活跃的接口及相关信息,注意对eth0的描述中既有物理网卡的MAC地址,也有网络协议的IP地址。

 

 

 

参考资料

http://www.ibm.com/developerworks/cn/linux/l-libpcap/index.html  

http://www.percona.com/docs/wiki/tcprstat:start

http://www.frenchfries.net/paul/tcpstat/

http://bazaar.launchpad.net/~ignacio-nin/tcprstat/trunk/view/head:/README

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/15480802/viewspace-1453968/,如需转载,请注明出处,否则将追究法律责任。

下一篇: mydumper工作原理
请登录后发表评论 登录
全部评论

注册时间:2010-03-18

  • 博文量
    375
  • 访问量
    3091536