电脑桌面
添加蚂蚁七词文库到电脑桌面
安装后可以在桌面快捷访问

性能诊断-Monitor 7大新特性,助你效率起飞

来源:金蝶云社区作者:金蝶2024-09-237

性能诊断-Monitor 7大新特性,助你效率起飞

你是否还在苦苦思索如何观察集群所有实例CPU的实时负载

你是否在烦恼系统卡顿堵塞的原因是什么?

你是否为查看慢SQL束手无策?

你是否在为无法监控数据库发愁?

你是否希望有工具能够快速分析锁竞争

为了解决性能问题,太多烦恼了...

能为您排忧解难是Monitor最快乐的事~

这不,Monitor又一次性发布7大新特性,帮您快速定位性能根因,释放焦躁与压力




适用版本


金蝶云·苍穹V6.0.1及以上


特性简介


Monitor 作为产品性能优化的一个主要工具,可以提高产品可用性,其效率就是效益。

在V6.0.1版本中,Monitor 围绕性能定位效率问题,进一步提供以下功能:集群TOP监控、火焰图新增调用耗时和锁火焰图、组件性能检测、日志组件检测、告警增强、SQL实时快照、集成第三方工具PMM监控数据库。


特性详情


接下来小编将以新特性为纲,结合使用示例带你一步步上手。


1. 集群TOP监控新特性


  • 特性价值:批量监控集群所有实例CPU实时使用情况。

  • 操作入口:【集群监控】->【TOP监控】。

  • 使用示例:在系统卡顿时,观察集群所有实例CPU负载状况,定位出CPU用量较高的实例,进一步分析是什么线程引起CPU使用异常。


上传图片

集群TOP监控图


如上图,左侧为集群所有实例列表,每个实例的TOP监控信息分为以下3个部分:

  • 宿主机信息:显示宿主机的CPU数量、CPU最近平均负载情况、CPU用量等。

  • JAVA线程实时监控:显示CPU使用TOP5的线程,包括线程内存、CPU、任务类型等。

  • JAVA进程快照:显示最近5次JVM进程内存、CPU用量详情。

通过上图,我们可以很快发现集群所有节点当前状态CPU用量并不高,但过去一段时间CPU平均负载比较高,基本断定应该会卡在阻塞等待上,结合下面介绍的特性还可以进一步分析。


2. 调用耗时火焰图新特性


  • 特性价值:用于生成除CPU耗时外包含IO耗时、网络耗时的火焰图,用于分析由于IO、网络阻塞导致的性能下降问题,可以更全面地分析系统性能瓶颈,帮助开发人员和系统管理员理解在CPU等待时发生的事情,以便更好地优化性能。

    详细概念请参考文档:https://www.brendangregg.com/FlameGraphs/offcpuflamegraphs.html

  • 操作入口:【性能治理】->【火焰图】,生成火焰图类型选择【调用耗时】。

  • 使用示例:结合上面步骤,通过“调用耗时火焰图继续分析服务实例阻塞等待情况。


上传图片

生成“调用耗时火焰图


如上图生成生成“调用耗时火焰图,结果如下图所示:


上传图片

调用耗时火焰图


通过“调用耗时火焰图,很直观地看到线程阻塞主要发生在与PG数据库通信网络的等待上,这说明执行的SQL较慢,只分析网络等待还不全面,应该继续分析是否有锁阻塞。


3. Lock火焰图新特性


  • 特性价值:Lock火焰图用来更深入地分析锁的使用情况。Lock火焰图显示哪些线程或进程在使用锁,哪些锁被频繁竞争,以及锁的等待时间。建议优先通过“调用耗时”火焰图分析确定存在锁竞争或锁等待再生成“Lock”火焰图深入分析。

  • 操作入口:【性能治理】->【火焰图】,生成火焰图类型选择“Lock”。

  • 使用示例:结合上面步骤,使用“锁火焰图”继续分析锁情况,同样先生成“锁火焰图”。


上传图片

生成火焰图


上传图片

火焰图


锁火焰图直观反应,3个线程存在锁竞争。进一步分析发下,代码SetQueue中存在对ReentrantLock的竞争使用,根据分析结果可以针对锁竞争进一步代码优化。

