APM应用性能工作原理与实践

By 刘晓冬@博睿

随着互联网业务的快速发展及公司业务规模的不断增长,支撑公司业务系统在应用性能监测方面面临巨大的挑战;越发庞大的业务架构(应用服务器、数据库、中间件等)以及多样的用户终端的多样性(PC、IOS、Android等)都给业务系统的监测带来了越来越多的困难,当用户出现访问问题时,维护人员需要从网络、服务器、数据库、代码等多个层面排查,问题定位周期较长且需要协调多个部门联合排查。从复杂的用户终端到庞大的后端架构,公司亟需一套完善的APM(Application Performance Management)系统来实现用户端到服务器端的完整性能监测方案。

目前,基础架构管理主要以基础组件为中心,在软件层和硬件层进行监测管理,而应用性能管理以应用为中心从用户视角出发,在用户体验层、应用交易层和应用服务层进行监测管理。

通过应用性能管理和基础架构管理的结合,覆盖了业务监测的各个层面,包括:用户体验管理、应用交易管理、应用服务管理、软件管理和硬件管理。通过对各个层面的监测,全面监测和分析业务应用的服务能力和性能状态。

此外,通过应用性能管理和基础架构管理的结合,可以实现端到端的业务监测,当用户使用业务出现问题时,可以快速分析和定位问题瓶颈,明确问题根源在业务应用层,还是在基础架构层,从而提升企业运维效率和保障业务服务质量。

随着应用系统的复杂程度持续上升,IT系统规模不断扩大,IT故障和风险点持续增加情况下,单一使用传统监测已无法满足目前运维的需求。应用性能监测全方位的应用监测信息,解决传统监测对应用层面监测的瓶颈,如用户体验、故障隔离、故障定位,性能可视化等问题,从而有效提升运维效率,减低运维人员成本和压力。

作为国内最专业的应用性能网络质量监测服务商,多年来投入了大量资金对监测网络进行了部署,目前已经在境内300余个IDC机房部署了自有监测节点组(独立IP,独享带宽,并覆盖北京、上海、广州等主要城市),在200余个境外国家和地区部署了监测节点组。同时,也大力发展了国内终端会员,目前手机和PC会员保有量已经超过了10万(独立IP),城市覆盖到800余个,组成了以IDC机房和LM网民两个网络为主的全方位监测平台,监测地点覆盖国内全部省、自治区、直辖市,网络环境覆盖移动、电信、联通、教育网主流运营商及中小运营商。

此外,不仅可提供公共的IDC和LM监测网络外,还可帮助用户搭建自有的监测网络----私有监测网络,来满足用户非开放式业务应用及真实用户体验的监测需求,同时保障了用户监测数据的安全性和连续性。为每个使用私有监测网络的用户独立定制客户端程序和数据采集程序,用户可在内网PC中自由部署以实现监测的全部功能。当用户对数据安全性有更高需求时,还可提供将监测数据直接导入到用户数据库服务的工作,用户可以通过自有的数据库平台进行数据存储,以确保所有的数据收集工作都在公司内部完成。用户若使用公共的报表中心服务,仅需要在其自有数据库中开启较低的读取权限,便可将监测数据以报表形式展现。

为了保证监测数据的全面性和准确性,并且能分地区、分运营商、分时段对多个监测目标进行多项目监测。我们采用了同一城市运营商多个机房的IDC托管策略,以避免个别机房因网络波动造成的数据探测中断。同时会员预警系统也会指导在各个城市运营商的终端会员招募工作,以此保障监测探针资源的充足及稳定。

由于终端用户使用的PC设备具有很强的不确定性,如电脑突然关机、网络瞬断、接收任务后连接丢失等问题都会影响正常的监测工作。为了及时准确的获知终端用户PC设备的运行状况和保障监测工作的有效性,我们使用了独立的探针心跳服务系统来管理监测探针与系统之间的数据交换。

实现原理:每隔40秒钟客户端程序将监测探针的运行状态信息(工作速度、已完成任务数、进行中任务数及将要进行的任务数)发送到心跳服务器,心跳服务系统则按照3个心跳周期为一组的判断方式,对监测探针进行可用性判断。如果3个周期的数据均出现错误,心跳服务系统则判断此监测探针不稳定并禁止其进行接下来的数据收集工作。同时,监测系统会实时了解各个地区运营商监测探针的压力状况,组成一套合理的资源预警平台,当压力较大的时候,我们的预警系统将会及时提示。预警系统可监测某一地区的工作饱和度(50%报警阈值)。当超过报警阈值时,相关的技术人员会主动增加相应监测探针数量,以降低负载压力。

