• Skywalking性能剖析


    简介
    在系统性能监控方法上,Skywalking 提出了代码级性能剖析这种在线诊断方法。这种方法基于一个高级语言编程模型共性,即使再复杂的系统,再复杂的业务逻辑,都是基于线程去进行执行的,而且多数逻辑是在单个线程状态下执行的。
    代码级性能剖析就是利用方法栈快照,并对方法执行情况进行分析和汇总。并结合有限的分布式追踪 span 上下文,对代码执行速度进行估算。
    优势
    1. 精确的问题定位,直接到代码方法和代码行
    2. 无需反复的增删埋点,大大减少了人力开发成本
    3. 不用承担过多埋点对目标系统和监控系统的压力和性能风险
    4. 按需使用,平时对系统无消耗,使用时的消耗稳定可能
    执行流程:
    agent端每隔20秒向服务端发起请求,来向服务端询问本agent是否有分析任务,如果接受到这个任务之后,就会在当前时间或者将来的某个时间开始监控操作。在服务端如果已经感知到agent端已经知道这个任务的时候,在profile页面的任务详情中,点开任务详情的页面,在弹出框的下方会展示一条日志:包括:实例信息、操作类型、操作时间等。
    0
    使用步骤
    使用工程
    Live-Demo 工程中 projectB 项目
    修改 DatabaseOperateDao#selectUser 方法,设置一个4s的睡眠
    0
    在skywalking中新建任务
    监控 /projectB/1234 端点,持续5分钟
    需要注意的点
    • 一个服务在监控持续时间内只能设置一个端点监控任务
    源码逻辑入口
    org.apache.skywalking.oap.server.core.profile.ProfileTaskMutationService``#checkDataSuccess
    0
    • 剖析端点的响应时间必须大于监控间隔时间
    由于性能栈快照有一定的性能消耗,所以采集周期不宜过密,SkyWalking 目前不支持小于 10ms 的采集间隔。所以如果问题方法执行时间小于 10ms,此方法并不适用。同时剖析端点的响应速度如果小于监控时间间隔,也无法进行监控采集。
    发送请求
    curl http://localhost:8764/projectB/1234
    查看剖析结果
    0
    上图所示的就是链路追踪时的真实执行情况,表格中从左到右分别展示了方法名、开始时间、执行时长、执行时间占比、API类型、服务名和跨度信息。其中可以看到前面设置了4s睡眠的 selectUser 方法执行速度最慢。再点击分析按钮,可以查看对应方法的调用栈。
    0
     
    从左右到右分别展示了栈帧名称、该栈帧总计耗时(包含其下面所有自栈帧)、当前栈帧自身耗时和监控次数
    继续向下查找可以发现 selectUser 的栈桢信息,从这里可以看到方法是真正卡在了线程睡眠逻辑中
    0
    参考:https://blog.csdn.net/wb4927598/article/details/119192538
  • 相关阅读:
    线阵相机、镜头及光源的选型
    查看mysql数据库容量大小
    mysql 表分区操作
    VC++ 全局变量定义
    sql按半小时统计
    sqlserver/mysql按天、按小时、按分钟统计连续时间段数据
    相机光学 接圈
    Excel中如何锁定部分单元格内容不被修改?
    VC++ 捕获不了异常
    mysql 数据库存储路径更改
  • 原文地址:https://www.cnblogs.com/duanxz/p/15619337.html
Copyright © 2020-2023  润新知