两个人的电影免费视频_国产精品久久久久久久久成人_97视频在线观看播放_久久这里只有精品777_亚洲熟女少妇二三区_4438x8成人网亚洲av_内谢国产内射夫妻免费视频_人妻精品久久久久中国字幕

一種系統(tǒng)日志的控制方法和裝置制造方法

文檔序號:6537920閱讀:124來源:國知局
一種系統(tǒng)日志的控制方法和裝置制造方法
【專利摘要】本發(fā)明提供了一種系統(tǒng)日志的控制方法和裝置,以解決大量的日志消息導致系統(tǒng)的負荷進一步升高,消耗較多內存資源的問題。其中,所述系統(tǒng)日志所在的系統(tǒng)包括至少一個功能模塊和日志任務消息隊列,所述方法包括:接收所述系統(tǒng)中各個功能模塊發(fā)送的日志消息;監(jiān)控所述系統(tǒng)的負荷狀態(tài);當所述系統(tǒng)的負荷大于預設的流控閾值時,降低發(fā)送至所述日志任務消息隊列的日志消息的數(shù)量。本發(fā)明可以避免在系統(tǒng)的負荷較高時,大量的日志消息導致系統(tǒng)的負荷進一步升高,消耗較多的內存資源的問題。
【專利說明】一種系統(tǒng)日志的控制方法和裝置
【技術領域】
[0001]本發(fā)明涉及日志控制【技術領域】,特別是涉及一種系統(tǒng)日志的控制方法和裝置。
【背景技術】
[0002]系統(tǒng)日志是系統(tǒng)運行過程中各功能模塊用來記錄關鍵信息(例如,關鍵的流程、狀態(tài)、消息等)的一種方式,系統(tǒng)中的各個功能模塊在系統(tǒng)運行過程中可以根據(jù)需要將其關鍵信息記錄到系統(tǒng)日志中,從而作為一種事后分析問題的有效手段。
[0003]在目前的系統(tǒng)日志管理過程中,各個功能模塊通過發(fā)送日志消息將日志內容(包括關鍵信息)發(fā)送到日志任務的消息隊列中,再由日志任務從消息隊列中讀取出相應的日志消息,并寫入到日志文件中。
[0004]但是上述方法中,當系統(tǒng)的負荷較高時,如果此時有大量的日志消息需求,則會導致系統(tǒng)的負荷進一步升高,從而影響系統(tǒng)的運行;另外,由于日志任務的處理過程涉及到效率較低的I/o (Input/Output,輸入/輸出)操作,任務的優(yōu)先級較低,因此還會導致日志消息大量累積到系統(tǒng)緩沖區(qū),從而會消耗較多的內存資源。

【發(fā)明內容】