但是锁竞争整体时间占用较低1%左右,主要还是卡在执行SQL上。目前定位到SQL层面的问题,针对SQL做进一步分析。


4. 数据库SQL实时快照新特性


  • 特性价值:一键排查集群中所有数据中心的慢SQL,支持下载,提高定位业务中慢SQL的效率,支持MySQL、Postgresql、Oracle数据库。

  • 操作入口:【性能治理】->【SQL实时快照】。

  • 使用示例:结合上面步骤使用SQL实时快照继续分析SQL执行情况,查询执行大于10秒的所有SQL。


上传图片

SQL实时快照图


如上图,可以同时查询多个数据库正在执行的慢SQL,SQL执行非常耗时,至此我们可以明确,性能慢的主要原因是这些慢SQL导致的,相比分别去每个数据库主机排查,效率提升明显。


在SQL实时快照查询中,每个SQL主要包含2个部分。

  • 标题:包含数据库schema和其所属的主机IP以及发起调用的TraceID。

  • 详情:包括SQL在数据库中已执行时长、数据库类型,以及SQL对应的原生状态类型和状态值。状态显示具体数据库原生名称,分别如下:

    • MySQL显示为status及对应的值,如staus:sending data

    • Postgresql显示为wait_event及对应的值,如wait_event:buffer_io

    • Oracle显示为event及对应的值,如event:row lock contention


分析到这里是不是感觉还是不透彻,SQL执行这么慢,数据库到底处于一种什么状态?我们继续深入分析。


5. 集成第三方监控工具PMM新特性


PMM(Percona Monitoring and Managemen)提供非常友好的监控分析页面,尤其数据库监控功能可以帮助数据库管理员实时监控数据库性能、执行查询分析、诊断问题和优化性能

V6.0.1 Monitor配置集成PMM监控功能页面,PMM服务端和Agent需要运维人员自己安装,安装方法请参考官网说明。


  • 特性价值:支持可视化界面快速查看数据库CPU、IO、内存、网络等指标;支持查看SQL的负载、平均耗时、QPS等状态;支持查看SQL执行计划,定位慢SQL根因等,完善数控层定位问题能力,提高系统故障排除效率。

  • 操作入口:【第三方工具】->【PMM】。

  • 使用示例:结合上面步骤使用PMM继续深入分析数据库指标,参考入口打开PMM首页。


上传图片

PMM主页图


如上图,主页主要显示硬件指标详情,便于快速掌握数据库主机的性能。

从监控图示例看,最近15分钟CPU、网络、磁盘都在持续增加,但是可用内存持续下降并且一度接近10%以下,因此从上面监控图可以看出数据库主机内存资源严重不足。我们继续分析数据库自身指标,排查原因,打开数据库实例监控面板,操作方式及监控指标如下图:


上传图片

打开数据库实例操作方式图


上传图片

最大事务耗时监控图


最大事务持续增加达到将近13秒,进一步打开SQL负载分析页面,如下图:


上传图片

SQL负载及平均耗时图


从监控图可以看到,第一条SQL最近15分钟平均耗时接近4秒,查询时间就用了将近3秒,进一步可以通过“Plan”页签查看执行计划,以深入分析根因。

分析到这一步,性能根因已经很明确,大量执行一个平均耗时4秒的慢SQL,使数据库主机CPU接近60%,内存使用接近90%产生严重的性能问题,进而导致服务阻塞严重,同时验证了前面通过“调用耗时”火焰图分析的结论,大部分时间用在网络等待。


6.

性能诊断-Monitor 7大新特性,助你效率起飞

你是否还在苦苦思索如何观察集群所有实例CPU的实时负载?你是否在烦恼系统卡顿堵塞的原因是什么?你是否为查看慢SQL束手无策?你是否在为无...
点击下载文档文档为doc格式

声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。如若本站内容侵犯了原著者的合法权益,可联系本站删除。

确认删除?
回到顶部
客服QQ
  • 客服QQ点击这里给我发消息
QQ群
  • 答案:my7c点击这里加入QQ群
支持邮箱
微信
  • 微信