文章源地址

https://naver.github.io/pinpoint/techdetail.html#optimizing-performance-of-the-pinpoint-agent

pinpoint agent 的性能优化

最后我们将介绍怎样去优化pinpoint的agent

用二进制的格式(Thrift)

你可以使用二进制的格式化(Thrift)提升转码速度,尽管这是比较难用和调试的,这可以通过减少数据产生的量从而提升网络带宽使用的效率;

使用可变长度转码和格式化来优化上报的记录数据

如果你转换一个long型的整数成为string,数据的大小将是8bytes,然而,如果你用可变长度的转码,数据长度取决于当前数字,将变为1-10bytes.为了减少数据的大小,pinpoint使用thrift的Compact Protocol方法优化记录数据的转码来减少数据大小;pinpoint agent通过将根方法的剩余时间转换为向量值来减少数据的大小.

可变长度转码

在google 开发者"Base 128 Varints"查看更多的可变长度转码,

图形4 :比较等长的转码和可变长度的转码

如图4所示,不同的方法调用和完成,你需要测量6个不同的时间点;使用等长的转码,程序需要48bytes(6点*8bytes)

同时,pinpoint agent使用可变长度的转码,记录的数据使用相应的格式转化,基于根方法的开始时间,在其他节点计算不同的时间信息(向量值),因为向量值是一个小的数字,使用13bytes而不是48bytes,仅仅消耗一个小的资源.

如果消耗更多的时间执行方法,他讲增加数字消耗bytes的长度,尽管如此,他仍旧比等长的转码更有效率;

用常量表替换重复的API信息,sqls和String

我们想要pinpoint能够实现代码级的追踪,然而,这存在术语增长数据大小的问题,由于这个术语,每一次发送数据到服务端都有一个很高带宽消耗.

为了解决这个问题,我们采用了在远程hbase服务端常量话的存储策略,因为每次都发送"method A"到pinpoint的collector将会超载,pinpoint agent转换"method A"为一个持久化在HBase里的ID,当用户在网站检索的时候,pinpoint web通过搜索Hbase中类似的ID来整理这个追踪,这种方法同样适用于减少频繁适用的sql语句的数据量;

处理大量的采样数据

线上的请求量是非常大的,一个服务每天处理超过200亿的请求.扩展网络带宽是一个简单的方式去适配这么大的请求量,但是,这是最消耗性能的解决方法.

在pinpoint中,你可以收集抽样的数据,而不是追踪每个请求.在开发环境请求比较少,所有数据都被收集.在生产环境中请求量非常大,仅仅1-5%的请求就足以分析整个应用的状态,使用采样的方法,你可以最少使用网络带宽和消耗服务器资源.

Pinpoint的采样方法

pinpoint支持计数采样器,如果设置为10将只采集10个请求中的1个,我们计划增加新的更高效的采样器

使用异步的最小化应用线程数传递数据

pinpoint在转码数据和提交远程消息的时候不会影响应用线程,而是使用其他线程.

通过udp传递数据

和google的Dapper不同,Pinpoint传递数据通过网络确保传输速度.当网络流量大的时候传输数据会成为一个问题.在这些解决方案中,pinpoint agent使用udp的方式确保服务不受影响.

注意

数据转换的Api可以被替换成一个接口.也可以被转换成一个其他方式的实现,比如说本地文件.

pinpoint agent性能优化方面官方文档翻译相关推荐

  1. Unity3D性能优化——工具篇

    Quote from:https://zhuanlan.zhihu.com/p/39529241 性能优化是游戏项目开发中一个重要且必须的元素.用户和项目的需求在并且会持续增长.而即便在硬件设备高速发 ...

  2. [官方] mysql 性能优化文档(中英文自译)

    大家好,我是烤鸭: 根据官方文档翻译并精简部分内容.建议有时间的朋友下载原版查看,全文106页pdf,快的话1-2天就能看完.自己翻译的有些地方可能不完整,欢迎指正. 官方pdf下载,需登录: htt ...

  3. Android性能优化系列 + Android官方培训课程中文版

    Android性能优化典范 - 第6季 http://hukai.me/android-performance-patterns-season-6/ Android性能优化典范 - 第5季 http: ...

  4. luajit官方性能优化指南和注解

    luajit是目前最快的脚本语言之一,不过深入使用就很快会发现,要把这个语言用到像宣称那样高性能,并不是那么容易.实际使用的时候往往会发现,刚开始写的一些小test case性能非常好,经常毫秒级就算 ...

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

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

  6. Google官方 详解 Android 性能优化【史诗巨著之内存篇】

    尊重博主原创,如需转载,请附上本文链接http://blog.csdn.net/chivalrousman/article/details/51553114#t16 为什么关注性能 对于一款APP,用 ...

  7. zabbix性能优化

    一.Zabbix简介 1.1 Zabbix简介 官方网站:http://www.zabbix.com.Zabbix通过C/S模式采集数据,通过B/S模式在web端展示和配置. 1.2 Zabbix功能 ...

  8. 记一次提升18倍的性能优化

    ‍ 背景 最近负责的一个自研的 Dubbo 注册中心经常收到 CPU 使用率的告警,于是进行了一波优化,效果还不错,于是打算分享下思考.优化过程,希望对大家有一些帮助. 自研 Dubbo 注册中心是个 ...

  9. 性能优化之内存泄露(Memory Leak)常用分析工具(另3种)

    1 LeakCanary(最常用,能监控整个App内存泄漏情况) 1.1 使用LeakCanary // 仅在debug包启用LeakCanary debugImplementation 'com.s ...

最新文章

  1. 数据挖掘如何分箱以及如何对每个箱子中的数据进行平滑处理
  2. 雅客EXCEL(4)-录入数据、超链接阻断、下拉菜单、横列转数列、alt+向下方向键、定位公式
  3. 结对开发——环形一维数组求最大子数组和
  4. 基于verilog贪吃蛇游戏设计
  5. iOS 第五期考核题(字典与数组嵌套,字典的排序/删除)
  6. Revit二次开发示例:HelloRevit
  7. spring MVC 项目 WEB-INF下的jsp不能加载css文件
  8. 记一个有趣的Java OOM!
  9. Halcon 多个点拟合圆
  10. 写弹窗时防止底层滚动
  11. Android之四大组件、六大布局、五大存储
  12. 软件质量需要静态代码分析和动态测试
  13. 计算机网络专业就业压力,网络工程专业就业形势研究
  14. Jetson Nano开发实录
  15. 双目视觉三维重建框架
  16. 免费微信小程序,发一发打造微信小程序Saas营销服务移动工具箱
  17. mac下载、破解、安装webstorm编辑器
  18. 第一单元测试问星卷计算机,【第一单元综合测试卷测量】第一单元综合测试卷答案...
  19. python读取excel【二】,循环行与列对应数据
  20. 基于JSP + Servlet + Mysql 的校园二手交易平台(源码 + 文档)

热门文章

  1. android ble 大小,Android BLE中传输数据的最大长度怎么破
  2. 【Python-2.7】大小写转换函数
  3. Python UnicodeEncodeError: ‘gbk‘ codec can‘t encode character 解决方法
  4. ORA-01034:ORACLE not available问题的解决方法
  5. IDEA编译时出现“cannot resolve symbol“的问题时的解决方法。
  6. 国际化android
  7. php 音频上传大小限制,WordPress最大上传文件大小限制修改 | Stay Curious
  8. python 加速方法_24种方法加速你的Python
  9. python http请求_python模拟http请求
  10. html背景颜色白色半透明,HTML – 背景颜色:透明意味着什么?