分布式软件故障定位方法与流程

未命名 10-19 阅读:108 评论:0

分布式软件故障定位方法
【技术领域】
1.本发明涉及分布式软件故障定位方法的技术领域,特别是分布式软件故障定位方法的技术领域。


背景技术:

2.当前软件在出现崩溃或资源泄露问题时,主要的手段是在故障软件运行的电脑上,启动一系列问题定位软件(如gdb,strace等)。这些问题定位软件会读取故障软件运行时的数据,让程序员可以知道软件在故障时正在运行哪些代码,并分析程序在以何种方式使用内存以及其他计算机资源,并进一步找出故障的根本原因。
3.但这种方式有一个缺陷,那就是非常占用内存和硬盘资源。首先,既然要在故障软件运行的电脑上运行这些问题定位软件,那就意味着这台电脑必须有足够的硬件资源能够允许这些软件同时运行。其次,要进行这种定位,我们必须确保故障的软件本身也是经过特殊手段制作出来的。也就是这个软件必须保留符号表。
4.当然,这份专利方案的主要目的并不是讨论计算机软件原理,所以我们没必要深究“符号表”具体是什么,我们只要把它们想象成一张巨大而详细的地图就好,这张地图的作用是标记了程序的每一个运行的动作,与最初的源代码之间的对应关系,有了这张地图,程序员就能随时知晓当前运行的是源代码中的哪一句话。有时候,这些信息可能能够占整个软件体积的80%。这些用户不需要的资源,对用户来说除了白白占用硬盘之外,没有任何意义。因此,任何一款发布给用户的程序生产过程种都一定会有一个名叫strip的工序,这道工序会删除这些多余的内容。但问题是,一旦这些内容被删除掉,程序员就很难进行问题的定位,因此进行故障定位的软件必须是没有进行strip过程的版本,而这个版本所需的硬盘资源,是其他版本的5倍左右。当然,真实运行起来的时候也会占用更多的内存。因此,传统的问题定位手段,要求故障程序所在的电脑预留充足的硬件资源。
5.但问题是随着未来可穿戴和嵌入式设备的发展,硬件资源不足可能成为常态。这些设备,可能也就只有8m硬盘,16m内存,光是让自己的基本功能运转起来可能就要占用80%到90%的资源,根本不可能有额外的富余来进行问题定位。实际上,当资源紧张到这种程度时,连这台电脑所使用的操作系统都是需要特殊定制的,很多常见操作系统的基本功能,在这台设备上都是要被移除,因为资源不够,功能跑不起来。所以在一些常见操作系统上唾手可得的数据资源,在这些可穿戴或嵌入式设备上都会变成不可奢求的东西。
6.当然,资源抠得这么死的原因也很简单,因为所有硬件资源背后都是能牵动一整条产业链的成本投入,资源越少成本越低。而且考虑到未来全球供应链的不稳定,采用可以本地生产的廉价原料,也可以提升供应链的稳定性。
7.当前定位linux操作系统的问题,主要使用的是下面几种软件(我们可以忽略windows和ios,这俩操作系统太贵了,而且还不能随意定制,不适合嵌入式系统。linux系统是开源免费的,任何公司都能根据自己的需求出一个定制版本)。
8.gdb:任何linux程序员都一定对这个工具的大名有所耳闻,这是linux上最常用的
问题定位工具,对于很多工程师来说,可能也是他们所知道的最强的定位工具。它是一个独立运行的程序,可以通过读取另一个程序的内存,cpu信息分析另一个程序当前到底在以何种方式使用电脑的资源。由于这个工具软件过于知名,当前它已经成为了linux系统的基本组成部分。使用的时候,需要在故障设备上启动gdb,然后让gdb直接访问故障程序的内存。
9.strace:这是一系列软件的总称,这个系列有很多的软件,每个软件可以对程序完成一种特定的分析任务,比如可以分析一个软件如何使用网络接口,或者调用了哪些操作系统的基本功能等。基本用法和gdb一样,要在故障设备上运行这些软件,并访问故障程序的内存。
10.asan:严格说来,这是一项技术,而不是一个产品。在编译一个软件时,如果告诉计算机要用asan的方式进行编译,那么计算机就会在软件内加上一系列的标记,一旦发生故障,计算机可以无需外力自行分析到底出了什么问题。但这是一种非常昂贵的技术。一旦使用这种技术,程序占用的内存会是正常情况的5倍左右,运行速度也会显著下降。
11.所有现有技术(包括上面没有提到的其他技术)都有两个共同特点:1,定位手段要直接在故障设备上使用。2,会占用数倍于正常水平的硬件资源,包括内存,硬盘和cpu。
12.但这样的背景也就意味着,未来我们需要一种全新的问题定位手段,让我们可以在这些资源紧张的设备上完成问题的定位,因此,为了解决上述问题,有必要提出分布式软件故障定位方法。


