国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于RMI的AIX進程監(jiān)控系統(tǒng)

2013-08-20 04:58:52王飛飛楊好利
電子設(shè)計工程 2013年21期
關(guān)鍵詞:配置文件進程客戶端

王飛飛,楊好利

(平頂山學院 河南 平頂山 467000)

基于RMI的AIX進程監(jiān)控系統(tǒng)是一個對進程資源進行遠程管理的應(yīng)用程序。利用Windows下客戶端連接到AIX服務(wù)器,管理、控制AIX下的進程資源,不僅有效地提高了系統(tǒng)運行的穩(wěn)健性,并且極大程度降低對系統(tǒng)操作人員的技術(shù)要求[1-3]。本系統(tǒng)完成了在Windows下操作AIX服務(wù)器進程的功能,實現(xiàn)了對服務(wù)器進程啟動、停止、監(jiān)控、實時顯示進程信息的功能。通過服務(wù)器端的配置文件,可以靈活的控制系統(tǒng)監(jiān)控的范圍,更好的適應(yīng)用戶的需求。

1 系統(tǒng)分析

1.1 系統(tǒng)架構(gòu)

AIX進程監(jiān)控主要實現(xiàn)對AIX服務(wù)器上運行的指定進程的遠程監(jiān)控和管理。本系統(tǒng)采用一對多的C/S模式,支持多客戶端登錄。其中,客戶端運行在Windows上,主要負責接收并顯示服務(wù)端發(fā)送的進程運行信息,并且向服務(wù)器發(fā)送用戶的啟動進程、終止進程請求、修改配置信息的請求;服務(wù)端運行在AIX服務(wù)器上,負責定時獲取進程運行信息,響應(yīng)客戶端的請求;客戶端和服務(wù)器端采用RMI機制進行消息通信[4-5]。系統(tǒng)網(wǎng)絡(luò)架構(gòu)圖如圖1所示。

1.2 功能分析

服務(wù)器端,由操作員啟動進程監(jiān)控系統(tǒng)或是在AIX系統(tǒng)啟動時自動啟動系統(tǒng)。啟動之后實時的對進程進行監(jiān)控和更新進程信息??蛻舳丝梢哉{(diào)用系統(tǒng)中的遠程方法實現(xiàn)啟動進程、啟動所有進程、結(jié)束進程、結(jié)束所有進程、配置管理、獲取進程信息的功能。

圖1 系統(tǒng)網(wǎng)絡(luò)架構(gòu)圖Fig.1 Systems network architecture figure

在客戶端,由操作員啟動客戶端,客戶端連接到服務(wù)器獲得一個遠程對象,然后啟動一個進程,以設(shè)置的時間間隔從服務(wù)器上讀取進程信息,刷新界面上的進程信息列表。操作員可以在界面上執(zhí)行啟動進程,啟動所有進程,結(jié)束進程,結(jié)束所有進程管理配置文件功能。這些功能在服務(wù)器上實現(xiàn),并提供相應(yīng)的服務(wù),供客戶端調(diào)用??蛻舳擞美鐖D2所示。

圖2 客戶端用例Fig.2 Client use case

1.3 流程分析

系統(tǒng)流程分為客戶端流程和服務(wù)器流程。

1.3.1 客戶端流程

在客戶端界面上提供的功能為:

1)啟動進程操作:如果在列表中的進程沒有被啟動,則可以啟動進程。

2)結(jié)束進程操作:結(jié)束指定的進程,如果進程已經(jīng)結(jié)束,則不執(zhí)行任何操作。

3)顯示進程信息,顯示服務(wù)器上正在運行的進程信息。進程通過遠程方法開啟一個新的線程,一直更新配置文件中指定的進程。

為完成以上功能,進一步確定系統(tǒng)流程如圖3所示。用戶開啟客戶端后首先輸入服務(wù)器的IP和PORT連接到服務(wù)器,并查找遠程對象,取得遠程對象后,利用遠程方法調(diào)用來實現(xiàn)客戶端管理服務(wù)器端的功能。

