免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2265 | 回复: 9

[网络子系统] 如何跟踪tcp报文发送的时间? [复制链接]

论坛徽章:
0
发表于 2013-12-17 07:17 |显示全部楼层
碰到一个问题:

长时间的业务压力测试后,发现有2个tcp连接出现 send queue 拥堵(从netstat -anlp  发现Send-Q的数字很大)
抓包发现tcp报文每隔200ms 被发送出去, 该问题仅仅在8台server中的2台出现,出现频率挺高。

现在问题经过排除确实已经怀疑到协议栈代码了。

想从协议栈内核代码的角度,跟踪一下tcp报文发送过程: 发送时间,函数流程等信息;

我想到的方法:
1)写一个内核模块--》思路现在不是很清晰。
2)用外部工具----》不知道有什么工具。

请网络高手多多指教!

论坛徽章:
15
射手座
日期:2014-02-26 13:45:082015年迎新春徽章
日期:2015-03-04 09:54:452015年辞旧岁徽章
日期:2015-03-03 16:54:15羊年新春福章
日期:2015-02-26 08:47:552015年亚洲杯之卡塔尔
日期:2015-02-03 08:33:45射手座
日期:2014-12-31 08:36:51水瓶座
日期:2014-06-04 08:33:52天蝎座
日期:2014-05-14 14:30:41天秤座
日期:2014-04-21 08:37:08处女座
日期:2014-04-18 16:57:05戌狗
日期:2014-04-04 12:21:33技术图书徽章
日期:2014-03-25 09:00:29
发表于 2013-12-17 08:37 |显示全部楼层
todaygood 发表于 2013-12-17 07:17
碰到一个问题:

