tcprstat和tcpstat工作原理
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
注1:timestamp以microsecond為統計單位;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
注2:n = packet數量;avg = 平均packet大小;stddev = standard deviation of packet size;bps = 每秒頻寬(bit)
3 libpcap
是一個網路包捕獲函式庫,tcpdump便基於此實現,可用於構造網路嗅探器(sniffer)。
工作架構如下
一個包捕獲機制包含三個主要部分:最底層是針對特定作業系統的包捕獲機制,最高層是針對使用者程式的介面,第三部分是包過濾機制。
資料包常規的傳輸路徑:網路卡 -- 裝置驅動層 -- 資料鏈路層(捕獲) -- IP層 -- 傳輸層 -- 應用程式
包捕獲機制是在資料鏈路層增加一個旁路處理,對傳送和接收到的資料包做過濾/緩衝等相關處理,最後直接傳遞到應用程式。
注3:這也解釋了在開啟checksum offloading時,sniffer抓取的包顯示bad checksum,因為此種情形下checksum由網路卡完成checksum計算http://blog.itpub.net/15480802/viewspace-1416446/
網路介面在Linux網路體系中是一個很重要的概念,它是對具體網路硬體裝置的一個抽象,在它的下面是具體的網路卡驅動程式,而其上則是網路協議層。Linux中最常見的介面裝置名eth0和lo。Lo 稱為迴路裝置,是一種邏輯意義上的裝置, 其主要目的是為了除錯網路程式之間的通訊功能。eth0對應了實際的物理網路卡,在真實網路環境下,資料包的傳送和接收都要透過 eth0。如果計算機有多個網路卡,則還可以有更多的網路介面,如eth1,eth2 等等。呼叫命令ifconfig可以列出當前所有活躍的介面及相關資訊,注意對eth0的描述中既有物理網路卡的MAC地址,也有網路協議的IP地址。
參考資料
http://www.ibm.com/developerworks/cn/linux/l-libpcap/index.html
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/15480802/viewspace-1453968/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- percona之tcprstat 介紹TCP
- Nginx 工作原理和優化、漏洞Nginx優化
- Session工作原理和典型應用分析Session
- springMVC 的工作原理和機制SpringMVC
- Nginx的工作原理和配置詳解Nginx
- tcprstat分析服務的響應速度利器TCP
- Ingress-nginx工作原理和實踐Nginx
- camera理論基礎和工作原理
- 圖解WebGL和Three.js工作原理圖解WebJS
- 容器的工作原理和隔離機制
- HTTPS 工作原理和 TCP 握手機制HTTPTCP
- WebGL 和 Three.js 工作原理圖解WebJS圖解
- mysql_proxy工作原理和配置引數MySql
- 編譯器的工作過程和原理編譯
- redis自學(33)哨兵的作用和工作原理Redis
- require工作原理UI
- Mybatis工作原理MyBatis
- Nginx工作原理Nginx
- Handler 工作原理
- rman工作原理
- mydumper工作原理
- pr工作原理
- servlet的生命週期和工作原理介紹Servlet
- 搞懂Redis RDB和AOF持久化及工作原理Redis持久化
- Oracle DUL的工作原理和技術實現Oracle
- 3.springboot-@Autowired和@Value工作原理Spring Boot
- 交換機的作用、功能和工作原理詳解
- 負載均衡器部署方式和工作原理負載
- javascript引擎工作原理JavaScript
- ZStack基本工作原理
- Mirror 的工作原理
- Web Scraper工作原理Web
- HTTPS工作原理HTTP
- SpringMVC工作原理SpringMVC
- Spark的工作原理Spark
- Docker 工作原理分析Docker
- panic/recover工作原理
- 【MySQL】Mydumper工作原理MySql