0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

分享一款适用于云原生的全栈持续性能监测工具

openEuler 来源:openEuler 2023-02-28 15:59 次阅读

对于开发及运维人员来讲,火焰图是一个经典的定位性能问题的方法。利用火焰图可以可视化系统资源(cpu占用、内存占用、调度、IO等)的占用情况,从而帮助技术人员快速定位资源异常使用的代码级根因,或者观察潜在性能劣化趋势,进而优化系统和应用的性能。

然而,现有流行的火焰图工具往往存在一个或多个局限性,实际应用场景比较有限。因此,openEuler上的开源项目A-Ops中的gala-ops系列组件提供了适用于云原生的全栈持续性能监测火焰图

传统火焰图在实际应用中的痛点

1.传统火焰图工具相对独立,难以对接第三方插件或集成到运维系统,在应用中需要有经验的开发人员手动结合其他调试工具分析定位。

2.由于开销较大,火焰图大多仅仅作为工具在开发和调试阶段被使用,不能在生产环境中常态化部署。所以对于更常见的场景——即实际生产环境中的突发性的性能问题,火焰图并不是定位问题的有效手段。

3.生产环境上中部署的应用类型错综复杂,语言纷繁多样,而且很多应用是会调用不同语言的模块。但是每种火焰图工具往往只针对单一类型的语言。即使同时部署了不同语言的火焰图观测工具,所生成的火焰图数据又难以统一,从系统角度难以观测不同语言应用的性能占比。

4.传统火焰图往往只能观测进程,线程粒度,是host时代的工具。对于云原生系统更关注的容器粒度,传统火焰图无法直观区分。

gala-ops火焰图的四大特性

1.易于部署和集成

gala-ops是针对云基础设施灰度故障的应用级/系统级在线诊断工具,火焰图探针stackprobe集成在其中的gala-gopher组件内。用户只需一键安装gala-gopher后,在配置文件中开启或关闭火焰图探针即可使用。具体的安装部署说明可参考gala-gopher文档。

c62d2d22-aa8c-11ed-bfe3-dac502259ad0.png

gala-ops火焰图默认会在本地生成svg格式的火焰图。另外它也支持pyroscope和grafana等第三方运维平台,仅需在配置文件中填上第三方插件的地址,火焰图探针程序就会定期自动将火焰图数据上传到远端以方便后续分析和实时监测。

以下是gala-ops cpu火焰图对接pyroscope和grafana的示例。通过选择特定时间段,可以查看到该时间段的火焰图,函数cpu占比排序,配合其他系统或应用指标可以很方便地发现和定位问题。

c63d88ac-aa8c-11ed-bfe3-dac502259ad0.png

2.容器支持

云原生系统中,应用以容器形式部署。传统火焰图中在进行系统级观测时,最多体现线程名称,若不同容器示例内线程名相同,则调用栈会合并在一起无法区分,影响后续定位定界。gala-ops火焰图探针能够自动识别本机中的pod和container,并在图里增加工作负载,容器和进程号信息

若进程为工作负载/容器内进程,则分别以[Pod]和[Con]前缀标记pod和container,进程以[]前缀标记。

效果图参见下一段附图,可见通过查看调用栈底部第一层,可以明显区分主机进程和容器进程。

3.全栈支持

gala-ops火焰图支持编译型和解释型语言的混合代码调用栈解析。目前已支持的语言包括C,C++,GO,Rust,JAVA。不同语言的应用,同一调用栈中不同语言的函数/方法,用户态和内核态,均可在同一火焰图中统一显示。而且使用gala-ops火焰图前不需要针对不同的语言做额外配置或重新部署应用,即开即用。

下图显示了一个实测生成的gala-ops cpu火焰图,以右侧的一个tomcat容器调用栈为例,从底层往顶层看调用关系:tomcat pod内包含一个container,containter中有一个pid为2434466的java进程,进程内cpu占用最多的是名为http-nio-8080-e的JVM线程,JVM调用了C库函数thread_native_entry,再往上进入了Java方法java.lang.Thread::run,然后经过一系列的Java方法调用,最终走到了ksys_write系统调用,然后进入内核态函数。

这样一个Java进程从k8s层->OS层->JVM底层实现->Java方法->内核态函数——完整的调用过程就可以通过gala-ops火焰图追溯到。

c64c6c78-aa8c-11ed-bfe3-dac502259ad0.png

4.低开销

gala-ops火焰图基于ebpf技术,精简堆栈采样逻辑,实现保持采样精度(cpu采样频率10ms)的同时对被观测应用性能影响很小(一般在1%左右)。因此,大规模生产环境中也可以持续开启gala-ops火焰图以实时观测应用性能,这样即使出现应用或系统故障,无需事后重现问题,通过gala-ops火焰图可以回溯以往任意时刻的系统状态。

我们测试了开关cpu火焰图对不同应用的性能影响:对于本身性能中等,吞吐量中等的应用,例如tomcat,tps劣化在1%以下;对于本身性能较高,吞吐量大的应用,例如kafka,tps劣化在2%以下。结果如下:

对比开关cpu火焰图探针对tomcat性能的影响:

c66b4742-aa8c-11ed-bfe3-dac502259ad0.png

对比开关cpu火焰图探针对kafka写入MQ消息性能的影响:

c67d4852-aa8c-11ed-bfe3-dac502259ad0.png

gala-ops火焰图具有易于部署和集成,容器支持,全栈支持,低开销等特性,使得开发者和维护者无论在开发环境还是生产环境均可通过火焰图的形式预测潜在问题和定位已发生问题。

功能的持续完善