圖3 客戶端處理流程Fig.3 Client processing flow

1.3.2 服務(wù)器流程

監(jiān)控程序啟動后首先從配置文件讀取進程配置信息,確定需要監(jiān)控的可執(zhí)行程序所在路徑、啟動命令及啟動失敗后的進程最大重啟次數(shù)。然后創(chuàng)建可以供客戶端調(diào)用的遠程對象并注冊到RMI遠程對象服務(wù)器中等待客戶端調(diào)用,當客戶端發(fā)送一個調(diào)用請求時,服務(wù)器會執(zhí)行不同方法,然后返回執(zhí)行的結(jié)果[6-7]。執(zhí)行簡單流程如圖4所示。

圖4 服務(wù)器流程Fig.4 Server processing flow

2 系統(tǒng)實現(xiàn)

2.1 RMI通信接口及數(shù)據(jù)規(guī)定

在遠程對象當中,客戶端程序只能調(diào)用公開的方法,在服務(wù)器的實現(xiàn)中,具體實現(xiàn)這些接口。來完成特定的功能。然后根據(jù)程序利用Java的系統(tǒng)工具來生成樁 (Stub)和框架(Skeleton)文件,以便注冊到RMI命名服務(wù),它允許客戶端去發(fā)現(xiàn)這個遠程服務(wù)。在客戶端也應(yīng)該存在相應(yīng)的樁(Stub)和框架(Skeleton)文件[8]。

RMI接口的說明,服務(wù)器首先定義遠程的接口,公開這些接口可以讓客戶端來調(diào)用,公開接口說明了服務(wù)器實現(xiàn)的功能和提供的服務(wù),客戶端只能訪問接口中指定的功能和服務(wù)。根據(jù)程序需求和功能的定義,在程序中設(shè)計接口主要分為進程監(jiān)控和配置管理兩部分[9-10]。

2.1.1 RMI接口定義

1)進程監(jiān)控接口

進程監(jiān)控接口完成對進程的操作和進程信息的獲取的進行說明,簡要說明如下:

①查詢進程的信息.

②根據(jù)進程名結(jié)束進程,開啟進程

③ 開啟所有進程,根據(jù)進程名結(jié)束所有進程,根據(jù)進程名啟動所有進程。

2)配置文件管理接口

接口主要包括對進程監(jiān)控配置文件的讀取和設(shè)置,管理對各個進程是否監(jiān)控以及進程不正常時重新啟動的次數(shù)。

2.1.2 進程信息結(jié)構(gòu)

實時監(jiān)控進程,在獲得進程的信息后把數(shù)據(jù)放入一二維數(shù)組中,服務(wù)器端開啟一服務(wù)器進程,客戶端可以通過服務(wù)器提供的服務(wù)讀取進程信息,顯示在客戶端。在此數(shù)組中共有13列,各列的定義為:進程名,進程號(PID),參數(shù)CPU,參數(shù)為CPU利用率或者稱為%CPU參數(shù)為CPU利用率或者稱為%CPU,進程的CPU占用時間,啟動時間,內(nèi)存利用率,物理內(nèi)存使用情況,虛擬內(nèi)存使用情況,用戶名,進程狀態(tài),是否自動重啟,進程重啟次數(shù)。

2.2 功能模塊說明

2.2.1 實時監(jiān)控

實時監(jiān)控是系統(tǒng)的主要功能。實現(xiàn)進程監(jiān)控,如果處于監(jiān)控狀態(tài)的進程異常終止,并且同時重啟次數(shù)沒有超過指定配置,則實時監(jiān)控線程會自動啟動該進程,且在該過程中實時更新進程信息,以便客戶端查詢顯示。監(jiān)控算法流程:實時監(jiān)控進程以固定時間間隔運行,在一次操作開始,首先調(diào)用shell腳本獲取所有進程的信息列表(ps表)。從ps列表中讀取一條信息,在進程保存的進程信息列表(data表)查詢匹配項(具有同樣的pid)。如果匹配,判斷信息是否完整,如果完整則更新data列表,否則進程信息獲得異常,置進程信息為“-”。如果查找data列表直至結(jié)尾沒有找到,則從ps列表中讀取下一條數(shù)據(jù)進行匹配操作,直到ps列表到達結(jié)尾或data表被完全更新。