软件探针客户端是基于HTTP1.0/HTTP1.1协议、完全采用Windows IE 6.0-11.0、Chrome的内核开发而成,支持AJAX、DHTML等复杂应用,支持对Web 2.0/SOA 等新型事务型应用的监测。为获得最真实的用户访问体验,客户端在每次监测前清空本地的IE、Chrome缓存、DNS缓存以此避免监测数据的不真实,客户端软件对系统资源进行有效探测,当CPU/内存高于阀值时放弃本次监测,延后再试,由于客户端是采用真正IE、Chrome内核做开发,每一个页面元素的下载时间、下载过程与真实用户打开IE、Chrome浏览器访问网站的情况是一样的,以此保证测试过程的真实,测试数据与用户的真实体验完全一致。

由于影响网站访问的因素众多,无论网络层还是服务器应用和页面设计都会对网站的访问产生影响,因此,需要综合上面所有层面的测试来进行探测。

网络层面的探测包括Ping、Tracert路由跟踪、DNS查询。通过Ping网站域名或服务器的IP地址,我们可以了解监测探针能否与监测任务服务器正常连接,根据Ping值大小,我们可以了解到连接是否通畅;通过路由跟踪数据,我们可以获得从监测探针到服务器所经过的路由路径、检查网络节点;通过DNS查询,我们可以发现DNS定位是否存在问题;

服务器层面的探测是通过采集与服务器有关的测试数据以获得服务器运行的状况,包括浏览器等待用时、TCP连接用时和TCP连接总次数、客户端发送请求时间、服务器响应时间、是否有重定向以及重定向时间、第一个数据包到达时间、内容下载整体时间、首屏打开时间和Round Trips次数。我们把以上数据和网络层的监测数据加以结合,可以发现服务器的系统性能是否超载或软硬件配置是否存在问题。例如DNS查询用时过长,我们可以结合DNS服务器的访问流量和网络层探测,诊断出是因为网络环境状况不理想还是由于DNS服务器异常;假如TCP建立连接用时过长,我们可以结合网络层探测,诊断出是因为受到服务器的系统资源(如CPU、内存)影响还是由于网络环境差而造成的;如果服务期响应时间过长,我们可以结合网站的访问流量、服务器软硬件的配置数据和网络环境的数据,诊断出是因为网民访问量大、还是由于服务器系统的性能不理想而造成的;

页面层面的探测通过页面元素的瀑布图分析,不仅探测到页面内容的下载总体时间,更可了解到每个元素的名称、类型、大小、下载时间,找到下载最慢的页面元素。页面元素详细瀑布图还提供页面元素的其他数据,包括DNS解析、TCP链接、客户端发送请求、服务器响应和下载,同时按照IE的浏览过程,依次显示页面中相应元素,我们可以把三个层面的探测数据结合到一起,寻找网站的访问瓶颈;

我们既可以得到所有样本点总体的平均访问速度,也可以得到每个样本点的访问速度。

软件探针客户端程序基于底层API函数的开发模式,在根本上确保了客户端运行的稳定性。其次,客户端执行的任务数量也有严格限制,避免了由于系统开销过大造成的客户端程序异常;最后,守护进程会在客户端异常或挂起时重启客户端程序,并发送错误报告至Dump服务器。

软件探针客户端程序采用成熟的跨平台C++、Java语言开发,保证了软件无论从效率、性能,还是稳定性都具有优势,此外采用了高内聚低耦合的模块化设计架构,各个不同的功能模块之间彼此独立,互不影响,由统一的信息调度模块负责协调运行、监控。因此在进行功能增加、修改时,只需对相应的模块进行变动,其余模块仍然可以正常工作,便于后期的功能扩充和系统维护。

在整个网络服务质量监测平台中任务分发系统是系统的核心组件之一,任务分发中心按照区域和运营商原则分布部署,形成多个相对独立运行又互为备份的子中心。当分布于各地的监测探针发出监测请求后,任务分发中心在下发任务前,首先会收集各监测探针电脑当前时间点的网速,CPU占用率、内存占用率等各类硬件信息,并以此验证该监测探针所使用的版本是否更新到最新,如监测探针不是最新版本则会自动升级。只有当监测探针的状态和版本都满足要求时,才会确认下发监测任务,最大程度的避免了由于监测探针自身存在问题或当时系统繁忙而造成的监测数据不准确的现象发生。

