服务频繁出现100毫秒的延迟,原因是什么?

背景说明

陌陌的微服务框架支持Redis协议调用方式, 在使用Redis协议调用MOA服务时, 每个请求会被包装为一个消息, 这个消息会用一个唯一ID来标识,ID是由机器名称+进程ID+消息产生的时间戳组成,当请求消息经过网络到达服务端应用后,MOA框架在处理消息前会先用当前时间减去消息的产生时间,如果差值大于100毫秒则会记录该请求到慢请求文件中。正常请求下该文件几乎不会产生数据,但是最近多名业务侧同学反馈慢请求文件数据较多,导致TP90数据飙高,希望帮忙排查原因。

排查过程

是否是容器问题?

陌陌的应用层全部跑在Docker容器上,为了排查容器自身因素,将该服务的部分实例迁到了VM上,对比发现VM上的实例基本上没有慢请求日志,所有基本确定该问题跟Docker容器相关。

网络不稳?

2018-12-18 12:23:40,822 REQUEST: Command [id=xxxxxxx-kube-node-web-php-

198861545107020.6728, action=/service/xxxx-action-service, source=127.0.0.1, thread=, params={args=[ap6896299708], m=getXxxRecReadNum}]  ### waitedTime: 103 ms

对比消息产生时间和服务端接收到数据包时间可知消息传递的网络耗时几乎可忽略,排除网络不稳定带来的影响。

网卡到socket读缓存区慢了?

通过上面tcpdump结果来说,数据从网卡到ReveiveQ再到用户态获取数据这一个过程也是及时的,为了再次验证这个结论,运维同学通过systemtap工具在tcp_v4_do_rcv调用时,将skb的内容打印出来,并将调用时间打印出来,通过比较系统调用时间和skb中的消息时间比对发现基本一致。 

//probe kernel.statement("tcp_rcv_established@net/ipv4/t
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值