我们在做服务器程序的时候,经常要知道一个请求的响应时间,借以优化或者定位问题。 通常的做法是在代码里面加入日志计算时间,这个方法有问题,时间不准确。因为数据从网卡到应用程序,从应用到网卡的时间没有被计算在内。 而且这个时间随着系统的负载有很大的变化。
那同学说,我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 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’`
在典型满负载的mysql服务器上抓包的开销是:
26163 root 18 0 104m 5304 4696 S 18.3 0.0 49:47.58 tcprstat
用IP方式,而不是网络接口方式搞定。
祝大家玩的开心。
相关推荐
调查服务器响应时间的利器tcprstat。我们在做服务器程序的时候,经常要知道一个请求的响应时间,借以优化或者定位问题。通常的做法是在代码里面加入日志计算时间,这个方法有问题,时间不准确。因为数据从网卡到应用...
中台战略:企业数字化转型利器.pdf
《中台战略:企业数字化转型利器》是一份深入探讨企业如何利用中台策略进行数字化转型的重要研究报告,尤其针对制造业和工业领域。这份报告的核心聚焦在如何通过构建中台系统,推动企业的业务创新、效率提升以及数据...
### Bootstrap模板:快速开发响应式网页的设计利器 #### 引言 在当今互联网技术日新月异的时代背景下,网页设计面临着前所未有的挑战与机遇。为了应对这种变化,开发者们不断寻求更加高效、灵活的设计工具来满足...
《决战大数据:驾驭未来商业的利器》一书探讨了大数据在商业领域的应用和价值,以及如何从数据化运营转向运营数据。作者强调了大数据并非仅仅是谈论的热点,而是需要实际行动和创新管理的领域。大数据的核心在于通过...
Python实现EMV指标计算:股票技术分析的利器系列(2)
《深入理解HTTPWatch:网页响应时间测试利器》 在互联网开发和优化领域,了解网页性能至关重要。HTTPWatch是一款高效且精准的网页测试工具,专为开发者和网站管理员设计,用于测量并分析网页加载过程中的每一个细节...
Pandas是Python中进行数据分析的利器,它提供了丰富的数据结构和数据分析工具。通过本文的介绍和代码示例,你应该能够掌握Pandas的基本用法和一些高级技巧,从而在实际的数据分析工作中更加得心应手。无论是数据清洗...
Bootstrap模板作为现代Web开发中的一款利器,以其高效、易用和响应式设计的特性,极大地提高了Web开发的效率和品质。通过掌握Bootstrap模板的基本概念、优势和使用方法,并结合实战案例进行练习和实践,相信读者可以...
内容概要:本文介绍了MyBatis动态SQL的基本概念、常用标签和使用技巧,帮助读者了解如何构建灵活的查询语句。 使用人群:适用于使用MyBatis框架进行数据库操作的开发者,尤其是需要构建复杂查询逻辑的开发者。...
latex
【软考网络工程师视频课件(二):Linux服务器配置】是针对中级网络工程师考试的一份重要学习资源,主要涵盖了Linux操作系统在服务器环境中的配置与管理。Linux作为一款开源、稳定的操作系统,常被用于企业级服务器...
目前,很多人都在从事...本白皮书根据一份IDC针对众多全球企业的BSM状况所作的调查结果,深入分析了该项目的推动因素和阻碍因素。同时,本白皮书还强调了通过这项挑战来实现业务部门与IT部门的目标整合所带来的好处。
burpsuite安装详细教程
lower_bound函数
Python实现KDJ指标计算
### Bootstrap卡片排版:打造响应式和现代网页设计的利器 #### 一、Bootstrap卡片排版概述 Bootstrap作为一款流行的前端开发框架,以其强大的功能、灵活性及易用性深受开发者们的喜爱。它不仅提供了丰富的HTML、...
详见我的空间。真的非常好用的哦 http://blog.csdn.net/rowland001/archive/2008/08/26/2833347.aspx
《眼动追踪:用户体验设计利器》以用户体验研究为背景,介绍了眼动追踪技术的基本原理、在人机交互发展过程中评估用户体验的重要性和相关实践,并对眼动追踪技术在商务网站、移动设备、社交媒体、视频游戏等多个领域...
提权利器合集 巴西烤肉等等著名免杀 巴西烤肉等等著名免杀