[0005]本發(fā)明提供一種系統(tǒng)日志的控制方法和裝置,以解決當系統(tǒng)的負荷較高時,大量的日志消息導致系統(tǒng)的負荷進一步升高,并且消耗較多的內存資源的問題。
[0006]為了解決上述問題,本發(fā)明公開了一種系統(tǒng)日志的控制方法,其特征在于,所述系統(tǒng)日志所在的系統(tǒng)包括至少一個功能模塊和日志任務消息隊列,所述方法包括:
[0007]接收所述系統(tǒng)中各個功能模塊發(fā)送的日志消息;
[0008]監(jiān)控所述系統(tǒng)的負荷狀態(tài);
[0009]當所述系統(tǒng)的負荷大于預設的流控閾值時,降低發(fā)送至所述日志任務消息隊列的日志消息的數(shù)量。
[0010]優(yōu)選地,所述降低發(fā)送至所述日志任務消息隊列的日志消息的數(shù)量的步驟包括:
[0011]采用整體控制方式降低發(fā)送至所述日志任務消息隊列的日志消息的數(shù)量;
[0012]和/ 或,
[0013]采用均衡控制方式降低發(fā)送至所述日志任務消息隊列的日志消息的數(shù)量;
[0014]和/ 或,
[0015]采用模塊控制方式降低發(fā)送至所述日志任務消息隊列的日志消息的數(shù)量;
[0016]和/ 或,
[0017]采用精細控制方式降低發(fā)送至所述日志任務消息隊列的日志消息的數(shù)量。
[0018]優(yōu)選地,所述采用整體控制方式降低發(fā)送至所述日志任務消息隊列的日志消息的數(shù)量的步驟包括:
[0019]將所述系統(tǒng)的負荷與預設的流控上限和流控下限進行比較;
[0020]若所述系統(tǒng)的負荷大于預設的流控上限,則判斷當前的日志記錄狀態(tài);[0021]若為開啟狀態(tài),則修改為關閉狀態(tài),舍棄所述各個功能模塊發(fā)送的日志消息;
[0022]若所述系統(tǒng)的負荷小于預設的流控下限,則判斷當前的日志記錄狀態(tài);
[0023]若為關閉狀態(tài),則修改為開啟狀態(tài),將所述各個功能模塊發(fā)送的日志消息發(fā)送至所述日志任務消息隊列。
[0024]優(yōu)選地,所述系統(tǒng)還包括多個令牌,所述令牌的狀態(tài)包括空閑狀態(tài)和占用狀態(tài),所述采用均衡控制方式降低發(fā)送至所述日志任務消息隊列的日志消息的數(shù)量的步驟包括:
[0025]獲取所述系統(tǒng)中處于空閑狀態(tài)的令牌數(shù)量;
[0026]從所述日志消息中選取與所述處于空閑狀態(tài)的令牌數(shù)量相同數(shù)量的日志消息;
[0027]將選取的日志消息發(fā)送至所述日志任務消息隊列,將剩余的日志消息進行緩存。
[0028]優(yōu)選地,所述日志消息包括發(fā)送時間,
[0029]所述從所述日志消息中選取與所述處于空閑狀態(tài)的令牌數(shù)量相同數(shù)量的日志消息的步驟包括:
[0030]按照所述發(fā)送時間的先后順序對所述日志消息進行排序;
[0031]從排序后的第一個日志消息開始,選取與所述處于空閑狀態(tài)的令牌數(shù)量相同數(shù)量的曰志消息。
[0032]優(yōu)選地,所述采用模塊控制方式降低發(fā)送至所述日志任務消息隊列的日志消息的數(shù)量的步驟包括:
[0033]分別統(tǒng)計預設的單位時間內所述各個功能模塊發(fā)送的日志消息的數(shù)量;
[0034]若某個功能模塊發(fā)送的日志消息的數(shù)量大于預設的數(shù)量閾值,則舍棄該功能模塊發(fā)送的日志消息,將剩余的日志消息發(fā)送至所述日志任務消息隊列。
[0035]優(yōu)選地,所述日志消息包括發(fā)送該日志消息的功能模塊標識,
[0036]所述分別統(tǒng)計預設的單位時間內所述各個功能模塊發(fā)送的日志消息的數(shù)量的步驟包括:
[0037]分別統(tǒng)計預設的單位時間內包括同一功能模塊標識的日志消息的數(shù)量,將所述數(shù)量作為所述同一功能模塊標識對應的功能模塊發(fā)送的日志消息的數(shù)量;
[0038]所述舍棄該功能模塊發(fā)送的日志消息的步驟包括:
[0039]舍棄包括該功能模塊標識的日志消息。
[0040]優(yōu)選地,所述采用精細控制方式降低發(fā)送至所述日志任務消息隊列的日志消息的數(shù)量的步驟包括:
[0041]判斷預設的單位時間內所述各個功能模塊發(fā)送的日志消息中是否存在重復的日志消息;
[0042]若存在,則從所述重復的日志消息中選取一個或多個日志消息;
[0043]舍棄所述重復的日志消息中未被選取的日志消息,將被選取的日志消息和剩余沒有重復的日志消息發(fā)送至所述日志任務消息隊列。
[0044]優(yōu)選地,所述日志消息包括文件名和行號,
[0045]所述判斷預設的單位時間內所述各個功能模塊發(fā)送的日志消息中是否存在重復的日志消息的步驟包括:
[0046]分別獲取預設的單位時間內所述各個功能模塊發(fā)送的日志消息包括的文件名和行號;[0047]判斷是否存在包括的文件名和行號相同的日志消息;
[0048]若存在,則確定預設的單位時間內所述各個功能模塊發(fā)送的日志消息中存在重復的日志消息,并確定包括的文件名和行號相同的日志消息為重復的日志消息。
[0049]另一方面,本發(fā)明還公開了一種系統(tǒng)日志的控制裝置,其特征在于,所述系統(tǒng)日志所在的系統(tǒng)包括至少一個功能模塊和日志任務消息隊列,所述裝置包括:
[0050]接收模塊,用于接收所述系統(tǒng)中各個功能模塊發(fā)送的日志消息;
[0051]監(jiān)控模塊,用于監(jiān)控所述系統(tǒng)的負荷狀態(tài);
[0052]降低模塊,用于當所述監(jiān)控模塊監(jiān)控到所述系統(tǒng)的負荷大于預設的流控閾值時,降低發(fā)送至所述日志任務消息隊列的日志消息的數(shù)量。
[0053]優(yōu)選地,所述降低模塊包括:
[0054]整體控制子模塊,用于采用整體控制方式降低發(fā)送至所述日志任務消息隊列的日志消息的數(shù)量;
[0055]和/ 或,
[0056]均衡控制子模塊,用于采用均衡控制方式降低發(fā)送至所述日志任務消息隊列的日志消息的數(shù)量;
[0057]和/ 或,
[0058]模塊控制子模塊,用于采用模塊控制方式降低發(fā)送至所述日志任務消息隊列的日志消息的數(shù)量;
[0059]和/ 或,
[0060]精細控制子模塊,用于采用精細控制方式降低發(fā)送至所述日志任務消息隊列的日志消息的數(shù)量。
[0061]優(yōu)選地,所述整體控制子模塊包括:
[0062]比較子單元,用于將所述系統(tǒng)的負荷與預設的流控上限和流控下限進行比較;
[0063]第一判斷子單元,用于當所述比較子單元的比較結果為所述系統(tǒng)的負荷大于預設的流控上限時,判斷當前的日志記錄狀態(tài);
[0064]第一修改子單元,用于當所述第一判斷子單元的判斷結果為開啟狀態(tài)時,修改為關閉狀態(tài),舍棄所述各個功能模塊發(fā)送的日志消息;
[0065]第二判斷子單元,用于當所述比較子單元的比較結果為所述系統(tǒng)的負荷小于預設的流控下限時,判斷當前的日志記錄狀態(tài);
[0066]第二修改子單元,用于當所述第二判斷子單元的判斷結果為關閉狀態(tài)時,修改為開啟狀態(tài),將所述各個功能模塊發(fā)送的日志消息發(fā)送至所述日志任務消息隊列。
[0067]優(yōu)選地,所述系統(tǒng)還包括多個令牌,所述令牌的狀態(tài)包括空閑狀態(tài)和占用狀態(tài),
[0068]所述均衡控制子模塊包括:
[0069]令牌獲取子單元,用于獲取所述系統(tǒng)中處于空閑狀態(tài)的令牌數(shù)量;
[0070]第一選取子單元,用于從所述日志消息中選取與所述處于空閑狀態(tài)的令牌數(shù)量相同數(shù)量的日志消息;
[0071]第一發(fā)送子單元,用于將選取的日志消息發(fā)送至所述日志任務消息隊列;
[0072]緩存子單元,用于將剩余的日志消息進行緩存。
[0073]優(yōu)選地,所述日志消息包括發(fā)送時間,[0074]所述第一選取子單元,具體用于按照所述發(fā)送時間的先后順序對所述日志消息進行排序;從排序后的第一個日志消息開始,選取與所述處于空閑狀態(tài)的令牌數(shù)量相同數(shù)量的曰志消息。
[0075]優(yōu)選地,所述模塊控制子模塊包括:
[0076]統(tǒng)計子單元,用于分別統(tǒng)計預設的單位時間內所述各個功能模塊發(fā)送的日志消息的數(shù)量;
[0077]第二發(fā)送子單元,用于當所述統(tǒng)計子單元統(tǒng)計出某個功能模塊發(fā)送的日志消息的數(shù)量大于預設的數(shù)量閾值時,舍棄該功能模塊發(fā)送的日志消息,將剩余的日志消息發(fā)送至所述日志任務消息隊列。
[0078]優(yōu)選地,所述日志消息包括發(fā)送該日志消息的功能模塊標識,
[0079]所述統(tǒng)計子單元,具體用于分別統(tǒng)計預設的單位時間內包括同一功能模塊標識的日志消息的數(shù)量,將所述數(shù)量作為所述同一功能模塊標識對應的功能模塊發(fā)送的日志消息的數(shù)量;
[0080]所述第二發(fā)送子單元,具體用于舍棄包括該功能模塊標識的日志消息。
[0081]優(yōu)選地,所述精細控制子模塊包括:
[0082]重復判斷子單元,用于判斷預設的單位時間內所述各個功能模塊發(fā)送的日志消息中是否存在重復的日志消息;
[0083]第二選取子單元,用于在所述重復判斷子單元的判斷結果為存在時,從所述重復的日志消息中選取一個或多個日志消息;
[0084]第三發(fā)送子單元,用于舍棄所述重復的日志消息中未被選取的日志消息,將被選取的日志消息和剩余沒有重復的日志消息發(fā)送至所述日志任務消息隊列。
[0085]優(yōu)選地,所述日志消息包括文件名和行號,
[0086]所述重復判斷子單元,具體用于分別獲取預設的單位時間內所述各個功能模塊發(fā)送的日志消息包括的文件名和行號;判斷是否存在包括的文件名和行號相同的日志消息;若存在,則確定預設的單位時間內所述各個功能模塊發(fā)送的日志消息中存在重復的日志消息,并確定包括的文件名和行號相同的日志消息為重復的日志消息。
[0087]與現(xiàn)有技術相比,本發(fā)明包括以下優(yōu)點:
[0088]本發(fā)明中可以對系統(tǒng)的負荷狀態(tài)進行監(jiān)控,在接收所述系統(tǒng)中各個功能模塊發(fā)送的日志消息之后,如果當前系統(tǒng)的負荷大于預設的流控閾值,則可以降低發(fā)送至所述日志任務消息隊列的日志消息的數(shù)量。由于降低了發(fā)送的日志消息的數(shù)量,因此可以避免在系統(tǒng)的負荷較高時,大量的日志消息導致系統(tǒng)的負荷進一步升高,消耗較多的內存資源的問題。
【專利附圖】

