一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

多进程服务实例部署方法、装置、设备及可读存储介质与流程

2022-03-23 03:07:04 来源:中国专利 TAG:


1.本发明涉及计算机技术领域,具体而言,涉及多进程服务实例部署方法、装置、设备及可读存储介质。


背景技术:

2.程序发生内存泄漏(简称oom)后,通常由监控程序检测到进程消失或者操作系统错误日志后,再通知开发和运维及测试人员进行处理;这种反馈方式对系统业务已经造成实质损失,并缺乏对用户的友好反馈。同时oom往往由服务的并发连接数过多、大对象操作、查询用到过多的临时内存,服务内存过小等导致。从服务提供者角度看,无法提前预知或限制用户的使用行为。只有发生oom kill后,监控程序检测到服务消失或者操作系统错误日志,才会触发异常处理,而此时往往已经对用户业务造成了严重的影响。


技术实现要素:

3.本发明的目的在于提供多进程服务实例部署方法、装置、设备及可读存储介质,以改善上述问题。
4.为了实现上述目的,本技术实施例提供了如下技术方案:
5.一方面,本技术实施例提供了多进程服务实例部署方法,所述方法包括:
6.获取多进程服务实例和匹配到每个进程上的任务,并创建私有cgroup和公有cgroup;
7.将所述多进程服务实例放入所述私有cgroup,得到第一cgroup;
8.基于所述第一cgroup的内存水位和所述公有cgroup的内存水位,得到终止结果,根据所述终止结果终止相应的所述任务。
9.可选的,所述基于所述第一cgroup的内存水位和所述公有cgroup的内存水位,得到终止结果,根据所述终止结果终止相应的所述任务,包括:
10.分析所述第一cgroup的内存水位,得到第一分析结果,根据所述第一分析结果将所述第一cgroup中的至少一个进程移动到所述公有cgroup,得到第二cgroup;
11.分析所述第二cgroup的内存水位,得到第二分析结果,根据所述第二分析结果终止相关任务。
12.可选的,所述基于所述第一cgroup的内存水位和所述公有cgroup的内存水位,得到终止结果,根据所述终止结果终止相应的所述任务,包括:
13.获取私有cgroup内存水位阈值;
14.分析所述第一cgroup的内存水位,若所述第一cgroup的内存水位大于或等于所述私有cgroup内存水位阈值,则将所述第一cgroup中的进程按照内存使用高低的顺序依次移动到所述公有cgroup,得到第二cgroup,直至所述第一cgroup的内存水位小于所述私有cgroup内存水位阈值;
15.分析所述第二cgroup的内存水位,得到第二分析结果,根据所述第二分析结果终
止相关任务。
16.可选的,所述基于所述第一cgroup的内存水位和所述公有cgroup的内存水位,得到终止结果,根据所述终止结果终止相应的所述任务,包括:
17.获取私有cgroup内存水位阈值和公有cgroup内存水位阈值;
18.分析所述第一cgroup的内存水位,若所述第一cgroup的内存水位大于或等于所述私有cgroup内存水位阈值,则将所述第一cgroup中的进程按照内存使用高低的顺序依次移动到所述公有cgroup,得到第二cgroup,直至所述第一cgroup的内存水位小于所述私有cgroup内存水位阈值;
19.分析所述第二cgroup的内存水位,若所述第二cgroup的内存水位大于所述公有cgroup内存水位阈值,则触发向所述第二cgroup中内存使用最多的进程发送终止信号,所述终止信号用于触发所述第二cgroup中内存使用最多的进程终止所述第二cgroup中内存使用最多的进程所对应的任务。
20.可选的,所述分析所述第二cgroup的内存水位,得到第二分析结果,根据所述第二分析结果终止相关任务后,还包括:
21.获取私有cgroup内存水位阈值;
22.分析所述第一cgroup的内存水位,若所述第一cgroup的内存水位小于所述私有cgroup内存水位阈值,则将所述公有cgroup中的进程移动到所述第一cgroup,直至所述第一cgroup的内存水位大于或等于所述私有cgroup内存水位阈值。
23.可选的,所述分析所述第一cgroup的内存水位,得到分析结果,基于所述分析结果终止相应任务后,还包括:
24.基于终止的任务,生成报错信息,并将所述报错信息在显示界面进行显示;
25.获取输入信息,所述输入信息包括对所述报错信息进行分析的操作信息;
26.响应于所述输入信息,在所述显示界面显示所述报错信息的分析结果,将所述报错信息的分析结果发送至相关工作人员,用于提示相关工作人员查找任务终止的原因。
27.第二方面,本技术实施例提供了多进程服务实例部署装置,所述装置包括第一获取模块、放入模块和终止模块。
28.所述第一获取模块,用于获取多进程服务实例和匹配到每个进程上的任务,并创建私有cgroup和公有cgroup;
29.所述放入模块,用于将所述多进程服务实例放入所述私有cgroup,得到第一cgroup;
30.所述终止模块,用于基于所述第一cgroup的内存水位和所述公有cgroup的内存水位,得到终止结果,根据所述终止结果终止相应的所述任务。
31.可选的,所述终止模块,包括:
32.第一分析单元,用于分析所述第一cgroup的内存水位,得到第一分析结果,根据所述第一分析结果将所述第一cgroup中的至少一个进程移动到所述公有cgroup,得到第二cgroup;
33.第二分析单元,用于分析所述第二cgroup的内存水位,得到第二分析结果,根据所述第二分析结果终止相关任务。
34.可选的,所述终止模块,包括:
35.第一获取单元,用于获取私有cgroup内存水位阈值;
36.第三分析单元,用于分析所述第一cgroup的内存水位,若所述第一cgroup的内存水位大于或等于所述私有cgroup内存水位阈值,则将所述第一cgroup中的进程按照内存使用高低的顺序依次移动到所述公有cgroup,得到第二cgroup,直至所述第一cgroup的内存水位小于所述私有cgroup内存水位阈值;
37.第四分析单元,用于分析所述第二cgroup的内存水位,得到第二分析结果,根据所述第二分析结果终止相关任务。
38.可选的,所述终止模块,包括:
39.第二获取单元,用于获取私有cgroup内存水位阈值和公有cgroup内存水位阈值;
40.第五分析单元,用于分析所述第一cgroup的内存水位,若所述第一cgroup的内存水位大于或等于所述私有cgroup内存水位阈值,则将所述第一cgroup中的进程按照内存使用高低的顺序依次移动到所述公有cgroup,得到第二cgroup,直至所述第一cgroup的内存水位小于所述私有cgroup内存水位阈值;
41.第六分析单元,用于分析所述第二cgroup的内存水位,若所述第二cgroup的内存水位大于所述公有cgroup内存水位阈值,则触发向所述第二cgroup中内存使用最多的进程发送终止信号,所述终止信号用于触发所述第二cgroup中内存使用最多的进程终止所述第二cgroup中内存使用最多的进程所对应的任务。
42.可选的,所述装置,还包括:
43.第二获取模块,用于获取私有cgroup内存水位阈值;
44.分析模块,用于分析所述第一cgroup的内存水位,若所述第一cgroup的内存水位小于所述私有cgroup内存水位阈值,则将所述公有cgroup中的进程移动到所述第一cgroup,直至所述第一cgroup的内存水位大于或等于所述私有cgroup内存水位阈值。
45.可选的,所述装置,还包括:
46.生成模块,用于基于终止的任务,生成报错信息,并将所述报错信息在显示界面进行显示;
47.第三获取模块,用于获取输入信息,所述输入信息包括对所述报错信息进行分析的操作信息;
48.响应模块,用于响应于所述输入信息,在所述显示界面显示所述报错信息的分析结果,将所述报错信息的分析结果发送至相关工作人员,用于提示相关工作人员查找任务终止的原因。
49.第三方面,本技术实施例提供了多进程服务实例部署设备,所述设备包括存储器和处理器。存储器用于存储计算机程序;处理器用于执行所述计算机程序时实现上述多进程服务实例部署方法的步骤。
50.第四方面,本技术实施例提供了一种可读存储介质,所述可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现上述多进程服务实例部署方法的步骤。
51.本发明的有益效果为:
52.1、本发明通过引入内核cgroup技术,开辟私有cgroup区和公用cgroup区,选择并限制内存超限的进程的资源使用,同时在内存超限时,触发业务撤销操作,降低程序oom概率,降低整个实例的整体不可用的风险。
53.2、利用本发明中的方法用户可以通过出错信息获知内存不足导致交易失败,解决整个实例oom而无法获知出错原因的问题。
54.本发明的其他特征和优点将在随后的说明书阐述,并且,部分地从说明书中变得显而易见,或者通过实施本发明实施例了解。本发明的目的和其他优点可通过在所写的说明书、权利要求书、以及附图中所特别指出的结构来实现和获得。
附图说明
55.为了更清楚地说明本发明实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本发明的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
56.图1是本发明实施例中所述的多进程服务实例部署方法流程示意图;
57.图2是本发明实施例中所述的多进程服务实例部署装置结构示意图;
58.图3是本发明实施例中所述的多进程服务实例部署设备结构示意图。
具体实施方式
59.为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本发明实施例的组件可以以各种不同的配置来布置和设计。因此,以下对在附图中提供的本发明的实施例的详细描述并非旨在限制要求保护的本发明的范围,而是仅仅表示本发明的选定实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
60.应注意到:相似的标号或字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。同时,在本发明的描述中,术语“第一”、“第二”等仅用于区分描述,而不能理解为指示或暗示相对重要性。
61.实施例1
62.如图1所示,本实施例提供了多进程服务实例部署方法,该方法包括步骤s1、步骤s2和步骤s3。
63.步骤s1、获取多进程服务实例和匹配到每个进程上的任务,并创建私有cgroup和公有cgroup;
64.步骤s2、将所述多进程服务实例放入所述私有cgroup,得到第一cgroup;
65.步骤s3、基于所述第一cgroup的内存水位和所述公有cgroup的内存水位,得到终止结果,根据所述终止结果终止相应的所述任务。
66.在本实施例中,通过引入基于内核资源限制的私有cgroup和公共cgroup,可以解决多进程微服务应用程序中某个进程或服务把操作系统内存耗尽,导致整个应用实例重启,所有连接断开,造成一定时间的业务不可用的问题。
67.在本公开的一种具体实施方式中,所述步骤s3,还可以包括步骤s31和步骤s32。
68.步骤s31、分析所述第一cgroup的内存水位,得到第一分析结果,根据所述第一分
析结果将所述第一cgroup中的至少一个进程移动到所述公有cgroup,得到第二cgroup;
69.步骤s32、分析所述第二cgroup的内存水位,得到第二分析结果,根据所述第二分析结果终止相关任务。
70.在本公开的一种具体实施方式中,所述步骤s3,还可以包括步骤s33、步骤s34和步骤s35。
71.步骤s33、获取私有cgroup内存水位阈值;
72.步骤s34、分析所述第一cgroup的内存水位,若所述第一cgroup的内存水位大于或等于所述私有cgroup内存水位阈值,则将所述第一cgroup中的进程按照内存使用高低的顺序依次移动到所述公有cgroup,得到第二cgroup,直至所述第一cgroup的内存水位小于所述私有cgroup内存水位阈值;
73.步骤s35、分析所述第二cgroup的内存水位,得到第二分析结果,根据所述第二分析结果终止相关任务。
74.在本公开的一种具体实施方式中,所述步骤s3,还可以包括步骤s36、步骤s37和步骤s38。
75.步骤s36、获取私有cgroup内存水位阈值和公有cgroup内存水位阈值;
76.步骤s37、分析所述第一cgroup的内存水位,若所述第一cgroup的内存水位大于或等于所述私有cgroup内存水位阈值,则将所述第一cgroup中的进程按照内存使用高低的顺序依次移动到所述公有cgroup,得到第二cgroup,直至所述第一cgroup的内存水位小于所述私有cgroup内存水位阈值;
77.步骤s38、分析所述第二cgroup的内存水位,若所述第二cgroup的内存水位大于所述公有cgroup内存水位阈值,则触发向所述第二cgroup中内存使用最多的进程发送终止信号,所述终止信号用于触发所述第二cgroup中内存使用最多的进程终止所述第二cgroup中内存使用最多的进程所对应的任务。
78.在本实施例中,当所述第一cgroup的内存水位大于或等于所述私有cgroup总内存的80%时,就会将所述第一cgroup中的进程按照内存使用高低的顺序依次移动到所述公有cgroup;若所述第二cgroup的内存水位大于所述公有cgroup总内存的80%就会触发特殊信号处理脚本向所述第二cgroup中内存使用最多的进程发送任务撤销信号,所述第二cgroup中内存使用最多的进程接收到撤销信号后,就会撤销其正在执行的任务。通过引入内核cgroup技术,开辟私有cgroup区和公用cgroup区,选择并限制内存超限的进程的资源使用,同时在内存超限时,触发业务撤销操作,降低程序oom概率,降低整个实例的整体不可用的风险。
79.在本公开的一种具体实施方式中,所述步骤s3后,还可以包括步骤s4和步骤s5。
80.步骤s4、获取私有cgroup内存水位阈值;
81.步骤s5、分析所述第一cgroup的内存水位,若所述第一cgroup的内存水位小于所述私有cgroup内存水位阈值,则将所述公有cgroup中的进程移动到所述第一cgroup,直至所述第一cgroup的内存水位大于或等于所述私有cgroup内存水位阈值。
82.在本实施例中,当所述第一cgroup的内存水位小于所述私有cgroup总内存的80%时,就会将所述公有cgroup中的进程移动到所述第一cgroup。
83.在本公开的一种具体实施方式中,所述步骤s3后,还可以包括步骤s6、步骤s7和步
骤s8。
84.步骤s6、基于终止的任务,生成报错信息,并将所述报错信息在显示界面进行显示;
85.步骤s7、获取输入信息,所述输入信息包括对所述报错信息进行分析的操作信息;
86.步骤s8、响应于所述输入信息,在所述显示界面显示所述报错信息的分析结果,将所述报错信息的分析结果发送至相关工作人员,用于提示相关工作人员查找任务终止的原因。
87.在本实施例中,通过将所述报错信息在显示界面进行显示的方式,可以让用户通过报错信息获知是内存不足导致交易失败,也就是让用户知道交易失败的具体原因,从而解决整个实例oom而无法获知出错原因的问题。
88.同时在本实施例中,还可以对报错信息进行分析,得到工作人员所想要的数据,并且通过将报错信息发送给相关工作人员,可以帮助相关工作人员快速的知道系统业务出问题,以便根据报错信息进行相应的处理。
89.实施例2
90.如图2所示,本实施例提供了多进程服务实例部署装置,所述装置包括第一获取模块701、放入模块702和终止模块703。
91.所述第一获取模块701,用于获取多进程服务实例和匹配到每个进程上的任务,并创建私有cgroup和公有cgroup;
92.所述放入模块702,用于将所述多进程服务实例放入所述私有cgroup,得到第一cgroup;
93.所述终止模块703,用于基于所述第一cgroup的内存水位和所述公有cgroup的内存水位,得到终止结果,根据所述终止结果终止相应的所述任务。
94.在本实施例中,通过引入基于内核资源限制的私有cgroup和公共cgroup,可以解决多进程微服务应用程序中某个进程或服务把操作系统内存耗尽,导致整个应用实例重启,所有连接断开,造成一定时间的业务不可用的问题。
95.在本公开的一种具体实施方式中,所述终止模块703包括第一分析单元7031和第二分析单元7032。
96.所述第一分析单元7031,用于分析所述第一cgroup的内存水位,得到第一分析结果,根据所述第一分析结果将所述第一cgroup中的至少一个进程移动到所述公有cgroup,得到第二cgroup;
97.所述第二分析单元7032,用于分析所述第二cgroup的内存水位,得到第二分析结果,根据所述第二分析结果终止相关任务。
98.在本公开的一种具体实施方式中,所述终止模块703包括第一获取单元7033、第三分析单元7034和第四分析单元7035。
99.所述第一获取单元7033,用于获取私有cgroup内存水位阈值;
100.所述第三分析单元7034,用于分析所述第一cgroup的内存水位,若所述第一cgroup的内存水位大于或等于所述私有cgroup内存水位阈值,则将所述第一cgroup中的进程按照内存使用高低的顺序依次移动到所述公有cgroup,得到第二cgroup,直至所述第一cgroup的内存水位小于所述私有cgroup内存水位阈值;
101.所述第四分析单元7035,用于分析所述第二cgroup的内存水位,得到第二分析结果,根据所述第二分析结果终止相关任务。
102.在本公开的一种具体实施方式中,所述终止模块703包括第二获取单元7036、第五分析单元7037和第六分析单元7038。
103.所述第二获取单元7036,用于获取私有cgroup内存水位阈值和公有cgroup内存水位阈值;
104.所述第五分析单元7037,用于分析所述第一cgroup的内存水位,若所述第一cgroup的内存水位大于或等于所述私有cgroup内存水位阈值,则将所述第一cgroup中的进程按照内存使用高低的顺序依次移动到所述公有cgroup,得到第二cgroup,直至所述第一cgroup的内存水位小于所述私有cgroup内存水位阈值;
105.所述第六分析单元7038,用于分析所述第二cgroup的内存水位,若所述第二cgroup的内存水位大于所述公有cgroup内存水位阈值,则触发向所述第二cgroup中内存使用最多的进程发送终止信号,所述终止信号用于触发所述第二cgroup中内存使用最多的进程终止所述第二cgroup中内存使用最多的进程所对应的任务。
106.在本公开的一种具体实施方式中,所述装置,还包括第二获取模块704和分析模块705。
107.所述第二获取模块704,用于获取私有cgroup内存水位阈值;
108.所述分析模块705,用于分析所述第一cgroup的内存水位,若所述第一cgroup的内存水位小于所述私有cgroup内存水位阈值,则将所述公有cgroup中的进程移动到所述第一cgroup,直至所述第一cgroup的内存水位大于或等于所述私有cgroup内存水位阈值。
109.在本公开的一种具体实施方式中,所述装置,还包括生成模块706、第三获取模块707和响应模块708。
110.所述生成模块706,用于基于终止的任务,生成报错信息,并将所述报错信息在显示界面进行显示;
111.所述第三获取模块707,用于获取输入信息,所述输入信息包括对所述报错信息进行分析的操作信息;
112.所述响应模块708,用于响应于所述输入信息,在所述显示界面显示所述报错信息的分析结果,将所述报错信息的分析结果发送至相关工作人员,用于提示相关工作人员查找任务终止的原因。
113.需要说明的是,关于上述实施例中的装置,其中各个模块执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。
114.实施例3
115.相应于上面的方法实施例,本公开实施例还提供了多进程服务实例部署设备,下文描述的多进程服务实例部署设备与上文描述的多进程服务实例部署方法可相互对应参照。
116.图3是根据一示例性实施例示出的多进程服务实例部署设备800的框图。如图3所示,该多进程服务实例部署设备800可以包括:处理器801,存储器802。该多进程服务实例部署设备800还可以包括多媒体组件803,输入/输出(i/o)接口804,以及通信组件805中的一者或多者。
117.其中,处理器801用于控制该多进程服务实例部署设备800的整体操作,以完成上述的多进程服务实例部署方法中的全部或部分步骤。存储器802用于存储各种类型的数据以支持在该多进程服务实例部署设备800的操作,这些数据例如可以包括用于在该多进程服务实例部署设备800上操作的任何应用程序或方法的指令,以及应用程序相关的数据,例如联系人数据、收发的消息、图片、音频、视频等等。该存储器802可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,例如静态随机存取存储器(static random access memory,简称sram),电可擦除可编程只读存储器(electrically erasable programmable read-only memory,简称eeprom),可擦除可编程只读存储器(erasable programmable read-only memory,简称eprom),可编程只读存储器(programmable read-only memory,简称prom),只读存储器(read-only memory,简称rom),磁存储器,快闪存储器,磁盘或光盘。多媒体组件803可以包括屏幕和音频组件。其中屏幕例如可以是触摸屏,音频组件用于输出和/或输入音频信号。例如,音频组件可以包括一个麦克风,麦克风用于接收外部音频信号。所接收的音频信号可以被进一步存储在存储器802或通过通信组件805发送。音频组件还包括至少一个扬声器,用于输出音频信号。i/o接口804为处理器801和其他接口模块之间提供接口,上述其他接口模块可以是键盘,鼠标,按钮等。这些按钮可以是虚拟按钮或者实体按钮。通信组件805用于该多进程服务实例部署设备800与其他设备之间进行有线或无线通信。无线通信,例如wi-fi,蓝牙,近场通信(near fieldcommunication,简称nfc),2g、3g或4g,或它们中的一种或几种的组合,因此相应的该通信组件805可以包括:wi-fi模块,蓝牙模块,nfc模块。
118.在一示例性实施例中,该多进程服务实例部署设备800可以被一个或多个应用专用集成电路(application specific integrated circuit,简称asic)、数字信号处理器(digitalsignal processor,简称dsp)、数字信号处理设备(digital signal processing device,简称dspd)、可编程逻辑器件(programmable logic device,简称pld)、现场可编程门阵列(field programmable gate array,简称fpga)、控制器、微控制器、微处理器或其他电子元件实现,用于执行上述的多进程服务实例部署方法。
119.在另一示例性实施例中,还提供了一种包括程序指令的计算机可读存储介质,该程序指令被处理器执行时实现上述的多进程服务实例部署方法的步骤。例如,该计算机可读存储介质可以为上述包括程序指令的存储器802,上述程序指令可由该多进程服务实例部署设备800的处理器801执行以完成上述的多进程服务实例部署方法。
120.实施例4
121.相应于上面的方法实施例,本公开实施例还提供了一种可读存储介质,下文描述的一种可读存储介质与上文描述的多进程服务实例部署方法可相互对应参照。
122.一种可读存储介质,可读存储介质上存储有计算机程序,计算机程序被处理器执行时实现上述方法实施例的多进程服务实例部署方法的步骤。
123.该可读存储介质具体可以为u盘、移动硬盘、只读存储器(read-only memory,rom)、随机存取存储器(random access memory,ram)、磁碟或者光盘等各种可存储程序代码的可读存储介质。
124.以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修
改、等同替换、改进等,均应包含在本发明的保护范围之内。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献