分析应用程序间歇性无法访问的原因
概念
基于TCP的网络应用有基于长连接的应用和短连接的应用两种,长连接指应用客户端在同服务器建立TCP连接后一直保持,一般不断开连接。 短连接指当应用客户端每次需要传输应用数据时同服务器建立TCP连接,在应用数据传输完成后将连接关闭的应用。 当短连接的应用服务由于某种原因无法及时关闭应断开的TCP连接时,会造成连接资源的占用,严重时会影响新的TCP连接的建立,从而影响应用的数数据传输。
案例背景
一个基于 HTTP 的应用服务,客户端通过浏览器访问应用服务,访问该应用服务的客户端数量不多,但经常出现无法正常访问的现象,问题描述如下。
每当系统运行一段时间后,出现客户端无法访问的现象,而服务器上的应用程序运行正常,CPU 和内存占用率很低, 重新启动服务器上的 HTTP 服务和应用进程后客户端访问恢复正常,该应用成为了一个需要“定期重启”的应用系统。
由于该问题是间歇性问题,无法预知发生的具体时间,因此部署 AnaTraf 流量分析仪对该服务器的流量进行长期监控、分析,当问题再次发生时,可以通过分析仪对网络问题进行重现以及回溯分析。
定位应用无法访问的原因
当有用户反馈无法正常访问服务时,网络管理员迅速使用流量分析仪展开分析。首先,将分析的时间范围设置为用户无法正常访问服务的时间段。然后,将服务器和无法访问服务的客户端作为流量的过滤条件。 简单的两步,就能快速缩小范围,定位关键信息。
分析客户端和服务器之间的连接发现,连接请求被拒绝,出现连接重置标志。出现连接重置的可能原因有端口不正确或为未打开、异常地关闭连接、TCP接收到一个数据段,但是这个数据段所标识的连接不存在等。
确认服务器是否宕机
分析服务器地连接情况,发现存在正常的应用程序访问和响应。但服务器的新建连接数量不断增加,活跃连接数量也在增加,很多连接处于等待关闭的状态。
分析等待关闭的连接流量
发现这些连接出现多次 TCP-FIN 标志位,对流量进行解码发现,服务器多次向客户端发送 FIN,但没有收到客户端的回应,从而无法正常关闭连接。连接只有等到超时后,才会关闭。 由此,服务器的连接数量越来越多,造成无法接受新的连接请求。