在上一個操作結(jié)束后判斷data表是否完全被更新。如果是,則說明程序全部運行正常,否則說明某些進程不存在。如果有進程不存在,則判斷標志位是否為“T”。如果是,再判斷重啟次數(shù)是否大于配置文件指定的最大重啟次數(shù),如果不大于則啟動進程,并設(shè)置重啟次數(shù)=重啟次數(shù)+1。如果標志位為“F”或是重啟次數(shù)大于配置文件指定的最大重啟次數(shù)則無任何操作。重復處理直到所有data表中的數(shù)據(jù)處理完畢。

經(jīng)過如上操作,則完成了一次實時監(jiān)控的進程掃描和進程信息更新操作。

2.2.2 啟動功能

系統(tǒng)利用Java系統(tǒng)的ProcessBuilder來啟動進程,啟動成功,則更新監(jiān)控列表中的進程標志和進程PID部分,以便在監(jiān)控和操作中使用。在啟動時置進程監(jiān)控標志位為“T”,在服務(wù)器的實時監(jiān)控中對其進行監(jiān)控,同時復位進程重啟次數(shù)為0。啟動完畢,在日志文件中記錄。在啟動所有的進程操作中,創(chuàng)建多個線程來調(diào)用啟動單個進程的方法來啟動所有的進程,使用線程提高程序的效率。功能核心代碼如下:

1)創(chuàng)建一個ProcessBuilder對象,參數(shù)為要啟動的進程命令行啟動命令。

2)設(shè)置啟動的目錄,在配置文件中指定為taskPath。

3)調(diào)用 ProcessBuilder對象的 start()啟動程序,生成一Process對象。

4)獲得Process對象的 InputStream,讀取被啟動進程的輸出。默認第一行為進程的pid,在進程列表data表中記錄進程pid。

5)設(shè)置進程的標志位為“T”,重置重啟次數(shù)為0。

6)以上操作完成了啟動一個進程的過程。如果啟動讀不到進程的信息則由實時監(jiān)控程序通過進程名來查找進程pid。

2.2.3 結(jié)束功能

采用系統(tǒng)的底層“kill-9 pid”命令來結(jié)束一個進程,結(jié)束進程的流程和啟動進程相似,只在開始構(gòu)造ProcessBuilder時傳遞不同的參數(shù)。結(jié)束的同時,設(shè)置結(jié)束進程的標志位為“F”,表示此進程正常結(jié)束,實時監(jiān)控進程不再對其進行監(jiān)控,不會因為進程的結(jié)束而重新啟動此進程,并重置進程重啟次數(shù)為0。在啟動功能和結(jié)束功能的操作過程中都設(shè)置系統(tǒng)的互斥信號量,保證監(jiān)控操作和啟動操作,結(jié)束操作之間不會有沖突的發(fā)生。

2.2.4 配置管理

為提高程序的可移植性和可擴展性,本系統(tǒng)將進程監(jiān)控的相關(guān)信息保存在服務(wù)端的Montior.conf配置文件中。該配置文件中包含子系統(tǒng)的安裝目錄和進程名,進程啟動命令以及是否監(jiān)控,同時定義了子系統(tǒng)不正常時的重啟次數(shù)。

為了提高程序的可維護性,和靈活性。系統(tǒng)在客戶端為用戶提供了圖形化的配置管理功能,該功能利用RMI遠程方法調(diào)用實現(xiàn)對遠程服務(wù)器上配置文件的修改。

3 結(jié)束語

