尹亞嬌

摘 要 本文設(shè)計了一個輕量級的性能監(jiān)控工具程序tiquinfo, 可應用于Linux系統(tǒng)。本課題用實驗評估了程序運行時占用系統(tǒng)資源情況, 實驗結(jié)果表明它是一個輕量級、高效的監(jiān)控程序。同時,本課題中設(shè)計了另外一個監(jiān)控程序,將服務器運行參數(shù)數(shù)據(jù)實時地、自動地寫入Mysql數(shù)據(jù)庫中,方便遠程用戶讀取參數(shù)信息為之后的集群系統(tǒng)維護做準備。
【關(guān)鍵詞】軟件老化 軟件抗衰 Linux系統(tǒng) 監(jiān)控數(shù)據(jù)獲取 集群監(jiān)控 Mysql數(shù)據(jù)庫
1 Linux系統(tǒng)性能監(jiān)控實現(xiàn)
1.1 實驗平臺的搭建
為了采集系統(tǒng)參數(shù),我們模擬了一個計算機系統(tǒng)的運行環(huán)境。本實驗使用的是聯(lián)想G450筆記本,處理器為Intel(R)Core(TM)2 DuoCPU T6600,安裝內(nèi)存2GB,32位操作系統(tǒng),該筆記本安裝Windows7旗艦版操作系統(tǒng),并安裝虛擬機vmware_Workstation_8.0.2,在虛擬機下安裝Fedora-16-i686-Live-KDE操作系統(tǒng),同時為實現(xiàn)監(jiān)控系統(tǒng)運行狀況,采集性能參數(shù),F(xiàn)edora系統(tǒng)需先安裝sysstat軟件包,為達到集群服務器監(jiān)控的目的,需將性能參數(shù)數(shù)據(jù)寫入Mysql數(shù)據(jù)庫,為此Fedora系統(tǒng)需先安裝Mysql軟件包,并且,需要先手動啟動Mysql數(shù)據(jù)庫相關(guān)服務功能。
1.2 各程序模塊運行結(jié)果示例
在本課題中共設(shè)計了兩部分程序工具,一部分用來提取本地服務器性能參數(shù),一部分用于集群服務器監(jiān)控性能參數(shù)獲取。
1.2.1 提取性能參數(shù)模塊tiquinfo
系統(tǒng)運行時的性能度量是實現(xiàn)軟件抗衰、系統(tǒng)性能優(yōu)化的數(shù)據(jù)來源。Linux運行時,系統(tǒng)的負載、性能度量需要特定參數(shù)衡量,同時,這些參數(shù)值表示性能的好壞,也有一個相對標準,即用戶對系統(tǒng)的期望值。
tiquinfo程序一直在后臺運行,對此設(shè)計了一個子進程,實現(xiàn)循環(huán)執(zhí)行程序功能。在獲取各模塊性能參數(shù)的同時,獲取本地時間,寫入每行數(shù)據(jù)開頭的第一個字段。同時,通過判斷本地時間,在每天23:59:50的時候,清楚一次歷史數(shù)據(jù)。
這部分程序?qū)崿F(xiàn)每隔5分鐘,循環(huán)收集數(shù)據(jù),并在23:59:50清除一次數(shù)據(jù)。
1.2.2 按用戶需求截取時間段模塊getInfo
實驗中設(shè)計的提取性能參數(shù)工具tiquinfo,能夠在后臺運行,每隔5分鐘運行一次,實現(xiàn)性能參數(shù)中粒度的實時采集。另一個截取時間段參數(shù)的工具getInfo能夠根據(jù)用戶需求,用戶輸入時間段,該程序讀取歷史參數(shù)信息,并寫入result文件夾中,用戶可據(jù)此查看特定時間段的參數(shù)。
getInfo模塊運行結(jié)果如圖3-4所示。客戶輸入命令行如“./getInfo 1:05 1:39”,可以獲得時間段1:05分到1:39分的歷史性能參數(shù)信息。
1.2.3 監(jiān)控服務器運行狀況并寫入Mysql數(shù)據(jù)庫
在本實驗中,為了便于呈現(xiàn)寫入Mysql數(shù)據(jù)庫的性能參數(shù),設(shè)置監(jiān)控粒度為3秒。Mysql數(shù)據(jù)庫寫入數(shù)據(jù),需先建立一個庫。本實驗中,建立名為lunwen的數(shù)據(jù)庫存放CPU模塊、Memory模塊、Net模塊的數(shù)據(jù)信息。論文數(shù)據(jù)庫分為CPU、Memory、Net三個表,用來分別存放對應的數(shù)據(jù)。Mysql數(shù)據(jù)庫建立表時,每個表中有相應的結(jié)構(gòu),分列分行存放數(shù)據(jù),每個數(shù)據(jù)都有相應的格式要求。
在實時地、自動地將服務器運行參數(shù)寫入Mysql數(shù)據(jù)庫過程中,有大量數(shù)據(jù)寫入三個表中。遠程用戶可以根據(jù)數(shù)據(jù)庫中信息分析服務器運行健康狀況。Memory模塊采集到的參數(shù)信息在Mysql數(shù)據(jù)庫memory表單中。由Mysql數(shù)據(jù)庫中的信息可知,我們不僅能在本地實時監(jiān)控服務器運行狀況,同時遠程客戶可以通過一些方式很方便地獲取該數(shù)據(jù)庫里的信息。如可以使用JSP程序連接Mysql端口,也可以通過指定IP、指定用戶讀取。
2 實驗結(jié)果評估
2.1 采集的性能參數(shù)結(jié)果評估
系統(tǒng)性能監(jiān)測是一個整體的過程,涉及計算機系統(tǒng)的多個子系統(tǒng),本實驗從CPU,內(nèi)存,IO,網(wǎng)絡(luò)四個方面考量。在實時監(jiān)測的過程中,可以從性能參數(shù)分析得出相應的結(jié)論。
2.2 監(jiān)控程序占用系統(tǒng)資源評估
本實驗中設(shè)計的監(jiān)控程序需一直在后臺運行,實時監(jiān)控系統(tǒng)運行時性能參數(shù)的變化,因此,監(jiān)控程序需是一個輕量級的進程,即該監(jiān)控程序應盡可能少的占用系統(tǒng)資源,如表1所示。
3 結(jié)語
本文設(shè)計了一個輕量級的性能監(jiān)控工具程序tiquinfo, 可應用于Linux系統(tǒng)。本課題用實驗評估了程序運行時占用系統(tǒng)資源情況, 實驗結(jié)果表明它是一個輕量級、高效的監(jiān)控程序。同時,本課題中設(shè)計了另外一個監(jiān)控程序,將服務器運行參數(shù)數(shù)據(jù)實時地、自動地寫入Mysql數(shù)據(jù)庫中,方便遠程用戶讀取參數(shù)信息為之后的集群系統(tǒng)維護做準備。
本文做的只是Linux負載度量的一小部分工作,對于性能監(jiān)控還有更全面的工作需要做,要實現(xiàn)軟件抗衰過程,需要對數(shù)據(jù)進行模型分析,從而預測系統(tǒng)資源耗盡的趨勢,解決何時進行抗衰以及采取何種粒度的抗衰的問題。對于集群監(jiān)控,則更需要進一步研究。
參考文獻
[1]Lei Li KalyanaramanVaidyanathan,Kishor S.Trivedi.An Approach for Estimation of Software Aging in a Web Server[C],ISESE,2002.
[2]徐建,張琨等.基于Linux的計算系統(tǒng)性能監(jiān)控[J].南京理工大學學報,2007,31(05):622-627.
[3]萬詩麗,楊群等.一種基于Agent適用于Web應用的軟件抗衰方法[J].計算機應用研究,2004(08):18-26.