作者:云智慧 Kevin Kong & Allen Zhang
企业IT部门在进行互联网/移动应用功能优化过程中最大的痛点在于,明明知道应用存在问题,却难于准确定位具体问题点并快速制定有效的解决方案,此时企业最需要有一套全栈应用性能监控、管理工具。透视宝是云智慧推出的新一代面向业务的端到端应用性能管理(APM)平台,针对移动和Web应用,提供全面的性能监控、分析与管理解决方案,本文将重点描述透视宝在优化云智慧旗下网络监控产品——监控宝API监控过程中起到的关键作用。
一、监控宝API监控遇到的问题
监控宝API监控用于对企业内部自有API及第三方数据接口的正确性、可用性与耗时分析进行即时监控、告警,为接口服务提供有效的质量保障。由于越来越多的云智慧客户因为业务的需要,大量使用API实现事务, API监控的需求呈指数级增长,造成了监控宝相关模块线上告警处理任务队列的堆积问题,具体表现为:告警处理信息消费队列严重堆积,高峰时达到几十万条告警任务等待被消费,造成了告警延迟。
API监控研发人员首先判断是程序代码的Bug,于是将可能造成信息消费队列瓶颈的相关代码梳理了一遍,初步判断可能是以下几点原因造成的:
1.告警消费线程只有20个,存在消费能力不足的问题;
2.在消费线程中有数据库访问操作,影响了消耗性能;
3.程序日志文件中出现大量无法获得数据库连接、数据类型转换错误等日志信息,影响告警逻辑的处理效率;
二、为什么选择“透视宝”
由于缺少足够证据证明上述判断,所以透视宝团队虽然在代码层面进行了针对性的优化,并且模拟了大数据并发的处理场景,但仍然没有真正解决线上产品的问题。
为了快速排查问题,平台开发组提出在线下建立与线上“一比一”的应用环境(包括:操作系统,数据库的配置、结构、数据、应用程序),用透视宝实现该环境的监控和分析,从操作系统资源使用、数据请求访问情况、数据库运行状况、应用系统错误记录等多个方面入手。同时在线上环境也安装一套透视宝,以便于对于同类监控数据的对比、分析、排查问题。
三、“透视宝”解决问题的过程分析
(一)首先,看一下线上透视宝监控分析内容:
1、运行环境总体情况
从这个页面可以看到,API监控整体运行情况非常慢,错误非常多,数据库请求时间比较长。
2、数据请求访问情况
从这个页面可以看到不同监测点请求调度器的请求数量和平均响应时间,根据请求、响应时间、请求数量进行排序,可以看到最大平均响应时间和最小平均响应时间。API监控研发人员在看到这个数据的时候被震惊了,平均响应时间有几秒钟,肯定是在数据请求的时候出现了问题。于是仔细查看这部分代码,发现有大量的数据库读、更新、写的操作,并且非常频繁,怀疑是数据库范文遇到了瓶颈。
3、数据库服务运行情况
接下来透视宝提供的数据库监控分析服务,明确地告诉我们的确是这个方面的问题。从这个页面可以很直观的看到不同数据库表上的不同操作的响应时间,在2000ms以上的响应时间占据了大部分,说明数据库读写有严重问题。查看上面提示的库表结构,发现很多库表一个索引都没有,而且查询非常频繁,不仅后端Java要查,前端PHP也要查。
4、线上错误总体分析
上面的图表展现的是应用程序错误信息的总体情况,下面是错误信息发生的外部事务,返回的状态码,错误的发生次数,以及第一次和最后一次的发生时间,能够清楚地看到不同类型错误的发生频率。
(二)问题解决之后的对比:
1、数据访问情况
这个图可以看到,从8月10日下午2点开始,监测点请求调度器的平均最大时间由5秒钟变成了39毫秒,由于响应时间的降低,请求数也从不到20万提升到25万以上。监控宝研发人员在看到这个数据的时候,第一反应是认为程序出现问题了,后来证实完全没有问题,透视宝给了我们一个非常直观、便捷的反馈信息。
2、数据库服务运行状况对比:
数据库性能,同样经历了从波涛汹涌到风平浪静的过程。这要归功于透视宝提供的数据库表以及操作问题,研发人员进行了针对性的解决,才有了如此高的数据库访问性能的提升。
3、应用程序错误总体情况对比:
根据透视宝的分析结果,对出错频繁的操作进行针对性优化,错误数和异常数大大降低。
四、总结:“透视宝”的功能强大、简洁易用
在解决API监控问题的过程中,开发环境、QA环境、“一比一”的Beta环境均无法重现堆积问题,而生产环境对于开发团队来说是黑盒,没有访问权限。因为历史原因,应用有大量的日志,但日志加的很乱,几乎获取不到多少有效信息,即使后面在代码中加日志,也不知道从何加起,工作量也很大。
透视宝很轻松的解决了上述问题,准确获得生产环境中实际被调度的任务量和返回的需要处理的量,虽然QA模拟的任务数比生产还多,但需要处理的数据却比生产少很多,同时还知道了处理一次数据平均需要5秒。通过透视宝的数据库功能发现请求中有很多SQL访问特别慢,针对问题添加索引、优化SQL语句、提高线程数、优化代码,使响应时间提高了近百倍,成功解决了堆积和丢任务的问题。
监控宝API监控的开发团队成功利用“透视宝”快速定了API监控优化过程中遇到的问题(包括应用程序和应用环境),并提供了准确、有效的分析数据,在本次API监控优化过程中扮演了关键角色。而解决此次问题主要使用了“透视宝”APM和主机性能监控模块的部分功能,透视宝还提供从移动端、Web端深入到代码层的全面性能监控,帮助您实时发现与定位应用在线上环境运行的各种故障与性能瓶颈。