AIX進程監(jiān)控系統(tǒng)是基于C/S架構(gòu)的應(yīng)用程序,主要實現(xiàn)用戶啟動單個或多個進程、結(jié)束單個或多個進程、監(jiān)控進程的功能,程序具有很好的配置性和可擴展性,系統(tǒng)運行穩(wěn)健性得到提高,同時降低了對系統(tǒng)操作人員的技術(shù)要求,但由于不同的系統(tǒng)采用的ps有不同的實現(xiàn),程序的可移植性受到一定限制。

[1](美)Paul Love,Joe MerLino,等著.Unix入門經(jīng)典[M].張楚雄,許文昭,譯.北京:清華大學出版社,2006.

[2](美)Ellie Quigley,著.Unix Shell范例精解[M].3版.劉洪濤譯.北京:清華大學出版社,2004.

[3](美)Amir Afzal,著.Unix初級教程[M].4版.李石君,曾平,陳愛莉,等譯.北京:電子工業(yè)出版社,2007.

[4]蔡敏,徐慧慧,黃炳強,編著.UML基礎(chǔ)與Rose建模教程 [M].北京:人民郵電出版社,2006.

[5]王少鋒.UML面向?qū)ο蠹夹g(shù)教程[M].北京:清華大學出版社,2004.

[6]劉楠,金護平.RMI分布式對象技術(shù)的研究與應(yīng)用[J].航空計算技術(shù),2009,39(01):142-145.

LIU Nan,JIN Hu-ping.RMI distributed object technology researchandapplication[J].AeronauticalComputingTechnique,2009,39(1):142-145.

[7]楊文嘉,夏士雄.基于Java RMI對等交互模型的研究與實現(xiàn)[J].微計算機信息,2008,24(3):194-195,155.

YANG Wen-jia,Xia Shi-xiong.Research and realization of P2P interaction model based on Java RMI[J].Microcomputer Information,2008,24(3):194-195,155.

[8]高雅俠,鄒海榮.基于Java的RMI技術(shù)的研究與應(yīng)用[J].計算機與數(shù)字工程,2011,39(8):174-177.

GAO Ya-xia,ZOU Hai-rong.Research and application of RMI technology based on java[J].Computer& Digital Engineering,2011,39(8):174-177.

[9]呂鋒,鮑剛.基于客戶端緩存提高Java RMI性能的方法[J].計算機工程與設(shè)計,2008,29(17):4450-4452,4457.

LV Feng,BAO Gang.Method for Java RMI based on client cache with improved performance[J].Computer Engineering and Design,2008,29(17):4450-4452,4457.

[10](美)Brett Spell著.Java高級教程[M].2版.董梁,劉艷,譯.北京:清華大學出版社,2006.

猜你喜歡
配置文件進程客戶端
提示用戶配置文件錯誤 這樣解決
搭建簡單的Kubernetes集群
互不干涉混用Chromium Edge
債券市場對外開放的進程與展望
中國外匯(2019年20期)2019-11-25 09:54:58
忘記ESXi主機root密碼怎么辦
縣級臺在突發(fā)事件報道中如何應(yīng)用手機客戶端
傳媒評論(2018年4期)2018-06-27 08:20:24
孵化垂直頻道:新聞客戶端新策略
傳媒評論(2018年4期)2018-06-27 08:20:16
基于Vanconnect的智能家居瘦客戶端的設(shè)計與實現(xiàn)
電子測試(2018年10期)2018-06-26 05:53:34
社會進程中的新聞學探尋
民主與科學(2014年3期)2014-02-28 11:23:03
我國高等教育改革進程與反思
灵武市| 汝州市| 甘德县| 黄骅市| 故城县| 巧家县| 萍乡市| 五原县| 双江| 柳江县| 密云县| 揭东县| 邮箱| 柳河县| 阳朔县| 苗栗县| 唐海县| 东城区| 灵丘县| 克什克腾旗| 宜丰县| 扶沟县| 龙川县| 老河口市| 三亚市| 驻马店市| 沂南县| 洪泽县| 安新县| 娄底市| 敖汉旗| 耒阳市| 马边| 界首市| 香格里拉县| 南乐县| 安西县| 沙河市| 汪清县| 商河县| 东乡县|