用于确定可能需要的活动连接的系统和方法

文档序号:7620833阅读:187来源:国知局
专利名称:用于确定可能需要的活动连接的系统和方法
技术领域
本发明一般地涉及分布式计算机系统,更具体地说,涉及在分布式计算机系统中排除问题或确定应用数据流的技术。
背景技术
分布式计算机系统如今已为人们所熟知。其可以包括通过网络互连的多个服务器以处理客户工作站。例如,客户工作站请求Web服务并且该请求被从代理服务器转发到分布式计算机系统中的Web服务器。Web服务器本身可能并不拥有完全响应客户请求的全部应用程序或数据。在这种情况下,Web服务器可能将部分或全部客户请求转发到另一服务器或生成用于其他服务器的另一请求以获得必需的服务或数据。例如,客户请求可以是进行旅行预定(包括机票、酒店预定和租车),并且(前端)Web服务器用作到该客户的接口。当接收到来自客户的对机票的请求时,前端Web服务器可以通过网络将请求转发到其上运行飞机预定应用的另一服务器。同样地,当接收到来自客户的对酒店预定的请求时,前端Web服务器可以通过另一网络将请求转发到其上运行酒店预定应用的另一服务器。同样地,当接收到来自客户的对租车的请求时,前端Web服务器可以通过另一网络将请求转发到其上运行租车应用的另一服务器。在此实例中,每个这些其他服务器自身并不管理相应的数据库,所以每个这些其他服务器都通过各自的网络从各自的数据库请求相应的数据(即,可用性、定价等)。这样,在此实例中,可能需要多个服务器来响应复合旅行预定的用户请求。同样地,可能需要诸如消息传送服务器、验证服务器、批处理服务器或报告服务器之类的其他类型的服务器应用来帮助应用服务器处理客户请求。
为了成功地响应复合旅行预定的用户请求(或响应需要来自其他类型的服务器应用帮助的另一服务的用户请求),所有必需的服务器必须正在运行,并且它们之间的所有网络连接必须有效。(如果任一服务器处于群集中,则群集中至少有一个服务器必须正在运行。)偶尔地,一个或多个服务器(或服务器群集)或者服务器(或服务器群集)之间的网络连接出现故障。故障点乃至故障性质对于负责排除问题的系统管理员来说可能并不明显。在任一时刻,在各服务器之间可能存在数以百计的活动端口和网络连接的事实使排除故障任务更加复杂。此外,可能已经对分布式计算机系统的配置进行了改变,但并未反映在排除故障文档中。因此,可能很难判定哪个服务器应进行故障排除。
因此,本发明的目的是有助于标识发生故障的网络连接或关联的服务器。

发明内容
本发明存在于用于判定处理客户请求所可能需要的活动连接的系统、方法和计算机程序产品。第一程序指令重复地检测第一服务器与其他服务器之间的活动连接。第二程序指令判定所述第一服务器与每个所述其他服务器之间的活动连接多久被检测到一次。第三程序指令确定每个所述活动连接何时被最后检测到。第四程序指令形成一个表,其列出了所述活动连接、每个所述活动连接多久或多频繁地被检测到一次以及每个所述活动连接何时被最后检测到。优选地,所述第四程序指令在所述表中突出显示在最近重复期间没有被所述第一程序指令检测为活动的一个或多个所述活动连接。
根据本发明的特性,其他程序指令标识多个活动连接,所述活动连接并未利用通常用于系统功能的端口或通常用于接收来自用户客户机的请求的端口。


