通过比较请求流诊断性能变化

Fireknight.tech 个人博客,欢迎访问,CSDN不定期更新

  • 总结

    • 比较两次执行(系统修改前后)的请求流(时间、结构体)发现问题;对时间方面,使用假设检验,检查某种分类的时间分布是否和之前一致,从而判断是否一致。对于结构,寻找变异及其对应的前体,来发现性能改变

    • 设计的算法可以确定和排序请求流/时间中的改变

    • 工具 Spectroscope

    • 假设背景:我们的技术假设性能变化是由系统变化引起的(代码变化、配置变化等)。需要对比变化前后系统的执行来进行前体/编译的区分。

      • 可否应用于性能问题?[Q]
    • 定义两种突变情形

      • 响应时间突变
      • 结构体突变
    • 执行过程

      • 分组(聚类)
      • 区分突变和前体(KS和阈值)
      • 突变和前体关联
      • 排序
      • 定位low-level difference
    • 相比TPROF,

      • 都是聚类分组算法,聚类分组才能比较,

        • TPROF有多种聚合层次,多了一个subspan,剩下的就是时间和结构体
        • 本文分为时间和结构体
        • TPROF如何分类前体和突变[Q]
      • 本文提出了low-level参数

  • 1. Intro

    • 性能变化通常表现为请求服务的变化

      • 突变 - 问题期间新的请求流
      • 前体
    • 主要工作

      • 识别突变,根据贡献度排序,高亮最显著的分歧,定义最有可能导致问题的low-level参数
    • 突变分类

      • 响应时间突变:结构相同,响应时间不同
      • 结构突变:不同路径,需要找到其原请求流然后定位根因
  • 3. 行为改变和异常检测

    • 本文注重两个时间段进行比较
    • 异常检测(pinpoint)注重于找到一个集合中异常的部分
  • 4. Spectroscope

    • 4.1 分组

      • 按照结构分组(也就是字符串遍历,DFS)

      • 结构分组依据依据:

        • 类似的path会有相同的cost
        • 结构相同,字符串遍历相同
      • 对每个分类统计请求数、平均响应时间、方差,边缘延时及其方差

      • 聚类算法的优缺点

        • 聚类算法用来减少分出来类别的数量,减少开发者需要查看的类型。直接用的聚类会把突变前体(新版本中有两者)分到一起,掩盖了突变的存在
        • 无监督聚类算法 – Magpie
    • 4.2 比较请求流

      • 输入:有问题阶段和无问题阶段
        使用统计测试和启发式来识别哪些包含结构突变、响应时间的突变或前体。
  • 5. 算法 - 比较请求流

    • 5.1 区分时间突变

      • KS假设检验 - 系统更改前后两个时间段,对于相同的结构,假设检验后时间段是否和前一个时间段相同
      • 非问题期和问题期作为输入;如果测试拒绝假设,则标记为包含响应时间突变
      • 为了识别导致突变的组件或者交互,spectropscope提取critical path-最长时间路径,在此path的edge上也运行假设检验
    • 5.2 区分结构突变

      • 系统在改变前后的请求数类似,则,一个请求数量(在错误阶段)的增加对应着别的请求的减少(采用别的边的请求)。一个分类的请求本身数量也会抖动,所以采用一个阈值。
      • 阈值 – Spectroscope假设在非问题期和问题期运行类似的工作负载。因此,可以合理地预期,在问题期间,通过分布式系统的一条路径的请求数量的增加,应该对应于通过其他路径的请求数量的减少
      • 问题期间的分类,相比非问题之间的分类,如果包含更多的SM_THRESHOLD请求,则标记为突变,包含更少SM_THRESHOLD标记为包含前体(相同请求?相同根节点?)
    • 5.3 前体和突变对应(只有结构突变才有这种对应)

      • 根节点一致

      • 数量限制

        • 剩余前体的请求数量减少 少于 结构突变请求数量增加(根节点一致为前提,且数量变化异常),就删除这个前体
        • 一个前体贡献若干变异,变异的请求数量增加少于前体请求数量减少,排除
      • 字符距离

    • 5.4 排序

      • 权重:突变时间差*数量
      • 如果有多个前体,则使用平均时间加权来排序
    • 5.5 寻找low-level difference

      • 识别突变前后的参数差异,来定位问题
    • 5.6 缺陷

      • 不适用于争用导致的问题
      • 对于不同的负载导致的变化,必须由开发人员确定是否是正常的(不用管)
  • 7. 处理高方差

    • 假设前提是相同时间对应相同路径,所以高方差不可。
  • 8.2 注意:比较一个东西加入前后的差异,得知道前后