长时间的业务压力测试后,发现有2个tcp连接出现 send queue 拥堵(从netstat -anlp  发现 ...

个人觉得systemtap比较好用,可以试试~

论坛徽章:
6
金牛座
日期:2013-10-08 10:19:10技术图书徽章
日期:2013-10-14 16:24:09CU十二周年纪念徽章
日期:2013-10-24 15:41:34狮子座
日期:2013-11-24 19:26:19未羊
日期:2014-01-23 15:50:002015年亚洲杯之阿联酋
日期:2015-05-09 14:36:15
发表于 2013-12-17 08:42 |显示全部楼层
回复 2# humjb_1983
恩。利用thread_indent()可以方便的查看调用路径。

   

论坛徽章:
15
射手座
日期:2014-02-26 13:45:082015年迎新春徽章
日期:2015-03-04 09:54:452015年辞旧岁徽章
日期:2015-03-03 16:54:15羊年新春福章
日期:2015-02-26 08:47:552015年亚洲杯之卡塔尔
日期:2015-02-03 08:33:45射手座
日期:2014-12-31 08:36:51水瓶座
日期:2014-06-04 08:33:52天蝎座
日期:2014-05-14 14:30:41天秤座
日期:2014-04-21 08:37:08处女座
日期:2014-04-18 16:57:05戌狗
日期:2014-04-04 12:21:33技术图书徽章
日期:2014-03-25 09:00:29
发表于 2013-12-17 08:51 |显示全部楼层
瀚海书香 发表于 2013-12-17 08:42
回复 2# humjb_1983
恩。利用thread_indent()可以方便的查看调用路径。

这个我也来学习试试~~,感谢~

论坛徽章:
6
金牛座
日期:2013-10-08 10:19:10技术图书徽章
日期:2013-10-14 16:24:09CU十二周年纪念徽章
日期:2013-10-24 15:41:34狮子座
日期:2013-11-24 19:26:19未羊
日期:2014-01-23 15:50:002015年亚洲杯之阿联酋
日期:2015-05-09 14:36:15
发表于 2013-12-17 10:35 |显示全部楼层
回复 4# humjb_1983

112 sshd(3655):  <--__sock_sendmsg
   114 sshd(3655): <--sock_aio_write
     0 sshd(3655): --> sock_poll
     1 sshd(3655): <--sock_poll
     0 sshd(3655): --> sock_poll
     4 sshd(3655): <--sock_poll
     0 sshd(3655): --> sock_poll
     2 sshd(3655): <--sock_poll
     0 sshd(3655): --> sock_aio_write
     3 sshd(3655):  --> __sock_sendmsg
    82 sshd(3655):  <--__sock_sendmsg
    84 sshd(3655): <--sock_aio_write
     0 sshd(3655): --> sock_poll
     2 sshd(3655): <--sock_poll
     0 sshd(3655): --> sock_poll
     5 sshd(3655): <--sock_poll
     0 sshd(3655): --> sock_poll
     2 sshd(3655): <--sock_poll
     0 sshd(3655): --> sock_aio_write
     3 sshd(3655):  --> __sock_sendmsg
   106 sshd(3655):  <--__sock_sendmsg
   108 sshd(3655): <--sock_aio_write
     0 sshd(3655): --> sock_poll
     1 sshd(3655): <--sock_poll
     0 sshd(3655): --> sock_poll
     4 sshd(3655): <--sock_poll
     0 sshd(3655): --> sock_poll
     2 sshd(3655): <--sock_poll
     0 sshd(3655): --> sock_aio_write
   

论坛徽章:
15
射手座
日期:2014-02-26 13:45:082015年迎新春徽章
日期:2015-03-04 09:54:452015年辞旧岁徽章
日期:2015-03-03 16:54:15羊年新春福章
日期:2015-02-26 08:47:552015年亚洲杯之卡塔尔
日期:2015-02-03 08:33:45射手座
日期:2014-12-31 08:36:51水瓶座
日期:2014-06-04 08:33:52天蝎座
日期:2014-05-14 14:30:41天秤座
日期:2014-04-21 08:37:08处女座
日期:2014-04-18 16:57:05戌狗
日期:2014-04-04 12:21:33技术图书徽章
日期:2014-03-25 09:00:29
发表于 2013-12-17 12:48 |显示全部楼层
瀚海书香 发表于 2013-12-17 10:35
回复 4# humjb_1983

112 sshd(3655):   __sock_sendmsg

能否请瀚海兄把这段stp脚本帖一下~,谢谢!

论坛徽章:
6
金牛座
日期:2013-10-08 10:19:10技术图书徽章
日期:2013-10-14 16:24:09CU十二周年纪念徽章
日期:2013-10-24 15:41:34狮子座
日期:2013-11-24 19:26:19未羊
日期:2014-01-23 15:50:002015年亚洲杯之阿联酋
日期:2015-05-09 14:36:15
发表于 2013-12-17 14:19 |显示全部楼层
回复 6# humjb_1983
比较简单的一个测试代码。
1.png

   

论坛徽章:
15
射手座
日期:2014-02-26 13:45:082015年迎新春徽章
日期:2015-03-04 09:54:452015年辞旧岁徽章
日期:2015-03-03 16:54:15羊年新春福章
日期:2015-02-26 08:47:552015年亚洲杯之卡塔尔
日期:2015-02-03 08:33:45射手座
日期:2014-12-31 08:36:51水瓶座
日期:2014-06-04 08:33:52天蝎座
日期:2014-05-14 14:30:41天秤座
日期:2014-04-21 08:37:08处女座
日期:2014-04-18 16:57:05戌狗
日期:2014-04-04 12:21:33技术图书徽章
日期:2014-03-25 09:00:29
发表于 2013-12-17 14:50 |显示全部楼层
瀚海书香 发表于 2013-12-17 14:19
回复 6# humjb_1983
比较简单的一个测试代码。

试了一下,确实简单方便实用哦~~,
关键还在于thread_indent(1)和thread_indent(-1)的配合使用,可以用于统计指定代码流程的执行时间。当然也可以gettimeofday_us()手工统计时间~

论坛徽章:
0
发表于 2013-12-17 19:14 |显示全部楼层
本帖最后由 todaygood 于 2013-12-17 19:46 编辑

回复 2# humjb_1983

好吧,看来你对systemtap用得熟。
   

论坛徽章:
15
射手座
日期:2014-02-26 13:45:082015年迎新春徽章
日期:2015-03-04 09:54:452015年辞旧岁徽章
日期:2015-03-03 16:54:15羊年新春福章
日期:2015-02-26 08:47:552015年亚洲杯之卡塔尔
日期:2015-02-03 08:33:45射手座
日期:2014-12-31 08:36:51水瓶座
日期:2014-06-04 08:33:52天蝎座
日期:2014-05-14 14:30:41天秤座
日期:2014-04-21 08:37:08处女座
日期:2014-04-18 16:57:05戌狗
日期:2014-04-04 12:21:33技术图书徽章
日期:2014-03-25 09:00:29
发表于 2013-12-18 14:10 |显示全部楼层
todaygood 发表于 2013-12-17 19:14
回复 2# humjb_1983

好吧,看来你对systemtap用得熟。

呵呵,偶尔用用,这个东东确实不错~
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP