写点什么

【鲲鹏 DevKit 黑科技揭秘】│如何实现全链路系统问题 90% 精准诊断?

  • 2021 年 12 月 29 日
  • 本文字数:2271 字

    阅读完需:约 7 分钟

摘要:DevKit 系统诊断工具是鲲鹏性能分析工具的子工具之一,能够针对内存、网络、存储等常见故障和异常,提供精准定位和诊断能力,帮助用户识别出源代码中的问题点,提升程序的可靠性,故障定位准确率高达 90%。

 

你的电脑是不是很久没关机了?晚上下班不再关闭所有应用,合上笔记本就离开,第二天输入密码继续干活,不必再逐一查找处理了一半的文档和网页,长此以往,你是不是发现电脑越来越慢,闪退、反应迟钝,甚至忽然卡住、蓝屏?


其中很重要的因素,是因为长期频繁的读取新文件而不释放,会导致内存中缓存数据越来越多,当内存使用饱和之后,系统会将内存中的数据交换到硬盘中,此时如果要使用到这部分已经交换到硬盘上的数据,那么系统首先要把内存中最久远、没有使用的数据再做一次到硬盘的交换,腾出空间之后,才能把硬盘中需要使用的数据加载到内存,如此复杂的流程,运行速度当然会变慢。


上述问题在服务器中同样存在,内存作为计算机/服务器的重要部件,帮助 CPU 通过总线寻址实现对其他部件的读写操作,内存故障常常导致系统整体性能下降、运行故障、甚至宕机。比如程序在申请内存后,如果不及时释放已申请的内存空间,频繁累积就会形成内存泄露,导致内存被占光,触发 OOM(Out of Memory)。内存越界会带来数据读写错误的风险,如果读取了不属于自己的数据会造成程序崩溃,将数据写入其他程序则会造成不可预料的后果。除了内存问题,开发人员还会经常面临网络 IO 故障和存储问题,比如系统配置错误,会导致网络不通;系统处理数据包不及时,会导致丢包;另外,由于存储 IO 协议栈很长(涉及文件系统、块、设备等多层次的读写和映射),遇到慢盘等问题时很难定位具体是哪一层造成的访问变慢。


面对上述问题,我们应该如何定位和修复呢?当前业界有各种诊断工具,针对不同问题进行诊断,然而这些工具通常操作比较复杂、学习成本高、定位时间长,找到问题点之后,也无法针对具体问题给出建议快速排除故障。开发者亟需一款操作简便、定位精准的系统诊断工具来解决开发过程中经常遇到的“老大难”问题。


DevKit 系统诊断工具是鲲鹏性能分析工具的子工具之一,能够针对内存、网络、存储等常见故障和异常,提供精准定位和诊断能力,帮助用户识别出源代码中的问题点,提升程序的可靠性,故障定位准确率高达 90%。


Figure 1 功能全景图


内存诊断——快速识别内存泄漏和访问越界点


通过内存诊断能力,帮助用户识别应用程序中存在的内存使用的问题点,提升程序的可靠性,具体包括:内存泄漏诊断、内存越界诊断。


Figure 2 内存泄漏点及其调用关系


支持分析应用程序中存在的内存泄漏点,包括:内存未释放、内存异常释放等,得到具体的泄漏信息,并以调用树的形式展示出来。


Figure 3 泄漏点源代码


支持关联到内存泄漏点的源代码,精确定位到泄漏点所在的代码行。


Figure 4 内存消耗信息


支持跟踪应用程序运行期间系统层、应用层(调用内存申请函数)、分配器层的内存消耗情况,支持展示整个过程的汇总数据和时序数据。用户通过该信息可以了解应用程序在整个运行期间的内存变化情况,帮助定位未发现泄漏点但内存一直增加的问题。


Figure 5 OOM 事件信息


监测系统 OOM 事件,分析发生 OOM 时的进程内存状态、系统内存状态和调用栈信息。


Figure 6 内存访问越界信息


支持分析应用程序中存在的内存越界访问点,给出越界访问类型和内存访问信息,并支持关联出调用栈和源码。

网络 IO 诊断——识别网络最大能力、诊断丢包点


压测网络,获得网络最大能力,为网络 IO 性能优化提供基础参考数据;诊断网络,定位网络疑难问题,解决因网络配置和异常而导致的网络 IO 性能问题。具体包括:网络拨测、丢包诊断、网络抓包、系统负载监控。


Figure 7 连通性拨测结果


连通性拨测,基于 ICMP 协议测试网络连通性和时延,并根据网络 KPI 服务等级评估网络质量。针对网络不通的情况,给出排查建议。


Figure 8 TCP/UDP 拨测结果


TCP/UCD 拨测,基于 TCP 协议测试网络带宽和重传,基于 UDP 协议测试网络丢包和抖动,并根据网络 KPI 服务等级评估网络质量。针对测试失败的情况,给出排查建议。


Figure 9 丢包信息及其排查建议


诊断网络丢包点,定位网络丢包根因,给出修复建议。


Figure 10 网络抓包结果


支持网络抓包,辅助网络拨测和丢包诊断,根据抓取的网络消息包定位网络异常根因。

       

支持在诊断期间监控系统负载,包括:CPU、内存、网络 IO、软硬件中断等,以此了解在网络拨测或发生网络丢包时,是否存在系统资源不足。

存储 IO 诊断——识别存储最大能力


由于存储设备在不同的业务场景下性能表现差异很大,例如:OLTP 数据库每次 IO 是小块随机的,而 OLAP 数据库每次 IO 是大块顺序的,在相同的存储配置下,能够达到最大性能是相差很大的;如何识别,在不同业务场景下,存储 IO 能够达到的最大性能?


针对这个问题,DevKit 系统诊断工具在 2021 年底将推出存储 IO 诊断功能,该功能能够按照一定业务的存储测试模型压测存储设备或文件,获取反映存储 IO 性能的吞吐量、IOPS、时延等指标,得到存储设备的最大能力,并以此评估存储能力,为存储 IO 性能优化提供基础参考数据。


Figure 11 存储 IO 压测结果


鲲鹏开发套件 DevKit 是面向开发者研发全作业流程的一站式开发套件,从 2019 年推出至今,提供了覆盖代码开发、迁移、编译、测试、调优、诊断等研发全作业流程的工具集,助力开发者极简开发。为了便于广大开发者们更加真实的体验、使用上述功能,DevKit 还提供远程实验室,一站式预装 DevKit 开发环境,申请即可免费试用。


扫描免费申请试用

此外,想要了解更多关于 DevKit 的强大的功能,欢迎各位开发者访问 DevKit 专区。


上 DevKit 专区,了解更多


点击关注,第一时间了解华为云新鲜技术~

发布于: 刚刚
用户头像

提供全面深入的云计算技术干货 2020.07.14 加入

华为云开发者社区,提供全面深入的云计算前景分析、丰富的技术干货、程序样例,分享华为云前沿资讯动态,方便开发者快速成长与发展,欢迎提问、互动,多方位了解云计算! 传送门:https://bbs.huaweicloud.com/

评论

发布
暂无评论
【鲲鹏 DevKit黑科技揭秘】│如何实现全链路系统问题90%精准诊断?