目前gala-ops火焰图已经支持cpu占用,内存泄漏两种类型火焰图,后续还会加入对其他系统资源的观测,例如调度、网络IO、磁盘IO等。此外,对其他语言应用的支持也在持续开发中。







审核编辑:刘清

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • cpu
    cpu
    +关注

    关注

    68

    文章

    10548

    浏览量

    207671
  • JAVA
    +关注

    关注

    19

    文章

    2917

    浏览量

    103363
  • SVG
    SVG
    +关注

    关注

    0

    文章

    112

    浏览量

    16178
  • OPS
    OPS
    +关注

    关注

    0

    文章

    50

    浏览量

    18081

原文标题:A-Ops性能火焰图——适用于云原生的全栈持续性能监测工具

文章出处:【微信号:openEulercommunity,微信公众号:openEuler】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    把可持续性运营放在最前线

    洁净的化学品。这种方法令我们节省了大量的昂贵化学品,还减少了此工艺中产生的有害废物量,而且不影响产品质量。所有可持续性主意都在公司分享,任何业务据点都可仿效其他地方的主意和项目,如他们觉得适用的话。在
    发表于 10-26 08:53

    请问AD7124-8适用于地震勘探吗?求推荐一款适用于地质勘探的24位低功耗ADC

    帮忙推荐一款适用于海上地震勘探的24位低功耗ADC ,感谢!!!
    发表于 01-15 11:21

    同步工具适用于同步SRAM

    嗨,所有,我们已经提出了用于所有SRAM的结温度计算器工具,便于计算在SRAMs的最大结温。我已经附加了ZIP文件的结点温度计算器工具的beta版本。该异步
    发表于 02-13 12:06

    EVAL-AD7785EBZ是一款完整的模拟前端,适用于低频测量应用

    EVAL-AD7785EBZ,AD7785评估板,是一款低功耗,20位sigma-delta ADC。 AD7785是一款完整的模拟前端,适用于低频测量应用
    发表于 08-23 08:37

    EVAL-AD7718EB,是一款完整的模拟前端,适用于低频测量应用

    EVAL-AD7718EB,评估板使用AD7718,8 / 10通道,24位sigma delta模数转换器。 AD7718是一款完整的模拟前端,适用于低频测量应用。 AD7718经过工厂校准,因此
    发表于 09-16 10:42

    阿里云安全肖力:云原生安全构筑下代企业安全架构

    解决方案,分别适用于公共云和专有云,通过保障云平台之上业务系统和应用的关键代码和数据不被篡改,来确保系统和应用运行在个可信的状态,从根本上保障安全。目前已经在公共云有实践应用。数据安全是云平台立身之本
    发表于 09-29 15:15

    阿里云推出内部操作透明化服务 为用户提供数据保护体系

    与用户相关的操作日志对用户可见。阿里云还为用户提供了可靠的链路数据加密,且密钥仅为用户所有,并完全可控,进步保护用户数据安全。此外,阿里云还发布了基于云原生安全技术的云平台可信解决方案,分别
    发表于 09-29 15:27

    求大佬分享一款适用于激光及MRI的宽带LDMOS晶体管

    求大佬分享一款适用于激光及MRI的宽带LDMOS晶体管
    发表于 06-08 06:29

    一款适用于STM32的UI设计软件

    最近发现一款适用于STM32的UI设计软件,界面炫酷,操作方便,经过几天的摸索,终于将TouchGFX+STM32CubeMX+STM32CubeIDE创建项目工程的全过程走通。在安装
    发表于 08-04 07:00

    性能提升1倍,成本直降50%!基于龙蜥指令加速的下云原生网关

    Ingress,使用过程中遇到运维成本高、安全差、原生功能弱等痛点,期望能够找到一款替代产品;在接触 MSE 云原生网关后,在上线前的测试过程中对于 HTTPS 硬件加速功能非常认可,测试验证开启后的加速
    发表于 08-31 10:46

    只需 6 步,你就可以搭建云原生操作系统原型

    开发软件应用的种模式,也就是站在巨人的肩膀上,充分利用成熟稳定的云基础设施来开发、发布、运行和维护个应用,以保障我们应用的弹性、性能、容器、成本等诸多方面的诉求。 (图/龙蜥云原生
    发表于 09-15 14:01

    云原生应用中的“云”指的是什么?

    云原生应用是独立的小规模松散耦合服务的集合,旨在提供备受认可的业务价值,例如快速融合用户反馈以实现持续改进。简而言之,通过云原生应用开发,您可以加速构建新应用,优化现有应用并在云原生
    的头像 发表于 11-27 17:24 2015次阅读

    引领云原生2.0时代,赋能新云原生企业

    十年云计算浪潮下,DevOps、容器、微服务等技术飞速发展,云原生成为潮流。Forrester首席分析师戴鲲表示,云原生是企业数字化转型的基础,企业需要建立云原生优先的战略,构建一体化全栈云原
    的头像 发表于 12-11 16:04 1674次阅读

    解读腾讯云原生 鹅厂云原生的“新路”与“历承”

    在云计算产业中,云原生是一个长期讨论的“老话题”。而在今年新基建、产业数字化的宏观背景下,云原生的应用主体开始扩张,关于这条技术路径的讨论也重新火热了起来。 云原生突然“翻红”的原因,或许在于更多
    的头像 发表于 12-28 18:10 3342次阅读

    一款适用于红蓝对抗的演练工具Goblin介绍

    Goblin 是一款适用于红蓝对抗的演练工具。通过反向代理,可以在不影响用户操作的情况下无感知的获取用户的信息,或者诱导用户操作。
    的头像 发表于 11-01 09:06 1409次阅读