1. 程式人生 > >系統技術非業餘研究 » 調查伺服器響應時間的利器 tcprstat

系統技術非業餘研究 » 調查伺服器響應時間的利器 tcprstat

我們在做伺服器程式的時候,經常要知道一個請求的響應時間,藉以優化或者定位問題。 通常的做法是在程式碼裡面加入日誌計算時間,這個方法有問題,時間不準確。因為資料從網絡卡到應用程式,從應用到網絡卡的時間沒有被計算在內。 而且這個時間隨著系統的負載有很大的變化。
那同學說,我wireshark, tcpdump抓包人肉統計不行嗎。 可以的,只不過我會很同情你,此舉需要耐心且不具可持續性。 所以我們希望有個工具能夠最少費力的做這個事情。

這時候來自percona的tcprstat來救助了! 這個工具原本開發用來調查mysqld的效能問題,所以不要奇怪它的預設埠是3306, 但是我們可以用這個工具來調查典型的request->response型別的伺服器。

什麼是tcprstat:

tcprstat is a free, open-source TCP analysis tool that watches network traffic and computes the delay between requests and responses. From this it derives response-time statistics and prints them out. The output is similar to other Unix -stat tools such as vmstat, iostat, and mpstat. The tool can optionally watch traffic to only a specified port, which makes it practical for timing requests and responses to a single daemon process such as mysqld, httpd, memcached, or any of a variety of other server processes.

原始碼編譯也挺容易的: 由於它自帶libpcap包, 這個包有可能在configure的時候沒認識好netlink, 只要把config.h裡面的netlink那個define註釋掉就好。

編譯好了, 典型使用很簡單:

# 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
1283261503	1650	289087	35	462	146	7133	834	184	120	3565	244	358

但是這個tcprstat在bonding的網絡卡下有點問題:

# /sbin/ifconfig
bond0     Link encap:Ethernet  HWaddr A4:BA:DB:28:B5:AB  
          inet addr:10.232.31.19  Bcast:10.232.31.255  Mask:255.255.255.0
          inet6 addr: fe80::a6ba:dbff:fe28:b5ab/64 Scope:Link
          UP BROADCAST RUNNING MASTER MULTICAST  MTU:1500  Metric:1
          RX packets:19451951688 errors:0 dropped:4512 overruns:0 frame:0
          TX packets:26522074966 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:6634368171533 (6.0 TiB)  TX bytes:32576206882863 (29.6 TiB)
...
# tcprstat -p 3306 -t 1 -n 5
pcap: SIOCGIFFLAGS: bonding_masters: No such device

解決方案是:

# sudo tcprstat -p 3306 -t 1 -n 0 -l `/sbin/ifconfig | grep 'addr:[^ ]\+' -o | cut -f 2 -d : | xargs echo | sed -e 's/ /,/g'` 

用IP地址方式,而不是網路介面方式搞定。

祝大家玩的開心。

Post Footer automatically generated by wp-posturl plugin for wordpress.

相關推薦

系統技術業餘研究 » 調查伺服器響應時間利器 tcprstat

我們在做伺服器程式的時候,經常要知道一個請求的響應時間,藉以優化或者定位問題。 通常的做法是在程式碼裡面加入日誌計算時間,這個方法有問題,時間不準確。因為資料從網絡卡到應用程式,從應用到網絡卡的時間沒有被計算在內。 而且這個時間隨著系統的負載有很大的變化。 那同學說,我wireshark, tcp

系統技術業餘研究 » 調查使用者空間程式某函式最常呼叫路徑

在做系統調優或者調查效能問題的的時候,比如說調查一個鎖的效能問題。 這把鎖的程式碼會有很多路徑會呼叫, 我們可以在鎖的地方設個probe點,但是我們無法知道那個路徑是最經常呼叫的。 所以我就寫了個stap指令碼來解決這個問題,程式碼在RHEL 5.4/6下都除錯沒有問題的。 $ cat >

系統技術業餘研究 » nicstat 網路流量統計利器

前段時間看到brendangregg的 Linux Performance Analysis and Tools PPT裡面提到的nicstat,研究了下是個不錯的東西,分享給大家。 nicstat is to network interfaces as “iostat” is to disks,

系統技術業餘研究 » Linux快取記憶體使用率調查

Linux的快取記憶體pagecache對效能的影響至關重要,但是實際系統中我們的利用率如何呢,特別是具體到每個裝置的利用情況。 從下圖我們可以很清楚的看到: 我們知道IO請求由vfs發起,經過pagecache快取,擋不住的就落實到io裝置去,那麼統計這個利用率就很簡單。 我們只要知道擋不住的

系統技術業餘研究 » Fio模擬Mysql伺服器IO壓力指令碼

fio是個非常好用的io壓力模擬工具,功能非常齊全, 有興趣的同學參看 這裡。 這裡我用fio模擬我們線上mysql伺服器的壓力來為廠家送來的pci-ssd卡做壓力測試,底下是指令碼(已經測試正確),也許有的同學有用。 $ cat mysql-test # QPS: 40000(10 core

系統技術業餘研究 » IO模式調查利器blkiomon介紹

blkiomon 是blktrace工具包帶的一個方便使用者瞭解IO情況的工具, 由於blktrace太專業,需要了解的IO協議棧的東西太多,blkiomon給大多數的使用者提供了一種易於使用的方式. blktrace的使用參考這裡: http://blog.yufeng.info/archive

系統技術業餘研究 » Erlang 網路密集型伺服器的瓶頸和解決思路

