APM的过去,现在和将来

        随着互联网的日新月异的发展,网络上的线上服务日益增多。从搜索到购物,从发邮件到收微信,无论是使用桌面电脑还是移动终端,享受网络生活都成了我们每天不可缺少的一部分。但线上服务是否好?用户的满意度有多高?服务不好的原因是什么?这些问题就要用网络应用的性能监测来回答了。Application Performance Monitor (APM) ,应用层上的性能监测,用以衡量线上服务的综合性能,它通过衡量实现线上服务的各个环节,尤其是服务器的运行情况,来监控线上服务的质量,以便及时发现问题,保证良好的用户体验。
        衡量应用层的性能指标有好多种,例如:某种网络应用(购物)所耗的流量,应用的反应时间,应用交付的成功率等。我们这里就用服务的反应时间(responsetime)这个最重要的指标来解释APM监测的原理。从监测方法上来说,有从网络层直接入手的,Application-AwareNetwork Performance Monitoring (AA-NPM),以及在服务器上直接部署各类探点来实现的。我们在以下讨论中除非特殊需要,并不加以严格的区分。
        任何线上服务都是由某种云通过网络和计算资源来提供的。无论是在公有云还是私有云里,网路和服务器是实现线上服务的物理基础。当用户的服务请求通过互联网抵达云端时,她需要立即识别服务类型,将请求送达相应的服务器,作出服务响应,然后返回处理结果。当用户请求得不到及时处理时,云服务商不但丢失用户信任, 甚至直接丢失业务收入。所以应用(服务)的响应时间是至关重要,它至少有三个部分组成:
1. 终端的处理时间: 例如:电脑是如何发出申请,又是如何显示返回的HTML文件的? 由于个人电脑和智能手机强大的处理能力,这段时间一般不被认为是线上服务的瓶颈口。
2. 网络传输的时间: 是指在ISP网络和云内部网络上的传输时间。例如:用有线网要比无线网络传的快。大家知道无论是那种类型的网络,都有可能出现问题。当网络传输不稳定时对上层应用的影响是巨大的。
3. 服务器的反应时间:一个稍微复杂的服务请求至少要经过三种不同类型服务器的处理:网页服务器, 应用服务器和数据库服务器。随着线上服务的模式日趋复杂,这段时间的变数很大,这也就是APM衡量的重点。终端的处理时间,之前谈到这段时间一般不被认为是线上服务的瓶颈口。
        网络传输一般也不是问题,但一旦有了问题,如何快速知道呢?Network Performance Monitoring (NPM,网络性能监测)是指一系列用来确保应用服务的数据流在网络节点和最终用户之间实现安全、可靠、高速输送的信息管理技术。借助NPM工具提供的重要信息,网管人员能优化网络性能,并能对数据输送过程中出现的问题展开有效的故障调查。云利来科技(ClearClouds-Global)的云服务监控系统就兼有NPM的功能,是AA-NPM,它能同时分析千万(10-Million)条TCP的连接,实时地感知网络的传输性能。
        对于服务器的反应时间,第一代的APM工具使用间接的方法来推断服务器的反应时间。例如,在每台服务器上部署探点,测量CPU,内存,磁盘的使用率从而来间接地估算出对某线上服务的反应时间。第二代APM产品从监测点发一些特殊订制的请求(ping, wget),用这些模拟请求的反应时间来替代实际的反应时间。国内的基调网络和监控宝,国外的APPNETA都是使用这种方法。第三代APM产品直接分析每个服务请求、直接计算其反应时间,从而更加准确地刻画了线上服务的质量。云利来科技目前提供这样的监测产品。云利来科技的高端产品能在20Gbps的大流量下对每个HTTP的请求进行分析,从而能有效地测量网上服务的质量。
        应用层性能监测的一个重要用途是故障诊断。当服务质量不尽人意时,是哪个服务环节出了问题呢?例如:当网页服务器不断报错时,使用云利来科技的产品能通过对HTTP协议的跟踪,实时地分析出哪些网页(URL)受到了影响,由哪些网页服务器造成的,受影响的客户是谁?这样精准的定位分析为提供安全可靠的线上服务建立了保障。 但如果不是网页服务器的问题,怀疑指向应用服务器,就要用其它的监测手段了。现在的应用服务器使用Java,Python,Perl等多种语言来实现中间件,复杂的应用逻辑即有可能导致应用性能的下降也有可能引入异常的出现。对这种解释性语言的性能监控也是目前最活跃的领域之一,蓝海讯通,AppDynamics, New Relic都有相关的产品,可以用来帮助用户调试解释性语言的性能。 由于能在源代码上进行精确的定位,这些工具被这些语言的开发者们广泛地使用。
        要想真正做到端到端的应用性能监测,精准定位服务故障,往往需要结合多种监测工具。假定在网络上部署了一台云利来科技的云服务监控系统,在每台应用服务器上部署了蓝海讯通的APM探点。 当线上服务反应时间慢时,先用云利来云科技监控系统的NPM功能排除不是网络传输的问题,再用其HTTP分析功能定位是那个网页服务器反应慢了。由于从网页服务器观察到的反应时间是三种服务器反应时间之和,如果网页服务器本身没有问题,下一步就要通过蓝海讯通的APM工具,试图定位是否是应用服务器的问题了。如果还不是,那么问题的根源最后就指向数据库服务器了。
        应用性能监测还有其它的应用,例如做用户行为分析,识别网络爬虫和发现DDOS攻击等。由于篇幅所限,这些应用将在以后的文章中详细介绍。未来的应用性能监测产品在功能上还要进一步加强。首先要把多种性能监测功能融为一体,形成一个完整的监测平台。第二,服务性能监测实际要包含多项指标,服务的异常要从多个维度上观察。例如:流量的增加导致了反应时间的缓慢可以用增加更多的服务器来解决;应用服务器上性能的提高导致了数据库变成新的瓶颈口就要从监测数据库着手。第三,由于它在应用层上做分析感知了应用的信息,APM应该积极地配合SDN控制器,在网络安全和网络资源管理上发挥更大的作用。


© 2013-2019 IDO-NET All rights reserved.