客户端或称为用户端,是指与服务器相对应,为客户提供本地服务的程序。而当客户端无法访问时,将造成所有服务的直接中断。针对这一问题,运维人员将进行大量的排查工作,且由于原因的多种多样使得排查难度增大。面对这样棘手的问题,如何第一时间定位问题原因并有效解决?本案例通过讲解如何运用网络回溯分析技术而快速精准定位该类事件的问题根源。
1.1 问题描述
科来网络分析工程师接到某省运营商的系统运维人员反馈,该集团V8系统的客户端突然出现大面积无法访问情况,页面无法正常打开,虽然已经对网络设备经过一系列检测,但仍然无法确定问题原因。由于前期已经在V8系统的服务器区处部署了科来网络回溯分析系统,对系统进行实时网络监测与网络全流量数据存储,这为成功帮助用户定位异常现象的根本原因,提供了有效的数据支撑。
1.2 分析过程
通过配置科来网络回溯分析系统,回溯整个事件进行取证,对相关的业务访问逻辑进行抓包分析。在对营业厅→外网X.X.244.46→负载均衡设备(F5)X.X.248.27→服务器X.X.16.92-95→数据库X.X.16.86的监控分析中发现发生故障的时间段内存在大量访问被重置的情况,详情如下图所示。
图 1-1
通过对该时间段的会话分析,发现客户端在与服务端建立三次握手后发送POST请求,服务端正常回复了ACK进行确认,但等待几秒甚至几百秒后,客户端仍未接收到数据,于是将会话断开,直接回复客户端RST会话关闭,如下图所示。
图 1-2
图 1-3
通过对数据库X.X.16.86的监控,发现应用需要从数据库调用数据,那么是不是数据库端出现了问题?
经客户反馈,得知该系统数据库正常情况下连接数较少且连接多为长连接,所以单个客户端相关连接数上限设定值为100。但通过本次对数据库的分析,发现服务器X.X.16.94在半个小时的连接数达到了229个,X.X.16.93的连接数达到了132个,明显超过100个连接数的上限值。
由于该段时间内的数据库连接数很高,导致数据库响应缓慢甚至无响应,也间接导致了客户端访问应用也无法正常打开的现象,如下图所示。
图 1-4
图 1-5
通过对客户端X.X.16.94访问数据库的会话进行详细分析,发现客户端在发送请求之后,数据库没有及时发送数据进行响应,客户端在等待264秒后发送FIN中断连接信号,五分钟之后才得到数据库X.X.16.86回复响应数据以及FIN包。这直接导致数据库X.X.16.86的连接数过多,数据库无法正常响应,如下图所示。
图 1-6
图 1-7
通过上述分析可知:由于数据库出现问题,不能及时断开连接,导致客户端的连接数超过客户设定的上限值。因此数据库无法正常响应数据,间接导致客户端无法正常调取数据以及正常访问应用,应用服务器的连接数就撑爆了连接池。数据库监控,如下图所示。
图 1-8
1.3 分析结论及建议
定位问题发生的原因后,我们与该系统的应用及数据库的管理员进行沟通,希望其修改X.X.16.92-95服务器的最大DB连接数配置,从而提高系统容错瓶颈,解决问题。
调整后,系统恢复正常。同时客户端(X.X.16.92-95)连接数恢复正常,如下两图所示。
图 1-9
图 1-10
1.4 价值
现如今我们面对的业务系统越加复杂,当遇到故障时,传统检测手段往往不能有效地从错综复杂的相关因素中定位问题根因。这时可通过网络回溯分析技术对故障事件的相关业务进行取证分析,精准发现业务流程中的异常环节,从而实现故障根因的快速定位。