调查服务器响应时间的利器 tcprstat
来源:互联网 发布:嵌入式与单片机的区别 编辑:程序博客网 时间:2024/05/16 07:51
我们在做服务器程序的时候,经常要知道一个请求的响应时间,借以优化或者定位问题。 通常的做法是在代码里面加入日志计算时间,这个方法有问题,时间不准确。因为数据从网卡到应用程序,从应用到网卡的时间没有被计算在内。 而且这个时间随着系统的负载有很大的变化。
那同学说,我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.
文档很详细: 请参考: http://www.percona.com/docs/wiki/tcprstat:start
不愿意编译的同学直接从这里下载64位系统的编译好的二进制:http://github.com/downloads/Lowercases/tcprstat/tcprstat-static.v0.3.1.x86_64
源码编译也挺容易的: 由于它自带libpcap包, 这个包有可能在configure的时候没认识好netlink, 只要把config.h里面的netlink那个define注释掉就好。
编译好了, 典型使用很简单:
# tcprstat -p 3306 -t 1 -n 5timestampcountmaxminavgmedstddev95_max95_avg95_std99_max99_avg99_std12832614991870559009398831531330612672011506792323685128326150018652570429578142275588917510723630333133112832615011887269083358314827617141769423391339134012832615022015304965356241517204564171798615237507128326150316502890873546214671338341841203565244358
但是这个tcprstat在bonding的网卡下有点问题:
# /sbin/ifconfigbond0 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 5pcap: 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地址方式,而不是网络接口方式搞定。
祝大家玩的开心。
from:http://blogread.cn/it/article/2980?f=wb
- 调查服务器响应时间的利器 tcprstat
- 调查服务器响应时间的利器 tcprstat
- 调查服务器响应时间的利器 tcprstat
- 使用tcprstat调查服务响应时间和源码简析
- 统计服务器响应时间的利器
- tcprstat
- 测试服务器响应时间
- 服务器端口的监控(得到其响应时间)
- 服务器取时间利器 joda-time
- loadrunner的响应时间
- 服务器的响应数据
- 服务器的响应
- 计算服务器响应时间(HttpWebRequest)
- 计算服务器响应时间(HttpWebRequest)
- 多线程检测服务器响应时间小工具
- "超时间时间已到。在操作完成之前超时时间已过或服务器未响应"的解决办法
- Ajax XMLHttp GET HTML 如何设定允许的服务器响应时间?
- 优化网站的响应时间
- 函数指针的好处、作用
- 网游项目关键的问题总结130815
- 跟踪apt-get软件包安装的时候安装了什么文件
- Unable to add the follwing facets to project: Axis2 Web Services Extensions, Axis Web Services Core.
- 什么是阻抗匹配
- 调查服务器响应时间的利器 tcprstat
- hdu-2955-Robberies
- 阻抗匹配的作用
- 监测 Linux 进程的实时 IO 情况
- Win32汇编中addr和offset的区别联系
- ERP SYSTEM 架构初探
- 转载:Linux 性能监测:IO
- Eratosthenes筛法求1——100000之间所有的素数(32位汇编语言)
- hdu 1242 (bfs+优先队列)