【51CTO.com独家特稿】编者按:本文为2009年首届网络分析技术大会的现场实录,演讲嘉宾为资深网络分析技术顾问海万学先生。海先生在大会上为我们详细讲解了多层结构应用性能分析与故障诊断等问题。
我今天演讲的主题是多层结构应用性能分析与故障诊断。概述,包括什么是应用分析,通过刚才的讲解,大家发现,很多分析都是这个有问题,都是针对应用分析的,我今天讲解的应用分析主要是多层架构的应用分析,我会讲解一下我在实际工作过程中分析案例和分析思路以及我用得假设的分析思路,我希望会实现。
我再讲解多层应用架构之前,会有一个相关的概念,大家知道的,熟悉一下,不知道的再看一下。
最主要的部分就是多层结构应用性能分析思路,我们怎么样分析多层结构应用。通过刚才的讲解,大家发现我们只能分析到两端,中间有几个网络设备,但是不属于应用层的结构,我们认为这也是两层结构。现在大型环境下面,更多都是Web、中间件、数据库,有很多环境下面,用户要求说,我要看端到端的应用性能,或者说端到端访问出现了故障给我排除一下,我们要分析到后面的应用服务其,甚至到数据库服务器。应用和网络分析中过程中面临的挑战,这些挑战和分析带来很大的难度,这些挑战如果有时间的话,也会逐步介绍。何为应用分析。应用分析就是业务分析,我们的应用,有的问题我来分析他,今天是网络分析的大会,应用分析到网络分析、协议、流量分析是什么样的关系,我们认为网络分析、协议分析、流量分析是安全里面很重要的分支,给我们网络带来精细化的管理。这些分析为管理服务,为了我们更好的管理,为了更好的管理做什么呢?让我们的应用跑得更加安全、稳定,所以我认为应用分析也是建立在下面三个分析的基础上。
什么时候需要应用分析?网络正常,我们发现欺骗和攻击,又嫌应用慢,原来应用正常,现在又慢了,应用间歇性地慢,我很烦恼,有的时间好,有的时间慢,相关概念都看一下,这是最简单的应用结构,这边是客户端,到这边应用服务其,或者数据库服务器,复杂环境下面会用其设备,大型客户应用服务其会九到十台后面有中间件或者应用服务器和数据库都是双备份,提高他们的性能,环境比较复杂的时候,我们要实现端到端的应用,可能是稍微有一些难度。多层应用结构分析的时候会涉及到一些系统和应用,为什么说出来呢?操作系统会有IBM,分析出来的时候,还发现说窗口大小也需要调整,在系统里面进行调整,如果对系统有不熟悉的地方,任务只能完成百分之多少,其他的地方需要别人帮忙解决。Web服务器是比较常见的,应用服务其这一块有很多时候中间件代替,数据库为什么要列出来呢?在分析的过程中,BB2,每次传送数据的时候就是512字节大小传送,我要修改它,或者我要怎么样修改它,或者说开到一些指针,前后联系起来才能分析出一个结构,多层架构可能会涉及到的内容比较多,常见的应用研究方式,在我看来,三种应用连接方式,第一种就是一个客户端后面对应一个连接,把相关数据捕获到,我得到一个结果,国内建得最多的,如果用F5代替的话,所有F5都是这样的结构,直接负责转发,应用服务其和数据库之间开发20个连接,前面有成千上万的人在访问,这个时候要做到端到端的分析,只想看这一个用户做得数据,打开一个网页,把数据整理出来,这种比较复杂,在结构上见过,并没有在实际工作中见过,也可能只开发二十个连接,但是好多用户请求,Web服务器发送的时候把应用给数据服务器,如果做到端到端的分析,可能稍微复杂一些,快有遇到,遇到的话我会总结一下。分析的时候有一些概念,我们捕获数据包分析的时候,涉及到带宽延迟,不同的带宽延时是不一样的,我们要理解带宽延迟,TCP的延时流控的机制和慢启动都会带来一些前演尺,还有拥塞延时,假如分析端到端的应用,发现拥塞延时特别多,我们的定义就是通过网络设备通过实际延时是多少和理论延时,才能知道拥塞延时是多少。应用相关,端点处理时间,像每一个经过的服务器、客户端都有,我们会说服务器响应时间,有些应用开发部怎么好,效率比较低,归到应用相关的时间,这是时间相关的概念。
大家一直在说,数据捕获的同步性,这也是非常重要的,我分析的结构,不是在这儿捕获一下而是在那儿捕获一下,相关的层面都要捕获到,像刚才王超老实说得很好,最希望的就是用一台电脑捕获,我们怎么样做到多个端点同时捕获,客户端如果在物理距离非常远,不能通过一个接口拉线放在一个电脑上,我怎么样捕获它?这个分析系统支持分布式控制,支持跨地域非常远,给那个地方也装了,但是控制它,让它捕获,让这三个同时捕获同时停止。
在下面多层结构分析里边,我想得结构模型,这是我的重点,我们分析多层结构的时候有一些模型,我很希望它能够实现,我有设备连接显示,我是多层结构,我肯定是这样一个圆,看到A设备和客户端连接Web连接到客户端,又连接到数据库,但是在这线里边,我们希望看得非常详细,包括交互次数是多少,因为是端到端,只对一个用户做分析,我开发传送的协议是什么,网络层的空间大小是多少,我们希望有这样一个模型,设备连接显示。因为对流量传输特征显示,这是A,这是客户端,C是数据库服务器,客户端和A之间数据交互是什么样,看到请求是什么样子,请求又发送到数据库服务器上面,数据库服务器又返回来,他们之间是不是交互过很多次,服务器又反馈到客户端,我希望图形的方式把数据交互看到是非常好的。只是一个用户的访问做分析,我希望在整个过程中,把相关的时间显示出来,这里面我会看到把时间划分了,网络时间是多少,服务器响应时间是多少,带宽延时是多少,网络拥塞时间是多少,我们看到如果准确交互过滤出来,延时在哪儿肯定就是这个原因导致的,我把多层结构相关数据都过滤出来,这是我们分析模型。三个分析思路。多点捕获同构性。过滤相关交易数据关联起来,然后整体分析,工作的难点是第二个,怎么样过滤出来。一旦过滤出来就会关联起来。根据业务和应用的交易特征,这是很好理解的,这是我们国家通关检测系统,这是分析模型里边,第二行是中间件,第三行是数据库或者服务器,我看到每隔20分钟或者多长时间,有一次交互,我可以把中间放大,这一次任务哪延时最多,这是我设想第三种模型,每一种时间,不同的颜色代表不同的时间,相同的颜色,我认为端点的触及时间,Web 服务器端点处理多长时间,中间点多长时间,其他和网络和端点拥塞是多少,如果这样做出来就可以看出来是什么样的原因。
根据关键字和特征码,不像第一种有明显的操作时间延时的特征,好多人在访问,同时又非常多人访问,虽然没办法关联起来,递交的内容会含有个人信息,而且还有HTTP的信息。这个例子里面还有一个F5设备,F5是单机模式工作的,再发送到AP,再发送到DP上面,以这个用户为例,我可以看到这样的结果,这个客户端直接访问到F5上面一个地址,F5有一个对外的地址,这个地址过滤出来这几个用户,但是后面并没有过滤出来,我看到F5连接两个应用服务器,两个应用服务器又连接两个数据库服务器,我要知道,这个用户的数据到底传到应用服务器一还是应用服务器二上面,访问到F5传到一还是数据服务器一还是数据服务器二上面,可以看出延时包括交互行为,根据关键字的方式过滤出来。F5建立连接的时候有一些信息,这里面有一个用户名。因为我们知道,应用服务器肯定会把某些关键字转发到数据库服务器里面,我们会找到哪个应用服务器,但是我们这里面也应该明白,不会在短时间内应用服务器,一会儿又用那个应用服务器,在短时间内不会那样做,我们找出来关键的唯一。根据刚才的关键字过滤,我们看到这个应用服务其和数据库服务器,确认到那个应用服务其和哪个应用服务其,相关的连接是哪些都可以找到,这样可以确认出来。在这个时候如果需要流程图形方式显示时间就比较复杂,我们可以直接整合起来。我把内外网两个IP地址命名成F5,所以会显示。如果会这样的话就是单一个用户,我们可以看到很多的信息。通过这个分析大家可以看到,我分析到了应用相关的时间,分析到网络相关的时间,在大型环境里面最容易发生这样的纠纷,管网络测试网络连通性的方法,管应用又测试应用的方法,甚至于开发的,压力测试的脚本认为我经常用的这些脚本,我就应该测试,但是在实际环境中会发生各种各样的现象,有些问题没有考虑到,我们就可以通过时间图找到到底延时真正发生在哪儿,比如说端点处理延时特别高,这是应用关联的问题,如果发现应用交付特别频繁,每次发生很小的数据包,这是应用开发的问题,找到相应的部门,递交给相应的责任人,这是我们分析过程。这是最终的结果。
这是理想,假设的方式,有了前两种方式还有第三种方式,网上交易或者政权网上交易很多都是加密的,找不到关键字或者说多次转换,地址转换得比较乱,关联起来是很复杂的,假设有这样一个环境,上面的框就是实际环境中走过的流量,下面是单个交易的压力,这个压力怎么样得到呢?在应用发布之前,试验环境中做了一下,股票停市别人没法访问,我访问了一次,作为一个案例。后面有一个单元大小,依据某些属性设立,如果符合的话,抽样的方法肯定不是百分之百准确的,尽量做到70%或者80%甚至更高,接近准确值,这就达到了我们的目标。实际环境中找到了开头,又找到它的结尾,我要的数据就在其中,在中间以各种的方式找出来,到最后以抽样的方式,数据非常多,以样本的方式抽出来,我再分析一下结果是什么样子。这是一个实例:网络访问速度过慢,有时候无法显示。内网用户访问的话,数据从这儿跑到F上面,外网用户访问的话,跑到这个F5上面,内网这儿有两个,这一块有两个Web服务器,认为比较浪费,就算了,这样的话,我们就看一下,内网访问数据是这样子的,用户这么过来,这时候转到Web 服务器,到底转到哪儿,如果是静态或者简单的页面Web 服务器就认了,如果动态的话到这两个应用服务其,如果需要查询数据库的话,就得转回去,我算了一下要穿四到八次防火墙,在这样一个结构里面,用户打开这个网页比较慢,给我分析一下是什么样的原因?会显得复杂一些,而且分析比较科学的话,以用户为例,整个过程都拿出来,我看到底哪儿延时比较大,或者哪儿中断了,我以这个用户为例,到F5上面,后面的数据没有过滤出来,过滤到前面的F5,前面包含很多怎么样过滤出来,稍微复杂一些。
当用户访问成功的时候有明显的特征,数据传输,而且数据传输比较多,颜色比较粗的地方,就知道是不是的,我们就可以看到这样的结果,这个绿色表示HTTP的访问,发送到F5的时候没有发下去。前面绿色的键,这个数据里面的概算是一模一样的,就是刷新了一下。如果我们分析这种情况,结果就可以一目了然。
我对上面这张图的放大。结论就是网络和应用都是没问题的,日常网络和应用分析遇到的挑战,第一个就是加密技术,对我们的精确分析带来很大的挑战,没法关联很多的事情,包括全球用得最多的广域网加速,我们也可以叫应用或者网络加速,对我们的分析也带来很大的挑战,在两端放两个盒子,中间用着他们自己的协议或者算法,甚至压缩,我很难准确地分析出一个访问真正的时间是多少。虚拟化技术,把服务器放在大型机或者小型机里面,我们看到网络分析技术都在支持虚拟化技术。面对问题要解决问题,因为时间的关系我就大概介绍一下我的议题。谢谢大家!
【51CTO.com独家特稿,转载请注明出处】
【编辑推荐】