技术实现要素:

13.本发明的目的就是解决现有技术中的问题,提出分布式软件故障定位方法,能够使工程师可以不受故障设备现实资源的限制,对任何嵌入式或可穿戴设备进行故障定位。
14.为实现上述目的,本发明提出了分布式软件故障定位方法,包括如下步骤:
15.步骤一:同一个网络内同时接入若干个嵌入式设备,被测试的嵌入式设备接入测试网络后,首先和一台中央控制服务器连接;
16.步骤二:中央控制服务器会为每一台接入的嵌入式设备分配一个动态库,在待测试设备运行自己的程序时,这个动态库会替代操作系统为待分析的程序提供基础服务,使得工程师可以在不修改待分析设备的程序,也不占用额外的资源的情况下,就可以监控软件和设备的行为;
17.步骤三:中央控制服务器会为每一台嵌入式设备分配一个定位服务器,一旦测试开始,被测试的设备就直接将监控报告发给定位服务器,定位服务器负责对报告进行分析;
18.步骤四:在定位服务器上,我们将事先布置一整套的问题定位环境包括故障程序的完整副本以及完整的源代码,然后定位服务器会根据故障设备的动态库发来的数据,判断到底是什么位置出现的故障;
19.步骤五:在定位服务器分析完故障之后,会保留故障环境以及分析报告,当系统管理员登录系统时,就可以看到最真实的故障环境,并通过分析报告快速确认故障原因和位置。
20.作为优选,所述嵌入式设备包含可穿戴设备、智能家居、智能监控等。
21.作为优选,所述网络由一系列待测试设备、中央控制服务器和一组定位服务器集群组成,整个系统通过以太网相连。
22.作为优选,所述网络中,根据实际需求以及工作压力的不同,中央服务器可以兼任定位服务器的职能。
23.作为优选,所述定位服务器可以只有一台,也可以根据用户的实际需求扩增为多台。
24.本发明的有益效果:本发明能够使工程师可以不受故障设备现实资源的限制,对任何嵌入式或可穿戴设备进行故障定位;由于定位服务器是一个独立运行的模拟环境,因此即使故障设备遭遇了毁灭性的故障,导致所有环境全部丢失无法访问,工程师也可以通过定位服务器上遗留的信息分析出故障的原因;本发明的系统具有极强的可扩展性,即使公司业务扩增带来了海量的测试需求,也可以通过扩展本系统快速提升系统的测试能力。
25.本发明的特征及优点将通过实施例结合附图进行详细说明。
【附图说明】
26.图1是本发明分布式软件故障定位方法的总体系统拓补结构图;
27.图2是本发明分布式软件故障定位方法的拓补结构图;
28.图3是本发明分布式软件故障定位方法的流程图。
【具体实施方式】
29.参阅图1、图2、图3,本发明分布式软件故障定位方法,包括如下步骤:
30.步骤一:同一个网络内同时接入若干个嵌入式设备,被测试的嵌入式设备接入测试网络后,首先和一台中央控制服务器连接;
31.步骤二:中央控制服务器会为每一台接入的嵌入式设备分配一个动态库,在待测试设备运行自己的程序时,这个动态库会替代操作系统为待分析的程序提供基础服务,使得工程师可以在不修改待分析设备的程序,也不占用额外的资源的情况下,就可以监控软件和设备的行为;
32.步骤三:中央控制服务器会为每一台嵌入式设备分配一个定位服务器,一旦测试开始,被测试的设备就直接将监控报告发给定位服务器,定位服务器负责对报告进行分析;
33.步骤四:在定位服务器上,我们将事先布置一整套的问题定位环境包括故障程序的完整副本以及完整的源代码,然后定位服务器会根据故障设备的动态库发来的数据,判断到底是什么位置出现的故障;
34.步骤五:在定位服务器分析完故障之后,会保留故障环境以及分析报告,当系统管理员登录系统时,就可以看到最真实的故障环境,并通过分析报告快速确认故障原因和位置。
35.其中,所述嵌入式设备包含可穿戴设备、智能家居、智能监控等。
36.其中,所述网络由一系列待测试设备、中央控制服务器和一组定位服务器集群组成,整个系统通过以太网相连。
37.其中,所述网络中,根据实际需求以及工作压力的不同,中央服务器可以兼任定位服务器的职能。
38.其中,所述定位服务器可以只有一台,也可以根据用户的实际需求扩增为多台。
39.本发明工作过程:
40.本发明分布式软件故障定位方法在工作过程中;
41.s1:当程序员发现某一台设备出现故障时,可以连接到故障设备之上,上传定位问题所需的动态库。而对于大量嵌入式设备,可以让这些设备连接到中央控制服务器上,由服务器自动完成动态库分发;
42.s2:使用这个库替换linux系统自带的库。世界上任何linux软件,在启动时都会允许用户设置一个名叫ld_preload的参数,这个参数指向的动态库一定会在程序运行时被首先加载。所以可以通过这种操作替换linux系统自带的同类库。这个替换和覆盖的动作属于业界标准操作;
43.s3:问题定位的库被载入之后,首先会和中央控制服务器连接,询问自己应该向哪一个定位服务器汇报自己的监控报告。这一设计使得中央控制服务器可以平衡每个问题定位服务器的工作压力,避免大部分工作压力都集中在少数几台设备上,而其余设备在闲置空跑;
44.s4:问题定位的库会在被加载进内存后,立即向操作系统注册一系列监控动作,要求操作系统向自己上报程序运行各个阶段的内存以及cpu使用情况,并要求如果程序出现了致命故障必须崩溃的话,自己必须是崩溃发生之后最后一个被通告的程序,并且在通告中要包含崩溃时的所有内存以及cpu信息;
45.s5:问题定位的库会调用互联网接口,与定位服务器保持联系,并上报本地监控数据;
46.s6:定位服务器上,事先搭载了一套完整的模拟环境,可以根据问题定位库上报的数据,随时在本地模拟完整的程序状态;
47.s7:一旦检测到故障,问题定位服务器会立即分析本地模拟环境,发现故障的原理,生成定位报告。故障环境和定位报告都会被保留,方便管理员进行故障追溯。
48.本发明能够使工程师可以不受故障设备现实资源的限制,对任何嵌入式或可穿戴设备进行故障定位;由于定位服务器是一个独立运行的模拟环境,因此即使故障设备遭遇了毁灭性的故障,导致所有环境全部丢失无法访问,工程师也可以通过定位服务器上遗留的信息分析出故障的原因;本发明的系统具有极强的可扩展性,即使公司业务扩增带来了海量的测试需求,也可以通过扩展本系统快速提升系统的测试能力。
49.上述实施例是对本发明的说明,不是对本发明的限定,任何对本发明简单变换后的方案均属于本发明的保护范围。