【附圖說明】
[0089]圖1是本發(fā)明的一種系統(tǒng)日志所在的系統(tǒng)的示意圖;
[0090]圖2是本發(fā)明實施例一的一種系統(tǒng)日志的控制方法的流程圖;
[0091]圖3是本發(fā)明實施例二的一種系統(tǒng)日志的控制方法的流程圖;
[0092]圖4是本發(fā)明實施例三的一種系統(tǒng)日志的控制裝置的結構框圖?!揪唧w實施方式】
[0093]為使本發(fā)明的上述目的、特征和優(yōu)點能夠更加明顯易懂,下面結合附圖和【具體實施方式】對本發(fā)明作進一步詳細的說明。
[0094]為了解決當系統(tǒng)的負荷較高時,大量的日志消息導致系統(tǒng)的負荷進一步升高,并且消耗較多的內存資源的問題,本發(fā)明提出了一種通過進行日志數(shù)量控制以對系統(tǒng)日志進行控制的方式。
[0095]參照圖1,示出了本發(fā)明一種系統(tǒng)日志所在的系統(tǒng)的示意圖,根據(jù)圖1,該系統(tǒng)可以包括多個功能模塊(功能模塊I,功能模塊2,...,功能模塊N)、日志數(shù)量控制模塊和日志任務管理模塊,其中所述日志任務管理模塊中可以包括日志任務消息隊列。
[0096]在目前的系統(tǒng)日志管理過程中,各個功能模塊是直接將包括日志內容(包括關鍵信息)的日志消息發(fā)送到日志任務管理模塊的日志任務消息隊列中,再由日志任務管理模塊從日志任務消息隊列中讀取出相應的日志消息,并寫入到日志文件中,因此大量的日志消息將會導致系統(tǒng)負荷上升,消耗較多的內存資源。
[0097]圖1所示的系統(tǒng)中,增加了日志數(shù)量控制模塊對發(fā)送給日志任務管理模塊的日志消息的數(shù)量進行控制。首先,各個功能模塊可以通過異步消息的方式將日志消息發(fā)送到日志數(shù)量控制模塊,日志數(shù)量控制模塊根據(jù)實際情況對日志消息的數(shù)量進行控制,然后再由日志數(shù)量控制模塊將日志消息發(fā)送至日志任務管理模塊的日志任務消息隊列中。
[0098]下面,通過以下各個實施例對一種系統(tǒng)日志的控制方法和裝置進行說明,下述的多個實施例均可以在上述系統(tǒng)日志所在的系統(tǒng)的基礎上實現(xiàn)。
[0099]實施例一:
[0100]參照圖2,示出了本發(fā)明實施例一的一種系統(tǒng)日志的控制方法的流程圖,該方法具體可以包括以下步驟:
[0101]步驟201,接收所述系統(tǒng)中各個功能模塊發(fā)送的日志消息。
[0102]步驟202,監(jiān)控所述系統(tǒng)的負荷狀態(tài)。
[0103]步驟203,當所述系統(tǒng)的負荷大于預設的流控閾值時,降低發(fā)送至所述日志任務消息隊列的日志消息的數(shù)量。
[0104]上述步驟201-步驟203均可以為圖1中的日志數(shù)量控制模塊所執(zhí)行的功能,對于所述系統(tǒng)的負荷狀態(tài),可以實時進行監(jiān)控,也可以定期進行監(jiān)控。如果判斷出所述系統(tǒng)的負荷小于或等于預設的流控閾值,則可以說明暫時無需對日志消息的數(shù)量進行控制,因此可以直接將所接收到的各個功能模塊發(fā)送的日志消息發(fā)送至日志任務消息隊列中;如果判斷出所述系統(tǒng)的負荷大于預設的流控閾值,則可以說明此時的日志消息會造成系統(tǒng)負荷進一步上升,影響系統(tǒng)的性能,因此可以降低發(fā)送至所述日志任務消息隊列的日志消息的數(shù)量,從而避免對系統(tǒng)的負荷造成較大的沖擊。
[0105]實施例二:
[0106]下面,通過本實施例二對系統(tǒng)日志的控制方法進行詳細介紹。
[0107]參照圖3,示出了本發(fā)明實施例二的一種系統(tǒng)日志的控制方法的流程圖,該方法具體可以包括以下步驟:
[0108]步驟301,接收所述系統(tǒng)中各個功能模塊發(fā)送的日志消息。
[0109]系統(tǒng)日志是系統(tǒng)運行過程中各功能模塊用來記錄關鍵信息(例如,關鍵的流程、狀態(tài)、消息等)的一種方式。在系統(tǒng)運行過程中,系統(tǒng)中的各個功能模塊可以根據(jù)需要將自身的關鍵信息記錄到系統(tǒng)日志中,從而作為一種事后分析問題的有效手段。各個功能模塊可以將要記錄的關鍵信息等日志內容以日志消息的形式進行發(fā)送。
[0110]步驟302,監(jiān)控所述系統(tǒng)的負荷狀態(tài)。
[0111]本發(fā)明實施例中,所述監(jiān)控可以為實時監(jiān)控,也可以為定期監(jiān)控,對于定期監(jiān)控的周期,本領域技術人員根據(jù)實際經(jīng)驗進行相關設置即可,例如設置為5s,本發(fā)明實施例對此并不加以限制。
[0112]其中,所述系統(tǒng)的負荷狀態(tài)可以根據(jù)系統(tǒng)的CPU (Central ProcessingUnit,中央處理單元)占用率、或者系統(tǒng)的消息緩沖區(qū)占用率等參數(shù)確定。例如,可以獲取系統(tǒng)當前的CPU占用率,并將所述(PU占用率作為系統(tǒng)當前的負荷;或者獲取系統(tǒng)當前的消息緩沖區(qū)占用率,并將所述消息緩沖區(qū)占用率作為系統(tǒng)當前的負荷。當然,還可以結合CPU占用率和消息緩沖區(qū)占用率兩者來確定系統(tǒng)的負荷狀態(tài),或者還可以通過系統(tǒng)中的其他性能參數(shù)確定系統(tǒng)的負荷狀態(tài),本發(fā)明實施例對此并不加以限制。
[0113]步驟303,判斷所述系統(tǒng)的負荷是否大于預設的流控閾值。
[0114]在確定系統(tǒng)的當前負荷狀態(tài)之后,可以根據(jù)系統(tǒng)的負荷狀態(tài)對發(fā)送至日志任務消息隊列的日志消息的數(shù)量進行控制。因此,首先可以判斷所述系統(tǒng)的負荷是否大于預設的流控閾值,若是,則執(zhí)行步驟304 ;若否,則執(zhí)行步驟305。
[0115]對于所述流控閾值,本領域技術人員根據(jù)實際經(jīng)驗進行相關設置即可,例如設置所述流控閾值為70%,等等,本發(fā)明實施例對此并不加以限制。
[0116]步驟304,降低發(fā)送至所述日志任務消息隊列的日志消息的數(shù)量。
[0117]如果判斷出所述系統(tǒng)的負荷大于預設的流控閾值,則可以說明此時系統(tǒng)負荷較高,如果再有大量的日志消息發(fā)送至日志任務消息隊列,則將會導致系統(tǒng)負荷進一步提升,消耗較多的內存資源。因此,在該種情況下,本發(fā)明實施例中可以降低發(fā)送至所述日志任務消息隊列的日志消息的數(shù)量,以減輕對系統(tǒng)負荷造成的沖擊。
[0118]在本發(fā)明的一種優(yōu)選實施例中,該步驟304可以包括:采用整體控制方式降低發(fā)送至所述日志任務消息隊列的日志消息的數(shù)量;和/或,采用均衡控制方式降低發(fā)送至所述日志任務消息隊列的日志消息的數(shù)量;和/或,采用模塊控制方式降低發(fā)送至所述日志任務消息隊列的日志消息的數(shù)量;和/或,采用精細控制方式降低發(fā)送至所述日志任務消息隊列的日志消息的數(shù)量。也即,該步驟304中可以從上述整體控制方式、均衡控制方式、模塊控制方式和精細控制方式中選擇任何一種、或者選擇其中的任意兩種方式結合、或者選擇其中的任意三種方式結合、或者選擇全部四種方式結合,完成降低發(fā)送至所述日志任務消息隊列的日志消息的數(shù)量的過程。
[0119]下面,分別對上述四種控制方式進行介紹。
[0120]1、整體控制方式
[0121]本發(fā)明實施例中,采用整體控制方式降低發(fā)送至所述日志任務消息隊列的日志消息的數(shù)量的步驟具體可以包括以下子步驟:
[0122]子步驟al,將所述系統(tǒng)的負荷與預設的流控上限和流控下限進行比較;
[0123]本發(fā)明實施例中,可以預先設置一個流控上限和一個流控下限,用于控制是否要向日志任務消息隊列發(fā)送日志消息。為了保證系統(tǒng)負荷更加均衡,上述流控上限和流控下限兩個數(shù)值之間具有一定間隔,即設置一定的緩沖區(qū),當系統(tǒng)負荷位于緩沖區(qū)時,將保持當前的狀態(tài)。例如,可以設置流控上限為80%,流控下限為60%,則60%-80%之間即為緩沖區(qū)。
[0124]若所述系統(tǒng)的負荷大于預設的流控上限,則執(zhí)行子步驟a2 ;若所述系統(tǒng)的負荷小于預設的流控下限,則執(zhí)行子步驟a4 ;若所述系統(tǒng)的負荷大于或等于預設的流控下限,并且小于或等于預設的流控上限,則執(zhí)行子步驟a6。
[0125]在本發(fā)明的一種優(yōu)選實施例中,還可以在上述日志數(shù)量控制模塊中設置一個日志記錄狀態(tài),其可以包括開啟狀態(tài)和關閉狀態(tài),當日志記錄狀態(tài)為開啟狀態(tài)時,表示允許將各個功能模塊發(fā)送的日志消息發(fā)送至日志任務消息隊列中,當日志記錄狀態(tài)為關閉狀態(tài)時,表示不允許將將各個功能模塊發(fā)送的日志消息發(fā)送至日志任務消息隊列中,因此可以根據(jù)該日志記錄狀態(tài)控制是否向日志任務消息隊列發(fā)送日志消息。
[0126]子步驟a2,判斷當前的日志記錄狀態(tài);
[0127]當所述系統(tǒng)的負荷大于預設的流控上限時,則可以說明此時的系統(tǒng)負荷較為緊張,因此在該種情況下,將屏蔽各個功能模塊發(fā)送的日志消息。由于對系統(tǒng)負荷狀態(tài)的監(jiān)控是實時或定期進行的,因此在本次處理之前可能已經(jīng)對日志記錄狀態(tài)進行了修改。因此,本發(fā)明實施例中可以首先判斷當前的日志記錄狀態(tài),如果為開啟狀態(tài),則執(zhí)行子步驟a3;如果為關閉狀態(tài),則執(zhí)行子步驟a6。
[0128]子步驟a3,修改為關閉狀態(tài),舍棄所述各個功能模塊發(fā)送的日志消息;
[0129]如果在所述系統(tǒng)的負荷大于預設的流控上限,并且當前的日志記錄狀態(tài)為開啟狀態(tài),此時則要將所述日志記錄狀態(tài)修改為關閉狀態(tài),舍棄所述各個功能模塊發(fā)送的日志消息,即拒絕將所述各個功能模塊發(fā)送的日志消息發(fā)送至日志任務消息隊列中。
[0130]子步驟a4,判斷當前的日志記錄狀態(tài);
[0131]當所述系統(tǒng)的負荷小于預設的流控下限時,則可以說明此時的系統(tǒng)負荷較為空閑,因此在該種情況下,可以將各個功能模塊發(fā)送的日志消息發(fā)送至日志任務消息隊列中。首先可以判斷當前的日志記錄狀態(tài),如果為關閉狀態(tài),則執(zhí)行子步驟a5 ;如果為開啟狀態(tài),則執(zhí)行子步驟a6。
[0132]子步驟a5,修改為開啟狀態(tài),將所述各個功能模塊發(fā)送的日志消息發(fā)送至所述日志任務消息隊列。
[0133]如果在所述系統(tǒng)的負荷小于預設的流控下限,并且當前的日志記錄狀態(tài)為關閉狀態(tài)時,此時則要將所述日志記錄狀態(tài)修改為開啟狀態(tài),并將所述各個功能模塊發(fā)送的日志消息發(fā)送至所述日志任務消息隊列。
[0134]子步驟a6,保持當前的日志記錄狀態(tài)。
[0135]如果在子步驟al中判斷出所述系統(tǒng)的負荷大于或等于預設的流控下限,并且小于或等于預設的流控上限,則可以保持當前的日志記錄狀態(tài)。如果當前的日志記錄狀態(tài)為開啟狀態(tài),則將所述各個功能模塊發(fā)送的日志消息發(fā)送至所述日志任務消息隊列;如果當前的日志記錄狀態(tài)為關閉狀態(tài),則舍棄所述各個功能模塊發(fā)送的日志消息。
[0136]如果在子步驟a2中判斷出當前的日志記錄狀態(tài)為關閉狀態(tài),則可以保持日志記錄狀態(tài)為關閉狀態(tài),舍棄所述各個功能模塊發(fā)送的日志消息,即拒絕將所述各個功能模塊發(fā)送的日志消息發(fā)送至日志任務消息隊列中。
[0137]如果在子步驟a4中判斷出當前的日志記錄狀態(tài)為開啟狀態(tài),則可以保持日志記錄狀態(tài)為開啟狀態(tài),并將所述各個功能模塊發(fā)送的日志消息發(fā)送至日志任務消息隊列中。
[0138]通過整體控制方式,可以在系統(tǒng)的負荷很高時(即大于流量上限時),停止向日志任務消息隊列發(fā)送日志消息,即將發(fā)送至所述日志任務消息隊列的日志消息的數(shù)量降低至零,從而減輕系統(tǒng)的負擔。
[0139]2、均衡控制方式
[0140]本發(fā)明實施例中,采用均衡控制方式降低發(fā)送至所述日志任務消息隊列的日志消息的數(shù)量的步驟具體可以包括以下子步驟:
[0141]子步驟bl,獲取系統(tǒng)中處于空閑狀態(tài)的令牌數(shù)量;
[0142]令牌是一種能夠控制節(jié)點占有媒體的特殊幀,以區(qū)別數(shù)據(jù)幀及其他控制幀。令牌法又稱為許可證法,令牌法的基本思想是:一個獨特稱為令牌的標志信息(一位或多位二進制數(shù)字組成的碼)從一個節(jié)點發(fā)送到另一個節(jié)點,只有獲得令牌的節(jié)點才有權發(fā)送信息包。當一個節(jié)點準備發(fā)送信息包時,首先要等待令牌的到來,當檢測到一個經(jīng)過他的令牌為空閑狀態(tài)的令牌時,即可以俘獲該令牌,并將該令牌的狀態(tài)設置為占用狀態(tài),然后以“幀”為單位向目標節(jié)點發(fā)送信息;信息隨令牌至目標節(jié)點后,目標節(jié)點將信息復制,令牌繼續(xù)環(huán)行返回到發(fā)送節(jié)點,這時發(fā)送站點才將俘獲的令牌釋放,令牌重新成為空閑狀態(tài)。如果所有令牌均為占用狀態(tài),此時希望發(fā)送信息的節(jié)點將要等待空閑狀態(tài)令牌的出現(xiàn)。
[0143]在所述系統(tǒng)日志所在的系統(tǒng)中還可以包括多個令牌,所述令牌的狀態(tài)可以包括空閑狀態(tài)和占用狀態(tài)兩種。本發(fā)明實施例中,可以依據(jù)令牌對發(fā)送至所述日志任務消息隊列的日志消息的數(shù)量進行控制。首先,可以獲取所述系統(tǒng)中處于空閑狀態(tài)的令牌數(shù)量,根據(jù)該令牌數(shù)量進行控制。
[0144]需要說明的是,在上述子步驟bl之前,還可以判斷系統(tǒng)中是否存在處于空閑狀態(tài)的令牌,如果存在,則執(zhí)行子步驟bl,如果不存在,則暫時不做處理(即暫時停止向日志任務消息隊列發(fā)送日志消息),直至存在處于空閑狀態(tài)的令牌時執(zhí)行子步驟bl。
[0145]子步驟b2,從所述日志消息中選取與所述處于空閑狀態(tài)的令牌數(shù)量相同數(shù)量的日志消息;
[0146]在獲取到系統(tǒng)中處于空閑狀態(tài)的令牌數(shù)量之后,即可按照該令牌的數(shù)量向日志任務消息隊列發(fā)送日志消息。具體可以從所述日志消息中選取與所述處于空閑狀態(tài)的令牌數(shù)量相同數(shù)量的日志消息。
[0147]在本發(fā)明的一種優(yōu)選實施例中,所述日志消息除了包括日志內容之外,還可以包括該日志消息的發(fā)送時間,因此本發(fā)明實施例中可以按照所述日志消息的發(fā)送時間從所述日志消息中選取與所述處于空閑狀態(tài)的令牌數(shù)量相同數(shù)量的日志消息。因此,該子步驟b2具體可以包括:按照所述發(fā)送時間的先后順序對所述日志消息進行排序;從排序后的第一個日志消息開始,選取與所述處于空閑狀態(tài)的令牌數(shù)量相同數(shù)量的日志消息。
[0148]當然,還可以采用其他信息從所述日志消息中選取與所述處于空閑狀態(tài)的令牌數(shù)量相同數(shù)量的日志消息,本發(fā)明實施例對此并不加以限制。例如,還可以預先為每個日志消息設置優(yōu)先級,在所述日志消息中還可以包括該日志消息對應的優(yōu)先級,在此種情況下,該子步驟b2具體可以包括:按照所述優(yōu)先級的高低順序對所述日志消息進行排序;從排序后的第一個日志消息開始,選取與所述處于空閑狀態(tài)的令牌數(shù)量相同數(shù)量的日志消息。
[0149]子步驟b3,將選取的日志消息發(fā)送至所述日志任務消息隊列,將剩余的日志消息進行緩存。
[0150]在從所述日志消息中選取與所述處于空閑狀態(tài)的令牌數(shù)量相同數(shù)量的日志消息之后,即可將選取的日志消息通過所述處于空閑狀態(tài)的令牌發(fā)送至所述日志任務消息隊列,并將剩余的日志消息進行緩存。
[0151]在將選取的日志消息通過處于空閑狀態(tài)的令牌成功發(fā)送至所述日志任務消息隊列之后,將釋放該日志消息所占用的令牌,即該日志消息所占用的令牌將從占用狀態(tài)轉換為空閑狀態(tài)。對于排序后緩存的剩余日志消息,將等待成功發(fā)送至日志任務消息隊列的日志消息所釋放的令牌,通過被釋放后處于空閑狀態(tài)的令牌發(fā)送至日志任務消息隊列。
[0152]上述子步驟bl-子步驟b3可以循環(huán)執(zhí)行,即在子步驟b3執(zhí)行完之后,可以返回步驟bl獲取系統(tǒng)中處于空閑狀態(tài)的令牌數(shù)量,如果此時存在空閑狀態(tài)的令牌,則可以從緩存的日志消息中選取與當前處于空閑狀態(tài)的令牌數(shù)量相同數(shù)量的日志消息(該選取過程可以參照上述子步驟b2),最后將選取的日志消息通過所述處于空閑狀態(tài)的令牌發(fā)送至所述日志任務消息隊列。
[0153]通過均衡控制方式,可以在系統(tǒng)的負荷較高時(即大于預設的流量閾值時),通過將發(fā)送至所述日志任務消息隊列的日志消息的數(shù)量降低至與系統(tǒng)中處于空閑狀態(tài)的令牌數(shù)量相同,從而保證日志記錄的均衡,減輕系統(tǒng)的負擔。
[0154]3、模塊控制方式
[0155]本發(fā)明實施例中,采用模塊控制方式降低發(fā)送至所述日志任務消息隊列的日志消息的數(shù)量的步驟具體可以包括以下子步驟:
[0156]子步驟Cl,分別統(tǒng)計預設的單位時間內所述各個功能模塊發(fā)送的日志消息的數(shù)量;
[0157]本發(fā)明實施例中,由于各個功能模塊發(fā)送的日志消息的數(shù)量不均衡,因此還可以采用模塊控制,例如只對發(fā)送的日志消息較多的功能模塊進行流控,而不會影響其他功能模塊。
[0158]隨著系統(tǒng)的運行,各個功能模塊發(fā)送的日志消息的數(shù)量將會累積,因此在本發(fā)明實施例中,統(tǒng)計單位時間內的各個功能模塊發(fā)送的日志消息的數(shù)量是為了找到發(fā)送日志消息頻率最高的功能模塊,如果該功能模塊在單位時間內發(fā)送的日志消息數(shù)量大于預設的數(shù)量閾值則舍棄該功能模塊發(fā)送的日志消息。對于所述單位時間的具體數(shù)值,本領域技術人員根據(jù)具體系統(tǒng)進行調整設置即可,例如可以設置所述單位時間為10分鐘、30分鐘、I小時等等,本發(fā)明實施例對此并不加以限制。
[0159]首先,可以分別統(tǒng)計預設的單位時間內所述各個功能模塊發(fā)送的日志消息的數(shù)量。在本發(fā)明的一種優(yōu)選實施例中,所述日志消息還可以包括發(fā)送該日志消息的功能模塊標識,因此,該子步驟Cl具體可以包括:分別統(tǒng)計預設的單位時間內包括同一功能模塊標識的日志消息的數(shù)量,將所述數(shù)量作為所述同一功能模塊標識對應的功能模塊發(fā)送的日志消息的數(shù)量。
[0160]例如,所述系統(tǒng)中包括3個功能模塊,其標識分別為1、2、3,則可以分別統(tǒng)計預設的單位時間內包括標識1、標識2、標識3的日志消息的數(shù)量,將包括標識I的日志消息的數(shù)量作為功能模塊I發(fā)送的日志消息的數(shù)量,將包括標識2的日志消息的數(shù)量作為功能模塊2發(fā)送的日志消息的數(shù)量,將包括標識3的日志消息的數(shù)量作為功能模塊3發(fā)送的日志消息的數(shù)量,等等。
[0161]需要說明的是,為了統(tǒng)計單位時間內各個功能模塊發(fā)送的日志消息的數(shù)量,還可以在圖1所示的日志數(shù)量控制模塊中設置一個計時器,可以統(tǒng)計從計時開始到時間到達預設的單位時間時,這一單位時間內各個功能模塊發(fā)送的日志消息的數(shù)量,對于具體的過程,本發(fā)明實施例在此不再詳細論述。
[0162]子步驟c2,若某個功能模塊發(fā)送的日志消息的數(shù)量大于預設的數(shù)量閾值,則舍棄該功能模塊發(fā)送的日志消息,將剩余的日志消息發(fā)送至所述日志任務消息隊列。
[0163]本發(fā)明實施例中,可以預先設置一個數(shù)量閾值,并將上述統(tǒng)計的預設的單位時間內各個功能模塊發(fā)送的日志消息的數(shù)量分別與所述數(shù)量閾值進行比較,如果某個功能模塊發(fā)送的日志消息的數(shù)量大于預設的數(shù)量閾值,則可以說明該功能模塊在預設的單位時間內發(fā)送的日志消息較多,在該種情況下可以舍棄該功能模塊發(fā)送的日志消息,并將剩余的日志消息發(fā)送至所述日志任務消息隊列,所述剩余的日志消息即為其它發(fā)送的日志消息的數(shù)量小于或等于預設的數(shù)量閾值的功能模塊發(fā)送的日志消息。其中,舍棄該功能模塊發(fā)送的日志消息的步驟具體可以包括:舍棄包括該功能模塊標識的日志消息。上述過程中,如果存在多個功能模塊在預設的單位時間內發(fā)送的日志消息的數(shù)量大于預設的數(shù)量閾值,則可以舍棄該多個功能模塊發(fā)送的日志消息。
[0164]本發(fā)明實施例中,該子步驟c2還可以采用其他的方式舍棄某個或某幾個功能模塊發(fā)送的日志消息。例如,在子步驟Cl中分別統(tǒng)計預設的單位時間內所述各個功能模塊發(fā)送的日志消息的數(shù)量之后,還可以從其中選取發(fā)送的日志消息的數(shù)量最多的一個或幾個功能模塊,并舍棄該一個或幾個功能模塊發(fā)送的日志消息,然后將剩余的日志消息發(fā)送至所述日志任務消息隊列。
[0165]對于上述數(shù)量閾值的具體數(shù)值,以及具體舍棄幾個功能模塊發(fā)送的日志消息,本領域技術人員根據(jù)實際經(jīng)驗進行相關設定即可,例如可以根據(jù)當前系統(tǒng)負荷的具體情況進行設定,如果系統(tǒng)負荷較高,則將數(shù)量閾值設置為較低的值,將舍棄的個數(shù)設置為較多的個數(shù),如果系統(tǒng)負荷較低,則將數(shù)量閾值設置為較高的值,將舍棄的個數(shù)設置為較少的個數(shù),等等,本發(fā)明實施例對此并不加以限制。
[0166]通過模塊控制方式,可以在系統(tǒng)的負荷較高時(即大于預設的流量閾值時),通過舍棄某些功能模塊發(fā)送的日志消息,可以降低發(fā)送至所述日志任務消息隊列的日志消息的數(shù)量,從而減輕系統(tǒng)的負擔。
[0167]4、精細控制方式
[0168]本發(fā)明實施例中,采用精細控制方式降低發(fā)送至所述日志任務消息隊列的日志消息的數(shù)量的步驟具體可以包括以下子步驟:
[0169]子步驟dl,判斷預設的單位時間內所述各個功能模塊發(fā)送的日志消息中是否存在重復的日志消息;
[0170]系統(tǒng)在運行過程中根據(jù)業(yè)務可能有大量重復的日志消息,根據(jù)系統(tǒng)負荷情況可以選擇對這種重復的日志消息進行流控。首先可以判斷預設的單位時間內所述各個功能模塊發(fā)送的日志消息中是否存在重復的日志消息,若存在,則執(zhí)行子步驟d2,若不存在,則不作處理。
[0171]隨著系統(tǒng)的運行,各個功能模塊發(fā)送的日志消息中存在重復的日志消息的可能性比較大,因此在本發(fā)明實施例中,判斷預設的單位時間內各個功能模塊發(fā)送的日志消息中是否存在重復的日志消息是為了減少重復的日志消息。同樣的,對于所述單位時間的具體數(shù)值,本領域技術人員根據(jù)具體系統(tǒng)進行調整設置即可,例如可以設置所述單位時間為10分鐘、30分鐘、I小時等等,本發(fā)明實施例對此并不加以限制。
[0172]在本發(fā)明的一種優(yōu)選實施例中,所述日志消息還可以包括文件名和行號,因此,該子步驟dl具體可以包括:分別獲取預設的單位時間內所述各個功能模塊發(fā)送的日志消息包括的文件名和行號;判斷是否存在包括的文件名和行號相同的日志消息;若存在,則確定預設的單位時間內所述各個功能模塊發(fā)送的日志消息中存在重復的日志消息,并確定包括的文件名和行號相同的日志消息為重復的日志消息;若不存在,則確定預設的單位時間內所述各個功能模塊發(fā)送的日志消息中不存在重復的日志消息。
[0173]需要說明的是,為了判斷預設的單位時間內所述各個功能模塊發(fā)送的日志消息中是否存在重復的日志消息,還可以在圖1所示的日志數(shù)量控制模塊中設置一個計時器,可以判斷從計時開始到時間到達預設的單位時間時,這一單位時間內各個功能模塊發(fā)送的日志消息中是否存在重復的日志消息,對于具體的過程,本發(fā)明實施例在此不再詳細論述。
[0174]子步驟d2,從所述重復的日志消息中選取一個或多個日志消息;
[0175]如果在預設的單位時間內所接收到的日志消息中存在重復的日志消息,則可以從所述重復的日志消息中選取一個或多個日志消息。本發(fā)明實施例中可以根據(jù)當前系統(tǒng)負荷的情況確定具體選取幾個日志消息。例如,如果系統(tǒng)負荷較高,則可以選取較少的日志消息,如果系統(tǒng)負荷較低,則可以選取較多的日志消息,本領域技術人員根據(jù)實際情況進行相關處理即可,本發(fā)明實施例對此并不加以限制。
[0176]如果是選取一個日志消息,則從所述重復的日志消息中任意選取一個即可,例如選取發(fā)送時間最早的一個日志消息。如果是選取多個日志消息,則可以采用過濾的方法進行選取,例如,首先可以按照發(fā)送時間的先后對所述重復的日志消息進行排序;然后按照預設個數(shù)對排序后的日志消息進行分組,例如可以將每3個日志消息劃分為一組;最后從每組中選取一個日志消息。當然,根據(jù)系統(tǒng)負荷的實際情況,還可以采用其他的方式進行日志消息的選取,本發(fā)明實施例在此不再詳細論述。
[0177]子步驟d3,舍棄所述重復的日志消息中未被選取的日志消息,將被選取的日志消息和剩余沒有重復的日志消息發(fā)送至所述日志任務消息隊列。
[0178]從所述重復的日志消息中選取一個或多個日志消息之后,即可將所述重復的日志消息中未被選取的日志消息舍棄,然后將被選取的日志消息和剩余沒有重復的日志消息發(fā)送至所述日志任務消息隊列。
[0179]通過精細控制方式,可以在系統(tǒng)的負荷較高時(即大于預設的流量閾值時),通過舍棄某些重復的日志消息,可以降低發(fā)送至所述日志任務消息隊列的日志消息的數(shù)量,從而減輕系統(tǒng)的負擔。
[0180]步驟305,將所接收到的各個功能模塊發(fā)送的日志消息發(fā)送至所述日志任務消息隊列。
[0181]如果在步驟303中判斷所述系統(tǒng)的負荷小于或等于預設的流控閾值,則說明當前的系統(tǒng)負荷可以滿足處理各個功能模塊發(fā)送的日志消息的需求,因此暫時可以不對發(fā)送至日志任務消息隊列的日志消息的數(shù)量進行控制,直接將所接收到的各個功能模塊發(fā)送的日志消息發(fā)送至所述日志任務消息隊列即可。
[0182]在將日志消息發(fā)送至所述日志任務消息隊列之后,可以由日志任務從消息隊列中讀取出相應的日志消息,并寫入到日志文件中。對于具體的處理過程,本發(fā)明實施例不再詳細論述。
[0183]本發(fā)明實施例中,主要是根據(jù)系統(tǒng)的負荷狀態(tài)動態(tài)的控制日志消息的發(fā)送,提供了整體控制、均衡控制、模塊控制、精細控制四種控制方式,既保證了系統(tǒng)的正常運行又最大化的保留日志記錄功能,有較好的靈活性和可控性,多種方式可供系統(tǒng)根據(jù)實際情況擇機米用。
[0184]對于前述的各方法實施例,為了簡單描述,故將其都表述為一系列的動作組合,但是本領域技術人員應該知悉,本發(fā)明并不受所描述的動作順序的限制,因為依據(jù)本發(fā)明,某些步驟可以采用其他順序或者同時進行。其次,本領域技術人員也應該知悉,說明書中所描述的實施例均屬于優(yōu)選實施例,所涉及的動作和模塊并不一定是本發(fā)明所必須的。
[0185]實施例三:
[0186]參照圖4,示出了本發(fā)明實施例三的一種系統(tǒng)日志的控制裝置的結構框圖,所述系統(tǒng)日志所在的系統(tǒng)包括至少一個功能模塊和日志任務消息隊列,所述裝置具體可以包括以下模塊:
[0187]接收模塊401,用于接收所述系統(tǒng)中各個功能模塊發(fā)送的日志消息;
[0188]監(jiān)控模塊402,用于監(jiān)控所述系統(tǒng)的負荷狀態(tài);
[0189]降低模塊403,用于當所述監(jiān)控模塊監(jiān)控到所述系統(tǒng)的負荷大于預設的流控閾值時,降低發(fā)送至所述日志任務消息隊列的日志消息的數(shù)量。
[0190]在本發(fā)明的一種優(yōu)選實施例中,所述降低模塊可以包括以下子模塊:
[0191]整體控制子模塊,用于采用整體控制方式降低發(fā)送至所述日志任務消息隊列的日志消息的數(shù)量;
[0192]和/ 或,
[0193]均衡控制子模塊,用于采用均衡控制方式降低發(fā)送至所述日志任務消息隊列的日志消息的數(shù)量;
[0194]和/ 或,
[0195]模塊控制子模塊,用于采用模塊控制方式降低發(fā)送至所述日志任務消息隊列的日志消息的數(shù)量;
[0196]和/ 或,
[0197]精細控制子模塊,用于采用精細控制方式降低發(fā)送至所述日志任務消息隊列的日志消息的數(shù)量。
[0198]其中,所述整體控制子模塊可以包括以下子單元:
[0199]比較子單元,用于將所述系統(tǒng)的負荷與預設的流控上限和流控下限進行比較;
[0200]第一判斷子單元,用于當所述比較子單元的比較結果為所述系統(tǒng)的負荷大于預設的流控上限時,判斷當前的日志記錄狀態(tài);
[0201]第一修改子單元,用于當所述第一判斷子單元的判斷結果為開啟狀態(tài)時,修改為關閉狀態(tài),舍棄所述各個功能模塊發(fā)送的日志消息;
[0202]第二判斷子單元,用于當所述比較子單元的比較結果為所述系統(tǒng)的負荷小于預設的流控下限時,判斷當前的日志記錄狀態(tài);
[0203]第二修改子單元,用于當所述第二判斷子單元的判斷結果為關閉狀態(tài)時,修改為開啟狀態(tài),將所述各個功能模塊發(fā)送的日志消息發(fā)送至所述日志任務消息隊列。
[0204]所述系統(tǒng)還可以還包括多個令牌,所述令牌的狀態(tài)可以包括空閑狀態(tài)和占用狀態(tài)。所述均衡控制子模塊可以包括以下子單元:
[0205]令牌獲取子單元,用于獲取所述系統(tǒng)中處于空閑狀態(tài)的令牌數(shù)量;
[0206]第一選取子單元,用于從所述日志消息中選取與所述處于空閑狀態(tài)的令牌數(shù)量相同數(shù)量的日志消息;
[0207]第一發(fā)送子單元,用于將選取的日志消息發(fā)送至所述日志任務消息隊列;
[0208]緩存子單元,用于將剩余的日志消息進行緩存。其中,所述日志消息還可以包括發(fā)送時間,所述第一選取子單元,具體可以用于按照所述發(fā)送時間的先后順序對所述日志消息進行排序;從排序后的第一個日志消息開始,選取與所述處于空閑狀態(tài)的令牌數(shù)量相同數(shù)量的日志消息。
[0209]本發(fā)明實施例中,在第一發(fā)送子單元將選取的日志消息通過處于空閑狀態(tài)的令牌成功發(fā)送至所述日志任務消息隊列之后,將釋放該日志消息所占用的令牌,即該日志消息所占用的令牌將從占用狀態(tài)轉換為空閑狀態(tài)。對于排序后緩存的剩余日志消息,將等待成功發(fā)送至日志任務消息隊列的日志消息所釋放的令牌,通過被釋放后處于空閑狀態(tài)的令牌發(fā)送至日志任務消息隊列。因此,本發(fā)明實施例中,所述均衡控制子模塊還可以包括令牌釋放子單元,用于在第一發(fā)送子單元將選取的日志消息通過處于空閑狀態(tài)的令牌成功發(fā)送至所述日志任務消息隊列之后,釋放所述日志消息所占用的令牌。
[0210]所述模塊控制子模塊可以包括以下子單元:
[0211]統(tǒng)計子單元,用于分別統(tǒng)計預設的單位時間內所述各個功能模塊發(fā)送的日志消息的數(shù)量;
[0212]第二發(fā)送子單元,用于當所述統(tǒng)計子單元統(tǒng)計出某個功能模塊發(fā)送的日志消息的數(shù)量大于預設的數(shù)量閾值時,舍棄該功能模塊發(fā)送的日志消息,將剩余的日志消息發(fā)送至所述日志任務消息隊列。
[0213]其中,所述日志消息還可以包括發(fā)送該日志消息的功能模塊標識。所述統(tǒng)計子單元,具體可以用于分別統(tǒng)計預設的單位時間內包括同一功能模塊標識的日志消息的數(shù)量,將所述數(shù)量作為所述同一功能模塊標識對應的功能模塊發(fā)送的日志消息的數(shù)量;所述第二發(fā)送子單元,具體可以用于舍棄包括該功能模塊標識的日志消息。
[0214]所述精細控制子模塊可以包括以下子單元:
[0215]重復判斷子單元,用于判斷預設的單位時間內所述各個功能模塊發(fā)送的日志消息中是否存在重復的日志消息;
[0216]第二選取子單元,用于在所述重復判斷子單元的判斷結果為存在時,從所述重復的日志消息中選取一個或多個日志消息;
[0217]第三發(fā)送子單元,用于舍棄所述重復的日志消息中未被選取的日志消息,將被選取的日志消息和剩余沒有重復的日志消息發(fā)送至所述日志任務消息隊列。
[0218]其中,所述日志消息還可以包括文件名和行號,所述重復判斷子單元,具體可以用于分別獲取預設的單位時間內所述各個功能模塊發(fā)送的日志消息包括的文件名和行號;判斷是否存在包括的文件名和行號相同的日志消息;若存在,則確定預設的單位時間內所述各個功能模塊發(fā)送的日志消息中存在重復的日志消息,并確定包括的文件名和行號相同的日志消息為重復的日志消息。
[0219]本發(fā)明實施例中可以對系統(tǒng)的負荷狀態(tài)進行監(jiān)控,在接收所述系統(tǒng)中各個功能模塊發(fā)送的日志消息之后,如果當前系統(tǒng)的負荷大于預設的流控閾值,則可以降低發(fā)送至所述日志任務消息隊列的日志消息的數(shù)量。由于降低了發(fā)送的日志消息的數(shù)量,因此可以避免在系統(tǒng)的負荷較高時,大量的日志消息導致系統(tǒng)的負荷進一步升高,消耗較多的內存資源的問題。
[0220]對于裝置實施例而言,由于其與方法實施例基本相似,所以描述的比較簡單,相關之處參見方法實施例的部分說明即可。[0221]本說明書中的各個實施例均采用遞進的方式描述,每個實施例重點說明的都是與其他實施例的不同之處,各個實施例之間相同相似的部分互相參見即可。
[0222]本發(fā)明可以在由計算機執(zhí)行的計算機可執(zhí)行指令的一般上下文中描述,例如程序模塊。一般地,程序模塊包括執(zhí)行特定任務或實現(xiàn)特定抽象數(shù)據(jù)類型的例程、程序、對象、組件、數(shù)據(jù)結構等等。也可以在分布式計算環(huán)境中實踐本發(fā)明,在這些分布式計算環(huán)境中,由通過通信網(wǎng)絡而被連接的遠程處理設備來執(zhí)行任務。在分布式計算環(huán)境中,程序模塊可以位于包括存儲設備在內的本地和遠程計算機存儲介質中。
[0223]最后,還需要說明的是,在本文中,諸如第一和第二等之類的關系術語僅僅用來將一個實體或者操作與另一個實體或操作區(qū)分開來,而不一定要求或者暗示這些實體或操作之間存在任何這種實際的關系或者順序。而且,術語“包括”、“包含”或者其任何其他變體意在涵蓋非排他性的包含,從而使得包括一系列要素的過程、方法、商品或者設備不僅包括那些要素,而且還包括沒有明確列出的其他要素,或者是還包括為這種過程、方法、商品或者設備所固有的要素。在沒有更多限制的情況下,由語句“包括一個……”限定的要素,并不排除在包括所述要素的過程、方法、商品或者設備中還存在另外的相同要素。
[0224]以上對本發(fā)明所提供的一種系統(tǒng)日志的控制方法和裝置,進行了詳細介紹,本文中應用了具體個例對本發(fā)明的原理及實施方式進行了闡述,以上實施例的說明只是用于幫助理解本發(fā)明的方法及其核心思想;同時,對于本領域的一般技術人員,依據(jù)本發(fā)明的思想,在【具體實施方式】及應用范圍上均會有改變之處,綜上所述,本說明書內容不應理解為對本發(fā)明的限制。
【權利要求】
1.一種系統(tǒng)日志的控制方法,其特征在于,所述系統(tǒng)日志所在的系統(tǒng)包括至少一個功能模塊和日志任務消息隊列,所述方法包括: 接收所述系統(tǒng)中各個功能模塊發(fā)送的日志消息; 監(jiān)控所述系統(tǒng)的負荷狀態(tài); 當所述系統(tǒng)的負荷大于預設的流控閾值時,降低發(fā)送至所述日志任務消息隊列的日志消息的數(shù)量。
2.根據(jù)權利要求1所述的方法,其特征在于,所述降低發(fā)送至所述日志任務消息隊列的日志消息的數(shù)量的步驟包括: 采用整體控制方式降低發(fā)送至所述日志任務消息隊列的日志消息的數(shù)量; 和/或, 采用均衡控制方式降低發(fā)送至所述日志任務消息隊列的日志消息的數(shù)量; 和/或, 采用模塊控制方式降低發(fā)送至所述日志任務消息隊列的日志消息的數(shù)量; 和/或, 采用精細控制方 式降低發(fā)送至所述日志任務消息隊列的日志消息的數(shù)量。
3.根據(jù)權利要求2所述的方法,其特征在于,所述采用整體控制方式降低發(fā)送至所述日志任務消息隊列的日志消息的數(shù)量的步驟包括: 將所述系統(tǒng)的負荷與預設的流控上限和流控下限進行比較; 若所述系統(tǒng)的負荷大于預設的流控上限,則判斷當前的日志記錄狀態(tài); 若為開啟狀態(tài),則修改為關閉狀態(tài),舍棄所述各個功能模塊發(fā)送的日志消息; 若所述系統(tǒng)的負荷小于預設的流控下限,則判斷當前的日志記錄狀態(tài); 若為關閉狀態(tài),則修改為開啟狀態(tài),將所述各個功能模塊發(fā)送的日志消息發(fā)送至所述日志任務消息隊列。
4.根據(jù)權利要求2所述的方法,其特征在于,所述系統(tǒng)還包括多個令牌,所述令牌的狀態(tài)包括空閑狀態(tài)和占用狀態(tài),所述采用均衡控制方式降低發(fā)送至所述日志任務消息隊列的日志消息的數(shù)量的步驟包括: 獲取所述系統(tǒng)中處于空閑狀態(tài)的令牌數(shù)量; 從所述日志消息中選取與所述處于空閑狀態(tài)的令牌數(shù)量相同數(shù)量的日志消息; 將選取的日志消息發(fā)送至所述日志任務消息隊列,將剩余的日志消息進行緩存。
5.根據(jù)權利要求4所述的方法,其特征在于,所述日志消息包括發(fā)送時間, 所述從所述日志消息中選取與所述處于空閑狀態(tài)的令牌數(shù)量相同數(shù)量的日志消息的步驟包括: 按照所述發(fā)送時間的先后順序對所述日志消息進行排序; 從排序后的第一個日志消息開始,選取與所述處于空閑狀態(tài)的令牌數(shù)量相同數(shù)量的日志消息。
6.根據(jù)權利要求2所述的方法,其特征在于,所述采用模塊控制方式降低發(fā)送至所述日志任務消息隊列的日志消息的數(shù)量的步驟包括: 分別統(tǒng)計預設的單位時間內所述各個功能模塊發(fā)送的日志消息的數(shù)量; 若某個功能模塊發(fā)送的日志消息的數(shù)量大于預設的數(shù)量閾值,則舍棄該功能模塊發(fā)送的日志消息,將剩余的日志消息發(fā)送至所述日志任務消息隊列。
7.根據(jù)權利要求6所述的方法,其特征在于,所述日志消息包括發(fā)送該日志消息的功能模塊標識, 所述分別統(tǒng)計預設的單位時間內所述各個功能模塊發(fā)送的日志消息的數(shù)量的步驟包括: 分別統(tǒng)計預設的單位時間內包括同一功能模塊標識的日志消息的數(shù)量,將所述數(shù)量作為所述同一功能模塊標識對應的功能模塊發(fā)送的日志消息的數(shù)量; 所述舍棄該功能模塊發(fā)送的日志消息的步驟包括: 舍棄包括該功能模塊標識的日志消息。
8.根據(jù)權利要求2所述的方法,其特征在于,所述采用精細控制方式降低發(fā)送至所述日志任務消息隊列的日志消息的數(shù)量的步驟包括: 判斷預設的單位時間內所述各個功能模塊發(fā)送的日志消息中是否存在重復的日志消息; 若存在,則從所述重復的日志消息中選取一個或多個日志消息; 舍棄所述重復的日志消息中未被選取的日志消息,將被選取的日志消息和剩余沒有重復的日志消息發(fā)送至所述日志任務消息隊列。
9.根據(jù)權利要求8所述的方法,其特征在于,所述日志消息包括文件名和行號, 所述判斷預設的單位時間 內所述各個功能模塊發(fā)送的日志消息中是否存在重復的日志消息的步驟包括: 分別獲取預設的單位時間內所述各個功能模塊發(fā)送的日志消息包括的文件名和行號; 判斷是否存在包括的文件名和行號相同的日志消息; 若存在,則確定預設的單位時間內所述各個功能模塊發(fā)送的日志消息中存在重復的日志消息,并確定包括的文件名和行號相同的日志消息為重復的日志消息。
10.一種系統(tǒng)日志的控制裝置,其特征在于,所述系統(tǒng)日志所在的系統(tǒng)包括至少一個功能模塊和日志任務消息隊列,所述裝置包括: 接收模塊,用于接收所述系統(tǒng)中各個功能模塊發(fā)送的日志消息; 監(jiān)控模塊,用于監(jiān)控所述系統(tǒng)的負荷狀態(tài); 降低模塊,用于當所述監(jiān)控模塊監(jiān)控到所述系統(tǒng)的負荷大于預設的流控閾值時,降低發(fā)送至所述日志任務消息隊列的日志消息的數(shù)量。
11.根據(jù)權利要求10所述的裝置,其特征在于,所述降低模塊包括: 整體控制子模塊,用于采用整體控制方式降低發(fā)送至所述日志任務消息隊列的日志消息的數(shù)量; 和/或, 均衡控制子模塊,用于采用均衡控制方式降低發(fā)送至所述日志任務消息隊列的日志消息的數(shù)量; 和/或, 模塊控制子模塊,用于采用模塊控制方式降低發(fā)送至所述日志任務消息隊列的日志消息的數(shù)量;和/或, 精細控制子模塊,用于采用精細控制方式降低發(fā)送至所述日志任務消息隊列的日志消息的數(shù)量。
12.根據(jù)權利要求11所述的裝置,其特征在于,所述整體控制子模塊包括: 比較子單元,用于將所述系統(tǒng)的負荷與預設的流控上限和流控下限進行比較; 第一判斷子單元,用于當所述比較子單元的比較結果為所述系統(tǒng)的負荷大于預設的流控上限時,判斷當前的日志記錄狀態(tài); 第一修改子單元,用于當所述第一判斷子單元的判斷結果為開啟狀態(tài)時,修改為關閉狀態(tài),舍棄所述各個功能模塊發(fā)送的日志消息; 第二判斷子單元,用于當所述比較子單元的比較結果為所述系統(tǒng)的負荷小于預設的流控下限時,判斷當前的日志記錄狀態(tài); 第二修改子單元,用于當所述第二判斷子單元的判斷結果為關閉狀態(tài)時,修改為開啟狀態(tài),將所述各個功能模塊發(fā)送的日志消息發(fā)送至所述日志任務消息隊列。
13.根據(jù)權利要求11所述的裝置,其特征在于,所述系統(tǒng)還包括多個令牌,所述令牌的狀態(tài)包括空閑狀態(tài)和占用狀態(tài), 所述均衡控制子模塊包括: 令牌獲取子單元,用于獲取所述系統(tǒng)中處于空閑狀態(tài)的令牌數(shù)量; 第一選取子單元,用于從所述日志消息中選取與所述處于空閑狀態(tài)的令牌數(shù)量相同數(shù)量的日志消息; 第一發(fā)送子單元,用于將選取的日志消息發(fā)送至所述日志任務消息隊列; 緩存子單元,用于將剩余的日志消息進行緩存。
14.根據(jù)權利要求13所述的裝置,其特征在于,所述日志消息包括發(fā)送時間, 所述第一選取子單元,具體用于按照所述發(fā)送時間的先后順序對所述日志消息進行排序;從排序后的第一個日志消息開始,選取與所述處于空閑狀態(tài)的令牌數(shù)量相同數(shù)量的日志消息。
15.根據(jù)權利要求11所述的裝置,其特征在于,所述模塊控制子模塊包括: 統(tǒng)計子單元,用于分別統(tǒng)計預設的單位時間內所述各個功能模塊發(fā)送的日志消息的數(shù)量; 第二發(fā)送子單元,用于當所述統(tǒng)計子單元統(tǒng)計出某個功能模塊發(fā)送的日志消息的數(shù)量大于預設的數(shù)量閾值時,舍棄該功能模塊發(fā)送的日志消息,將剩余的日志消息發(fā)送至所述日志任務消息隊列。
16.根據(jù)權利要求15所述的裝置,其特征在于,所述日志消息包括發(fā)送該日志消息的功能模塊標識, 所述統(tǒng)計子單元,具體用于分別統(tǒng)計預設的單位時間內包括同一功能模塊標識的日志消息的數(shù)量,將所述數(shù)量作為所述同一功能模塊標識對應的功能模塊發(fā)送的日志消息的數(shù)量; 所述第二發(fā)送子單元,具體用于舍棄包括該功能模塊標識的日志消息。
17.根據(jù)權利要求11所述的裝置,其特征在于,所述精細控制子模塊包括: 重復判斷子單元,用于判斷預設的單位時間內所述各個功能模塊發(fā)送的日志消息中是否存在重復的日志消息; 第二選取子單元,用于在所述重復判斷子單元的判斷結果為存在時,從所述重復的日志消息中選取一個或多個日志消息;
第三發(fā)送子單元,用于舍棄所述重復的日志消息中未被選取的日志消息,將被選取的日志消息和剩余沒有重復的日志消息發(fā)送至所述日志任務消息隊列。
18.根據(jù)權利要求17所述的裝置,其特征在于,所述日志消息包括文件名和行號,所述重復判斷子單元,具體用于分別獲取預設的單位時間內所述各個功能模塊發(fā)送的日志消息包括的文件名和行號;判斷是否存在包括的文件名和行號相同的日志消息;若存在,則確定預設的單位時間內所述各個功能模塊發(fā)送的日志消息中存在重復的日志消息,并確定包括的文件名和行號相同的日志消息為重復的日志消息。
【文檔編號】G06F11/30GK103838659SQ201410053917
【公開日】2014年6月4日 申請日期:2014年2月17日 優(yōu)先權日:2014年2月17日
【發(fā)明者】牛磊, 弋景峰, 王雪平 申請人:大唐移動通信設備有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
贵德县| 胶州市| 怀集县| 精河县| 乐山市| 玉林市| 类乌齐县| 乡宁县| 阳高县| 桐乡市| 图们市| 商洛市| 凤阳县| 浏阳市| 阿坝| 宁晋县| 龙口市| 扎赉特旗| 承德市| 沾益县| 石门县| 佛冈县| 沈阳市| 尖扎县| 贵阳市| 海盐县| 蚌埠市| 定西市| 虎林市| 阿勒泰市| 唐山市| 韶山市| 阿克陶县| 礼泉县| 百色市| 壤塘县| 车险| 育儿| 曲阳县| 聊城市| 德安县|