skywalking 1.0-Final,如何追踪阻塞的调用?

       最近关注skywalking的爱好者们会发现,skywalking一直处于重构和编译失败的状态。这次专门发表这边文章,解释这次重构的原因。

       针对APM的应用监控,我们一般关注一下几个维度:

  • 应用出错的异常点
  • 应用调用速度缓慢的原因
  • 应用各程序内部调用的时间分布情况、TPS
  • 应用性能JVM相关参数和性能相关性
  • 应用性能改进的目标和建议

        这次的改造,主要针对第二点中,应用速度缓慢的问题。skywalking之前的版本,包括现在国内主流的APM厂商,都是采用在调用链入口调用结束后,组装JVM内的调用树结构,发送到服务端。这种方式有利于组装数据,但是如果出现线程竞争阻塞、死锁,或者超长任务拖慢集群性能的时候,发送时间要远远晚于实际问题的发生时间。

        我们采用全新的策略

  1. 保持原有的单个埋点进行单独发送的特性,即单个Span可以独立发送。
  2. 原有的一个埋点发送一次的策略,修改为埋点执行前(RequestSpan)和执行后(AckSpan)各发送一次。

        此时监控程序、或者skywalking的扩展程序,可以快速的识别,Span的Request和Ack的配对情况,如果Ack长时间的无法到达,已形成配对,则说明当前埋点出现了超长时间的阻塞性事务,需要关注和告警。

        此时,监控告警程序,需要在特定时间窗口内,缓存RequestSapn,已期待Ack的配对情况。这里会消耗大量的内存,目前没有特别好的方法,目前是期待快速的匹配和清除缓存的模式,提高性能。

        

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值