技术特征:
1.分布式软件故障定位方法,其特征在于:包括如下步骤:步骤一:同一个网络内同时接入若干个嵌入式设备,被测试的嵌入式设备接入测试网络后,首先和一台中央控制服务器连接;步骤二:中央控制服务器会为每一台接入的嵌入式设备分配一个动态库,在待测试设备运行自己的程序时,这个动态库会替代操作系统为待分析的程序提供基础服务,使得工程师可以在不修改待分析设备的程序,也不占用额外的资源的情况下,就可以监控软件和设备的行为;步骤三:中央控制服务器会为每一台嵌入式设备分配一个定位服务器,一旦测试开始,被测试的设备就直接将监控报告发给定位服务器,定位服务器负责对报告进行分析;步骤四:在定位服务器上,我们将事先布置一整套的问题定位环境包括故障程序的完整副本以及完整的源代码,然后定位服务器会根据故障设备的动态库发来的数据,判断到底是什么位置出现的故障;步骤五:在定位服务器分析完故障之后,会保留故障环境以及分析报告,当系统管理员登录系统时,就可以看到最真实的故障环境,并通过分析报告快速确认故障原因和位置。2.如权利要求1所述的分布式软件故障定位方法,其特征在于:所述嵌入式设备包含可穿戴设备、智能家居、智能监控等。3.如权利要求1所述的分布式软件故障定位方法,其特征在于:所述网络由一系列待测试设备、中央控制服务器和一组定位服务器集群组成,整个系统通过以太网相连。4.如权利要求1所述的分布式软件故障定位方法,其特征在于:所述网络中,根据实际需求以及工作压力的不同,中央服务器可以兼任定位服务器的职能。5.如权利要求1所述的分布式软件故障定位方法,其特征在于:所述定位服务器可以只有一台,也可以根据用户的实际需求扩增为多台。

技术总结
本发明公开了为实现上述目的,本发明提出了分布式软件故障定位方法,包括如下步骤:步骤一:同一个网络内同时接入若干个嵌入式设备,被测试的嵌入式设备接入测试网络后,首先和一台中央控制服务器连接。本发明能够使工程师可以不受故障设备现实资源的限制,对任何嵌入式或可穿戴设备进行故障定位。入式或可穿戴设备进行故障定位。入式或可穿戴设备进行故障定位。


技术研发人员:张励扬
受保护的技术使用者:张励扬
技术研发日:2023.05.31
技术公布日:2023/9/23
版权声明

本文仅代表作者观点,不代表航家之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)

航空之家 https://www.aerohome.com.cn/

飞机超市 https://mall.aerohome.com.cn/

航空资讯 https://news.aerohome.com.cn/

分享:

扫一扫在手机阅读、分享本文

相关推荐