另外,监测任务的执行并不是由任务分发中心直接下发,而是监测探针周期性与任务分发中心进行通讯,来请求是否进行任务分配。同时,任务分发中心还会指定此监测探针的数据返回地址。当有效监测后,收集的监测数据除了可被存入系统的数据库外,用户还可通过系统提供的接口,将这些数据直接传输到客户所指定的任意地址,将数据融入到用户已有的系统中,省去从数据库中获取的环节。

任务分发系统处理任务的大体流程是:当用户配置好监测任务并且审核通过后,由监测任务分发中心按照用户设定的频率和地域进行任务下发。监测探针周期性与任务分发中心进行通讯,以确认监测探针的运行状态是否良好,任务分发中心判断如有任务,在验证了监测探针状况及版本符合要求后即会下发任务,监测探针收到监测任务后,自动执行监测任务。监测探针以XML流的形式向任务分发中心发出监测请求,任务分发中心根据监测探针编号、监测探针类型、监测探针所在城市编号、监测探针所属运营商编号,查询数据库获得待监测的任务信息,并构建成XML数据流格式,回传给监测探针并开始具体测试。监测过程中监测探针会模拟网页访问过程中IE浏览器的真实动作对监测地址进行访问,并记录当时的服务器、网络环境和网页元素等多方面监测数据,从而完成一次数据采集。

数据收集系统是统中另一个核心组件,数据处理中心按照用户原则分布部署,也形成了多个相对独立运行又互为备份的子中心。它的主要功能如下:

1、接收来自各监测探针采集的样本数据

监测探针向数据处理中心返回数据,当数据处理中心收到数据后,会发出确认回执。如未收到,监测探针会在一分钟后重试,如果重试5次后仍然不能收到传输成功的确认回执,会将监测数据保留12小时,12小时后再进行尝试。

2、监测数据的整合

监测探针是以压缩流的方式将监测数据上传到不同的数据处理中心,数据处理中心会将数据解压并整合为同一文件后存储在临时的磁盘介质中。

3、数据的分析和统计,生成各类报表所需的中间数据

数据处理中心会根据系统内置规则和用户指定的规则对监测数据进行有效的过滤和筛选,最大程度排除噪点数据。数据处理中心还会对杂乱无章的数据进行统计,形成可用于报表系统的中间数据。

数据收集系统获取数据的具体流程是:监测探针在完成一次监测任务后,并不马上将获得的数据发送给数据处理中心,而是等到下一次请求任务前,才以XML流的形式向数据处理中心发送传输数据请求。数据处理中心确认请求后,监测探针将监测数据以GZIP压缩流的格式传送给数据处理中心,数据处理中心将此数据解压整合后,保存在临时硬盘介质中,并向监测探针发送确认回执。数据处理中心会对该硬盘介质自动进行扫描,发现新文件后执行过滤、统计操作,最终将中间监测数据写入数据库,用户通过报表中心就可以得到相应数据的报表展现以供追踪分析使用。

北京博睿数据科技股份有限公司成立于2007年,是国内领先的应用数据服务提供商。通过云计算技术搭建的互联网运营质量管理平台,为客户业务性能优化提供支撑。业务覆盖互联网、金融、运营商、制造业等重要行业,已成功为腾讯、阿里巴巴、百度、平安集团、上海证交所、深圳证交所、陆金所、九鼎投资、中国电信、李宁、NIKE等知名企业提供服务,通过不断努力希望成为客户“互联网+”转型的护航者。

博睿数据秉承着“发现问题,更要定位问题”的技术理念,已经形成了一整套覆盖传统互联网和移动互联网的产品体系,从IT质量管理和业务质量管理两大维度入手,涵盖应用性能管理、网络性能管理、APP适用性、营销管理、端到端管理等功能,不但帮助客户发现问题,更要定位问题,进行“业务链”各环节运营优化管理。

淘宝网成立于2003年5月10日,由阿里巴巴集团投资创办。目前,淘宝网是亚洲第一大网络零售商圈,其目标是致力于创造全球首选网络零售商圈。通过结合社区、江湖、帮派来增加网购人群的粘性,并且采用最新团购模式。