最近我們的Erlang IO密集型的伺服器程式要做細緻的效能提升,從每秒40萬包處理提升到60萬目標,需要對程序和IO排程器的原理很熟悉,並且對行為進行微調,花了不少時間參閱了相關的文件和程式碼。 其中最有價值的二篇文章是: 1. Characterizing the Scalability of

系統技術業餘研究 » CPU拓撲結構的調查

在做多核程式的時候(比如Erlang程式),我們需要了解cpu的拓撲結構, 瞭解logic CPU和物理的CPU的對映關係,以及瞭解CPU的內部的硬體引數,比如說 L1,L2 cache的大小等資訊。 Linux下的/proc/cpuinfo提供了相應的資訊,但是比較不全面。 /sys/devi

系統技術業餘研究 » 程序死亡原因調查:被殺?

最近MySQL平臺化系統都是用熱升級來更新的,在線上的日誌發現類似的crashlog: 2013-07-24 23:54:06 =ERROR REPORT==== ** Generic server <0.31760.980> terminating ** Last message i

系統技術業餘研究 » ECUG2010分享:C1000K高效能伺服器構架技術

點選這裡下載 ppt 視訊這裡 照片這裡 這次ECUG2010的講師來自不同的國家,有點國際化的味道,也說明了這個世界越來越扁平,技術越越來越同步,我們追隨技術的壓力也越來越大。 Post Footer automatically generated by wp-posturl plugin

系統技術業餘研究 » 最快的Erlang http hello world 伺服器調優指南 (20Khttp短連結請求/S每桌面CPU)

erl的虛擬機器有2種方式 plain版本的和smp版本的。 smp版本由於鎖的開銷相比要比plain版本的慢很多。而32位機器由於記憶體訪問比64位的少,也會快出很多。所有我選擇在32位的linux系統下調優這個httpd伺服器。這個伺服器就是實現個簡單的功能,在browser下返回hello

系統技術業餘研究 » Tsung用於壓測MySQL伺服器的指令碼

這個MySQL伺服器壓測的需求是 : 環境: Linux RHEL 5U4 X86-64, 24G記憶體, 16核. MySQL伺服器在xx.232.36.1上。 壓力由最多32個客戶端發起,每個客戶端分別做update, insert, delete操作,概率分別是50%, 30%, 20%

系統技術業餘研究 » Erlang版TCP伺服器對抗攻擊解決方案

網際網路上的TCP伺服器面對的環境情況比企業私有的伺服器要複雜很多。常見的針對tcp伺服器的攻擊有以下幾種: 1. 偽造協議,導致伺服器crash. 比如說某條命令的欄位長度,協議最大規定是1024,偽造個4096的。 2. 偽造大的報文,比如說一個包有1024M這麼大。 3. 消耗伺服器資源。開

系統技術業餘研究 » ioprofile調查應用IO情況的利器

我們在做IO密集型的應用程式的時候,比如MySQL資料庫,通常系統的表現取決於workload的型別。 比如我們要調優,我們就必須非常清楚的知道資料的訪問規律,收集到足夠的資料,用來做調優的依據。 有很多工具可以收集系統層面的,裝置層面的,程序層面的IO資料,但是沒有一個現成的工具可以回答我們比如

系統技術業餘研究 » 簡易的python web伺服器用途

我們在工作中經常會需要看下報表,如tsung的統計報表或者lcov的覆蓋情況,這些報表通常為了方便都會作成html格式的。我們可以把這些html網頁打包拉回去用瀏覽器慢慢看,但是每次都要打包,拉資料非常麻煩。我們可以架設個web伺服器來做這個事情。 apache或者nginx都太龐大,設定起來太麻

系統技術業餘研究 » 詳解伺服器記憶體頻寬計算和使用情況測量

前段時間我們在MYSQL調優上發現有瓶頸,懷疑是過多拷貝記憶體,導致記憶體頻寬用完。在Linux下CPU的使用情況有top工具, IO裝置的使用情況有iostat工具,就是沒有記憶體使用情況的測量工具。 我們可以看到大量的memcpy和字串拷貝(可以用systemtap來測量),但是像簡單的資料移

系統技術業餘研究

ItPub寫的文章“2017 年度 DB-Engines 資料庫冠軍得主:PostgreSQL 封王!”, 點選 這裡 進一步閱讀 升的最快的幾個資料庫,我簡單的無責任點評: PG資料庫是很老的資料庫,不過這幾年冉冉升起,因為是學院派的,有很好的學術和智力的支援,一直以來在資料庫的體系結構,程式碼

系統技術業餘研究 » MySQL資料庫架構的演化觀察

MySQL資料庫架構的演化觀察 December 14th, 2017 Categories: 資料庫 Tags: mysql

系統技術業餘研究 » inet_dist_connect_options

Erlang 17.5版本引入了inet_dist_{listen,connect}_options,對於結點間的互聯socket可以有更精細的控制,RPC的時候效能可以微調: raimo/inet_tcp_dist-priority-option/OTP-12476: Document ke

系統技術業餘研究 » 推薦工作機會

最後更新時間:2014/11/28 請賜簡歷至:[email protected], 感謝您對加入我們公司有興趣,我們希望能早日和您共事。 以下幾個職位1年內有效,歡迎內部轉崗:
 資深資料工程師 公司:阿里(核心系統資料庫組) 工作地點:杭州(西溪園區) 崗位描述: 分析雲服務產生的海