图1是其中结合有本发明的分布式计算机系统的方块图;图2是示出了在图1的分布式计算机系统的排除故障计算机内的网络连接分析程序的运行的流程图。
具体实施例方式
现在将参考附图对本发明进行详细描述。图1示出了分布式计算机系统10,其包括代理服务器11-13、负载平衡服务器14(带有备用负载平衡服务器15)、关联应用服务器16-18的群集、数据库服务器19、消息传送服务器20、验证服务器21、批处理服务器22、报告服务器23以及其他应用服务器24。在内联网43上的客户计算机40和42通过防火墙44和网络50(例如因特网)访问代理服务器11、12和13。诸如TCP/IP网络、局域网或广域网之类的网络52将代理服务器11、12和13连接到负载平衡服务器14和15。代理服务器可以位于网站的主页URL,并将客户请求转发到URL中被指定为限定符的应用。在示出的实例中,应用服务器16-18被组织在群集中。应用服务器16-18的性质对本发明并不重要,尽管它们可能依赖其它服务器19-23的服务来处理客户请求。诸如TCP/IP网络、局域网或广域网之类的网络54将应用服务器16-18与服务器19-24相连。数据库服务器19管理数据库,该数据库可能存储有应用服务器16-18响应客户请求所需的数据。消息传送服务器20排队并传递各应用(例如IBM MQ Series软件)之间的消息(例如数据)。验证服务器21处理来自应用程序和用户的验证/登录请求。批处理服务器22执行串行化的请求的批处理。报告服务器23收集各种诸如访问率和使用率之类的应用程序统计数据。应用服务器24提供应用服务器16-18响应客户请求所需的其他服务。其他类型的服务器可以与应用服务器16-18协作以处理客户请求。
如下面更详细描述的,各种服务器通过建立活动的网络连接来彼此通信。每个网络连接可以由一对套接字-本地和外部来表示。“套接字”是网络地址和端口的组合并代表连接的一端。每个“连接”都是有方向的。一个套接字是“服务器”套接字-即,接受(服务)请求的套接字。另一个套接字是“客户端”套接字-即,发起/发送请求的套接字。用于每个“服务器”套接字的端口总是固定的并由应用程序预先确定。许多服务器套接字端口中的每个端口的标识(通常是数字)都为“客户端”所知,因此客户端向正确的服务器端口提出它们的请求。服务器端口的实例是用于http请求的“80”和用于https请求的“443”。“客户端”套接字的端口由客户端操作系统随机地分配。
网络连接分析程序130在排除故障计算机120上运行。网络连接代理程序71-84分别在服务器11-24上运行。如下面更详细描述的,代理程序询问其各自的服务器以标识哪些端口当前正在被服务器用来监听来自其他发起伙伴的通信和该发起伙伴的标识。这是两个计算机之间的“活动”连接。代理程序将这些端口、它们的状态以及它们的发起伙伴报告给分析程序130。然后,分析程序130在中央数据库140中记录端口、它们的状态和它们的伙伴服务器以及端口采样时间。这形成了活动连接的快照,即,近似在某一时间点处的端口、它们的状态以及它们的伙伴。然后,分析程序130确定这些端口中的哪些端口可用于服务器之间的连接以处理来自各种客户端的请求。这些被看作“永久性连接”,并用作故障排除的基线,因为假设它们是在反复基础上处理客户端请求所需要的。另外,诸如客户端与服务器之间的非经常性/瞬时连接并不被看作“永久性的”或包括在基线之内。如果在分布式计算机系统的某处出现后续故障,则管理员可以将当前活动连接与所述基线、永久性连接相比较,以确定是否缺少任何基线、永久性连接。如果缺少,这可以确定问题的来源,即,过去在其间建立永久性连接的两个服务器中的一个服务器当前不是活动的。当管理员请求时,分析程序130将显示特定服务器的所有连接,以确定到该服务器的许多连接是否是不活动的,但是可以从基线预期的。如果是此情况,这趋于指出此服务器具有问题。
图2更详细地示出了上述过程。在步骤200,代理程序71-84在其各自的服务器中使用已知的“netstat-an”或等价的命令来询问操作系统以标识用于此服务器的所有开放端口,并通过这些端口获得关于作出的连接/会话的信息。(“netstat-an”命令在Unix操作系统中是公知的。“Netstat”是Microsoft Windows操作系统中公知的等价命令。)对netstat-an命令的响应包括服务器的所有开放端口的列表、用于连接的协议类型(例如,TCP或UDP)、本地IP地址和端口号、外部IP地址和端口号以及连接/会话的状态。连接“状态”代表用于连接的套接字的各个组合的状态。状态的实例是LISTEN、ESTABLISHED、CLOSE_WAIT以及TIME_WAIT。LISTEN状态指出套接字处于监听/服务模式,以便接收来自用户或服务器应用程序的请求。在示出的实例中,应用服务器16、17或18可以向(监听)服务器19-24请求各个服务。LISTEN状态是接收请求并可以提供所请求的服务的计算机(例如服务器19-24)的特性。同样地,当某一代理服务器11-13将用户请求转发给某一服务器16-18(通过负载平衡服务器14)时,在该某一代理服务器11-13与该某一服务器16-18之间存在连接,并且该某一服务器16-18被看作是此连接中的监听者。
通过选择来自netstat-an命令响应(其中状态是LISTEN)的记录并提取来自这些选定记录的端口号,每个服务器上的代理程序构建该服务器的监听(套接字)端口的列表。这些是端口(其中服务器担任提供所请求服务的角色)的记录。每个服务器上的代理程序还通过选择来自netstat-an命令响应(其中状态是ESTABLISHED、CLOSE_WAIT并且本地端口不是监听端口)的记录并提取来自这些选定记录的端口号来构建该服务器的非监听(套接字)端口的列表。这些是端口(其中服务器担任提出或发送请求的角色)的记录。以下是当命令“netstat-an”在具有IP地址9.17.100.10的本地服务器上执行时的实例。以下为响应协议本地地址 外部地址 状态tcp *.50504 *.* LISTENtcp 9.17.100.10.50504 9.100.20.100.1111ESTABLISHEDtcp 9.17.100.10.1112 9.100.20.101.2000ESTABLISHED具有状态“LISTEN”的行指出本地服务器在端口50504上监听。具有状态“ESTABLISHED”的下一行指出本地服务器与另一IP地址为9.100.20.100的远程服务器之间的连接。用于此连接的本地套接字指出端口50504。远程套接字端口是1111。由于本地端口属于用于此连接的本地服务器的监听者端口列表,所以此本地服务器为远程服务器提供服务。具有状态“ESTABLISHED”的下一行指出此服务器与另一IP地址为9.100.20.101的远程服务器之间的连接。用于此连接的本地套接字指出端口1112。远程套接字端口是2000。由于本地端口不属于用于此连接的本地服务器的监听者端口列表,所以本地服务器从远程服务器请求服务,并且远程服务器在端口2000上监听。
为了确定本地服务器与两个远程服务器之间的数据流,仅分析本地服务器上的数据就足够了。远程服务器将具有与本地服务器相反的连接性。但是,在远程服务器上运行的代理程序可能允许发现远程服务器与其他服务器之间的连接性。
在两台计算机之间可以存在并通常存在多个开放连接。某些连接持续很长时间,而另一些则时有时无;这两种类型都被看作“永久性的”。如果请求计算机与服务计算机具有多个用于同一类型服务的连接,则在服务计算机处,所有请求将使用相同的套接字,但在请求计算机处,将存在不同的套接字。在本发明的一个实施例中,每个(本地)服务器上的代理程序将基于共同外部服务器的连接/会话集中到一起,并且指出链接的最终表示(即,服务器地址、客户端地址和服务器端口)。对于本地服务器,“服务器地址”可以是本地的或远程的。代理程序然后将其各自的列表发送到排除故障计算机120中的分析程序130(步骤204)。可替代地,每个代理程序将通过netstat-an命令获得的信息发送到分析程序130,并且分析程序130为每个服务器构建上述列表。
在接收(或构建上述列表)之后,分析程序130按照以下方式过滤/删除不可能是永久性的活动连接、应包括在基线内的服务器应用到服务器应用连接(步骤210)。相应地,分析程序130过滤出那些被分析程序130假设为将要处理其他系统功能(即,与处理客户端/用户请求的应用不相关的功能)的活动连接。系统功能的实例是时间服务、管理员登录、数据备份、允许远程配置和服务的网络安装管理、远程电源复位、通过FTP传送维护文件或程序更新、有效用户ID列表/管理员密码组合的传输、用于系统管理员登录的加密信息的传送、用于系统管理员登录的非加密信息的传送等。分析程序130具有通常用来处理这些其他系统功能的特定类型和范围的端口号的列表。例如,系统功能通常使用SSH端口来进行用于系统管理员登录的加密通信、使用Telnet端口来进行用于系统管理员登录的非加密通信、使用FTP端口来维护文件和更新程序等。此外,端口号1-1024通常用于常规系统功能,所以分析程序130过滤出用于这些端口的活动连接记录。优选地,分析程序130还过滤出通常由服务器用来从客户端(在示出的实例中,客户端计算机42)直接接收请求的那些端口(例如端口80和443)的记录。(分析程序130具有此类端口的列表)。
从活动连接的数据库140删除了这些系统功能端口和客户端口之后,剩余端口(带有活动连接)被假设用于与客户端请求相符的服务器应用到服务器应用连接(尽管列表中可能剩有其他连接)。假设此时没人通知排除故障计算机120任何故障,分析程序130将活动连接端口的已过滤列表作为“基线”对待或参考活动连接(假设是处理正常的服务器应用到服务器应用功能所需的)的列表来处理客户端请求。
接着,分析程序130创建服务器到服务器活动连接表,其中一列用于其活动端口处于监听模式的服务器,另一列用于其活动端口未处于监听模式的伙伴服务器(步骤220)。该表被存储在中央数据库140中。分析程序130确保数据库中记录的唯一性。通常,服务器可以同时具有数百个活动连接,但它们可以只在少数服务器之间。因此,在本发明的一个实施例中,分析程序130将两个服务器之间的不同端口上的多个连接看作一个有向连接,并将所有这些连接集中在一起作为表中的一个行项。服务器到服务器活动连接表包括当在监听模式服务器与各自的伙伴服务器之间检测到至少一个活动连接时,指示多个采样时间的一个列;以及当在同样的两个服务器之间检测到此类连接时,指示最后采样时间的另一列。在本发明的此实施例中,服务器到服务器活动连接表具有以下种类监听服务器 伙伴服务器连接数最后连接IP地址 IP地址 时间在本发明的另一个实施例中,分析程序130为每个服务器的每个监听端口和每个伙伴服务器生成具有单独行项的服务器到服务器活动连接表。该行项指示此监听端口与同一伙伴服务器之间的连接数,以及此监听端口与该伙伴服务器之间的最后连接时间(除监听服务器IP地址和伙伴服务器IP地址之外)。借助此附加信息,可以仅针对特定端口(如端口80(HTTP)或端口386(LDAP))来分析连接以进一步帮助排除故障。这是有帮助的,因为某些连接可以在一个方向上工作而其他连接则不能,并且端口的规范将有助于定位故障。
在步骤200-220的第一次重复期间,为每个项(其中在相应两个服务器之间至少检测到一个连接)将“采样数”设置为一。上述步骤200-220在下一个代理程序采样时间处重复,例如,每隔十分钟。在步骤200-220的此下一个重复之后,服务器到服务器活动连接项的当前列表被与现有服务器到服务器活动连接表中的那些列表进行比较(步骤234)。如果对于没有出现在现有表中的监听服务器和伙伴服务器对,在当前列表中存在任何检测到的连接,则它们被添加至服务器到服务器活动连接表,采样数被设置为一,并且时间列被设置为当前采样时间(步骤236)。如果对于已出现在现有表中的监听服务器和伙伴服务器对,在当前列表中存在任何检测到的连接,则采样数被递增,并且时间列被设置为当前采样时间(步骤238)。因此,采样数的值指示这些两个服务器之间的连接的持续性,即,可能用于处理客户端请求的连接。采样时间中的项指示此连接当前是否是活动的;如果不是,某个相应的服务器可能被关闭。
具有采样数的高值的连接指示正常处理客户端请求所可能需要的连接,例如两个服务器应用(在不同的服务器内)之间的连接、应用服务器与数据库管理器之间的连接或者应用服务器与服务器20-24中的任何一个服务器之间的连接。在客户/用户请求复合旅行预定的实例中(其中前端服务器是到用户的接口),对于应用服务器16-18与应用服务器24(其包含飞机预定应用程序、酒店预定应用程序和租车预定应用程序)(或其他图2中未示出的关联服务器)之间的连接,可能存在采样数的高值。对于分别在飞机预定应用程序、酒店预定应用程序以及租车预定应用程序服务器与飞机、酒店以及租车数据库服务器(图2中未示出)之间的连接,也可能存在高值。
在步骤240,分析程序130从服务器到服务器活动连接表中删除采样数的值较低(例如,少于每周一次或某些其他间隔,所述间隔指示与处理或正常客户端请求不相关联的不经常的或不规则的连接)的那些项(行)。例如,管理员可能偶然使用服务器应用到服务器应用端口来测试服务器,例如当运行探测程序时。此类测试的发生并不频繁并且与正常客户端请求不相关联。此外,如果特定连接已在预定的时间段(例如,一个月)内没有活动,则分析程序130从服务器到服务器表中删除此连接。因此,步骤240表示进一步过滤以删除那些可能并不是“永久性的”活动连接。
如果分布式网络出现问题,则系统管理员可以请求查看服务器到服务器活动连接表(决策244)。作为响应,分析程序130显示所述表并突出显示那些(历史上是永久性的)最近采样没有指示为活动的连接(步骤250)。如果一个或多个所述突出显示的项连接具有采样数的高值,则这可以隔离用户所遇到的问题的起因,即,监听服务器或伙伴服务器或它们之间的网络可能关闭,或者由于某些其他原因,此连接已被损坏。相反地,如果采样数的值很高,但在用户抱怨之前相当长的时间内连接是不活动的,则这趋向于指示此连接损坏并不指示用户问题的来源。在某些情况下,缺少在历史表中具有低采样数的当前连接仍可以指示用户所遇到的问题的起因。例如,如果系统管理员最近将应用服务器从一个数据库服务器切换到另一个数据库服务器,对于到新数据库的连接,采样计数将很低,但这仍然是重要的连接。
还在某些情况下,在采样时两个服务器之间没有活动连接,但这并不是由于这些服务器中的任一服务器出现故障。相反,在正常运行期间,连接经常开始和结束。尽管如此,从统计上说,在正常地协作以处理客户端请求的两个服务器之间,这种情况不会经常发生。
基于上述说明,公开了一种用于标识永久性的服务器到服务器活动连接并使用此类标识来排除分布式计算机系统中的故障的系统、方法和程序。但是,在不偏离本发明的范围的情况下,可以做出大量修改和替代。因此,通过示例而不是限定的方式公开了本发明,并且应参考以下权利要求来确定本发明的范围。
权利要求
1.一种用于判定处理客户端请求所可能需要的活动连接的计算机程序产品,所述程序产品包括计算机可读介质;第一程序指令,所述第一程序指令重复地检测第一服务器与其他服务器之间的活动连接;以及第二程序指令,所述第二程序指令判定在所述第一服务器与每个所述其他服务器之间的活动连接多久被检测到一次;并且其中所述第一和第二程序指令被记录在所述介质上。
2.如权利要求1所述的计算机程序产品,进一步包括第三程序指令,所述第三程序指令判定每个所述活动连接何时被最后检测到;并且其中所述第三程序指令被记录在所述介质上。
3.如权利要求2所述的计算机程序产品,进一步包括形成表的第四程序指令,所述表列出了所述活动连接、每个所述活动连接多久被检测到一次以及每个所述活动连接何时被最后检测到;并且其中所述第四程序指令被记录在所述介质上。
4.如权利要求3所述的计算机程序产品,其中所述第四程序指令在所述表中突出显示在最近重复期间没有被所述第一程序指令检测为活动的一个或多个所述活动连接。
5.如权利要求1所述的计算机程序产品,进一步包括第三程序指令,所述第三程序指令标识多个并未利用通常用于系统功能的端口的所述活动连接;并且其中所述第三程序指令被记录在所述介质上。
6.如权利要求1所述的计算机程序产品,进一步包括第三程序指令,所述第三程序指令标识哪个所述活动连接利用了所述第一服务器上的监听端口;并且其中所述第三程序指令被记录在所述介质上。
7.如权利要求1所述的计算机程序产品,进一步包括第三程序指令,所述第三程序指令标识并未利用通常用于系统功能的端口或通常用于从用户客户端接收请求的端口的所述活动连接;并且其中所述第三程序指令被记录在所述介质上。
8.一种用于判定处理客户端请求所可能需要的活动连接的方法,所述方法包括以下步骤重复地检测第一服务器与其他服务器之间的活动连接;以及判定在所述第一服务器与每个所述其他服务器之间的活动连接多久被检测到一次;以及判定每个所述活动连接何时被最后检测到。
9.如权利要求8所述的方法,进一步包括形成表的步骤,所述表列出了所述活动连接、每个所述活动连接多久被检测到一次以及每个所述活动连接何时被最后检测到。
10.如权利要求9所述的方法,进一步包括以下步骤在所述表中突出显示在最近重复期间没有被所述第一程序指令检测为活动的一个或多个所述多个活动连接。
11.一种用于判定处理客户端请求所可能需要的活动连接的计算机系统,所述系统包括这样的装置,所述装置用于重复地检测第一服务器与其他服务器之间的活动连接;这样的装置,所述装置用于判定在所述第一服务器与每个所述其他服务器之间的活动连接多久被检测到一次。
12.如权利要求11所述的计算机系统,进一步包括用于判定每个所述活动连接何时被最后检测到的装置。
13.如权利要求12所述的计算机系统,进一步包括用于形成表的装置,所述表列出了所述活动连接、每个所述活动连接多久被检测到一次以及每个所述活动连接何时被最后检测到。
14.如权利要求13所述的计算机系统,其中所述表形成装置在所述表中突出显示在最近重复期间没有被所述第一程序指令检测为活动的一个或多个所述活动连接。
全文摘要
一种用于判定处理客户端请求所可能需要的活动连接的系统和方法。第一程序指令重复地检测第一服务器与其他服务器之间的活动连接。第二程序指令判定在所述第一服务器与每个所述其他服务器之间的活动连接多久被检测到一次。第三程序指令判定每个所述活动连接何时被最后检测到。第四程序指令形成表,所述表列出了所述活动连接、每个所述活动连接多久或多频繁地被检测到一次以及每个所述活动连接何时被最后检测到。优选地,所述第四程序指令在所述表中突出显示在最近重复期间没有被所述第一程序指令检测为活动的一个或多个所述活动连接。第五程序指令标识并未利用通常用于系统功能的端口或通常用于从用户客户端接收请求的端口的多个所述活动连接。
文档编号H04L12/24GK1750479SQ20051008511
公开日2006年3月22日 申请日期2005年7月20日 优先权日2004年9月14日
发明者A·K·M·K·阿拉姆, V·巴尔苏克 申请人:国际商业机器公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1