淘宝网目前业务跨越C2C、B2C两大部分,是中国境内最具品牌影响力的电商网站,淘宝对网站的快速、稳定有着极高的要求,因此淘宝网对自建CDN所发挥的作用尤为关注,如何来考量CDN的服务情况?不仅需要内部的监控,同时也需要结合第三方的监测数据进行衡量,对于“公平、公正、真实”的第三方数据,淘宝有着严格的考评体系,通过各家第三方监测公司的数据准确性选拔后,选择了国内技术领先的第三方监测公司-博睿,通过博睿的优质服务,真实的呈现了CDN部署情况,在服务期间多次给出资源调整解决方案,更好地保障了CDN资源的合理分配,使整体运行水平提升。

特别是在2011—2015年“双十一”促销活动期间,由于商家产品推广需求,商品信息变动频繁,对内容更新的及时性有着严格的要求,因此,淘宝使用博睿第三方服务质量监测产品,保障淘宝网在各地CDN节点内容更新的及时性和准确性。

苏宁易购是苏宁电器旗下新一代B2C综合网上购物平台,现已覆盖传统家电、3C电器、日用百货等品类,计划到2020年实现3000亿元的销售规模,成为中国领先的B2C平台之一。自2013年起,苏宁开始使用博睿的第三方监测服务,包含页面浏览、事务流程、电商行业竞争对手、活动推广期间的广告和移动全元素的监测。

前期,苏宁易购主要关注网页前端结构,分析页面首屏性能,首屏元素占比,帮助页面结构做合理的调整与优化。日常关注CDN的服务质量,对四家CDN服务商做严格的质量把关,在博睿监测平台的帮助下,发现一个核心的CDN目标节点,覆盖区域较多,负荷过大,不能提供优质的加速服务,我们通过详细的链路数据取证,帮助苏宁改善了CDN服务。另外,由于苏宁易购是从传统行业转型为互联网行业的典型企业,尤其关注国内主流电商网站的用户体验,通过做竞品分析不仅包含页面浏览的性能,还包含购物流程的监测,清晰把握国内主流电商网站线上应用的整体性能和购物流程的成功率数据,并对自身网站流程设计做合理的优化,通过多个部门都在使用博睿的监测服务,博睿客观公正的数据已经成为苏宁技术管理中心不可或缺的支持部分,帮助苏宁易购网站在电商行业内飞速发展。

中粮我买网是由世界500强企业中粮集团有限公司于2009年投资创办的食品类B2C电子商务网站。

我买网已连续四年使用博睿的应用性能管理产品,网站的首屏用时由原来的4.1s,提升到了目前的1.8s,同时用户购物流程的正确率也有明显的提升。

选择与博睿合作之后,我买网的用户量比其自然增长还有明显提升。可用性提升了2.51个百分点。购物到达率提升了9.9个百分点。其营业额从2012年的5亿提升到到目前的10亿,订单量翻了1.2倍。在“2013德勤高科技、高成长中国50强” 榜单及CEO调查报告中,中粮我买网凭借四年内平均844.9%的增长率,在榜单中排名第四,电子商务行业位列第一。

2012年12月初,国美电器宣布整合旗下“国美电器网上商城”和“库巴网”两大电商平台,实现后台统一管理和资源共享。整合之后,更名为“国美在线”的国美电器网上商城将定位于面向B2C业务的跨品类综合性电商购物网、国美电器、国美电器站,依托国美在线的后台能力,以独立品牌、独立网站、独立运营的模式专注于综合类电商平台的发展。

国美在进入电商领域不久后就与博睿进行了合作,在博睿与国美深入合作中,为国美在线不断提升自身服务性能和提高用户转化率提供了数据参考依据。

前期国美页面结构存在着较大问题,首屏用时较长为4.1秒,可用性仅为94%,博睿与国美一起通过不断对问题的剥离分析、改进,现国美首屏用时提升为2.4秒,

可用性提升到99.3%,已经达到行业内较高水平。

博睿主要为国美提供了页面优化建议、用户性能报警、远程支持、性能报告讲解及现场支持等服务,帮助国美以用户体验为导向,不断完善提升自身服务能力。

随着博睿和国美不断的深入合作,现博睿是国美唯一一家网络应用性能管理服务商。在电商大战愈演愈烈的今天,只有从用户角度出发才能得到长远的发展。

results matching ""

    No results matching ""