NSDI11-Spectroscope-Diagnosing performance changes by comparing request flows相关推荐

  1. Unity性能优化(2)-官方教程Diagnosing performance problems using the Profiler window翻译

    http://www.cnblogs.com/alan777/p/6135703.html Unity性能优化(2)-官方教程Diagnosing performance problems using ...

  2. 基于多源数据画像的失败用例智能分析

    摘要:云原生分布式系统和DevOps开发模式下微服务上线节奏快,按周/按天/按需发布,失败用例的定位分析耗时达数小时或数天,无法满足快速质量反馈的诉求. 本文分享自华为云社区<华为云基于多源数据 ...

  3. Use Data Caching Techniques to Boost Performance and Ensure Synchronization(转)

    原文地址 Level of Difficulty 1 2 3 SUMMARY Performance is an important concern for any application, but ...

  4. 【阅读】A Comprehensive Survey on Distributed Training of Graph Neural Networks——翻译

    转载请注明出处:小锋学长生活大爆炸[xfxuezhang.cn] (本文中,涉及到公式部分的翻译不准确,请看对应原文.) 另一篇:[阅读]Distributed Graph Neural Networ ...

  5. 12c expdp ORA-31623 -又遇到BUG

    一.环境描述 12.1.0.2 RAC 二.详细过程 昨天做了一个12c RAC环境的expdp备份操作,结果出现报错,查看了官网竟然是BUG. 1.报错信息 UDE-31623: operation ...

  6. (转)使用 db2pd 命令进行监视和故障诊断

    原文:https://www.ibm.com/support/knowledgecenter/zh/SSEPGG_9.7.0/com.ibm.db2.luw.admin.trb.doc/doc/c00 ...

  7. Corda ledger技术性白皮书原文和翻译

    这次是跟着白皮书贴一点就翻译一点. Abstract A decentralised database with minimal trust between nodes would allow for ...

  8. azure多功能成像好用吗_如何使用Azure功能处理高吞吐量消息

    azure多功能成像好用吗 Authored with Steef-Jan Wiggers, Azure MVP. 由Azure MVP Steef-Jan Wiggers撰写. With Micro ...

  9. 10步骤优化SQL Server 数据库性能

    作者从基础的数据库索引开始全面讲述了SQL Server数据库应用程序的性能优化,包括数据库设计和数据访问代码.系列文章如下: Top 10 steps to optimize data access ...

最新文章

  1. go--基本数据类型
  2. 推荐30个用于微服务的顶级工具
  3. 5脚12v继电器接线图解_【电器元件002】你真的懂汽车继电器么
  4. html 字符串最后加空格,js给字符串每个字符中间加空格
  5. sql获取某列出现频次最多的值_那些SQL里面踩过的坑
  6. 编写有效用例_阅读笔记03
  7. 简单的 socket 代码
  8. SQL数据库有密码的话,就会弹出那个对话框
  9. TiDB 源码阅读系列文章(二十)Table Partition
  10. HTML5代码雨程序
  11. 集合中某几个数字之和等于一个固定值 java
  12. html5锥形,Three.js HTML5 3D开发实例 - 彩色圆锥体
  13. 以下对python程序设计风格_以下对 Python 程序设计风格描述正确的选项是( )
  14. 详细介绍,驱动IC的功能和作用
  15. 人人都能学会的英语5:读写
  16. 5G+智慧文旅解决方案
  17. 2020-08-15 java 8 LocalDateTime 20 例(有更新)
  18. Java 类加载机制
  19. 各大厂商手机设置程序后台运行
  20. 人狼羊菜问题的简单实现

热门文章

  1. Mybatis 面试常问问题总结(附答案)
  2. java8 判断文件是否存在_java8 的files、path类相关文件遍历API
  3. 小企鹅输入法的安装(fcitx)
  4. 5款非常看好的电脑软件
  5. 汽车产业链SCP分析框架-湖北
  6. 大数据的后台分析模式
  7. sysstat 安装
  8. 无盘服务器读写盘设置,无盘服务器读写盘设置
  9. IJCAI 2018 阿里妈妈广告预测算法大赛
  10. NI myRIO密码重置