一種基于隊列的任務流量監控方法及系統的制作方法
【技術領域】
[0001]本發明涉及計算機控制管理領域,特別涉及任務流量控制和系統的狀態判斷。
【背景技術】
[0002]在計算機領域,傳統基于隊列的任務流量控制主要涉及限制隊列的容量,甚至是不限制隊列的容量只限制隊列所占用的內存大小,于是會出現兩種情況:
一種是當入隊列速度大于出隊列速度時,隊列出現積壓,而另一種則是入隊列速度小于出隊列速度,隊列幾乎空閑。本發明主要用于應對第一種情況,當出隊列的程序因為一些原因而出現工作效率下降時,隊列會出現積壓,此時如果不及時處理,則會出現更大量的積壓。
【發明內容】
[0003]本發明提供一種基于隊列的任務流量監控方法,解決了現有基于隊列的任務流控制中任務積壓發現晚,處理不及時的問題。
[0004]本方法通過定時監測隊列入隊速度,隊列出隊速度和隊列當前積壓量等觀測量,以及這些量與時間的關系,最終達到通過判斷任務處理速度來調節任務入隊速度并以此達到隊列無大量積壓的目的。
[0005]—種基于隊列的任務流量監控方法,包括:
利用程序代理完成隊列操作,定時獲取監控觀測量;獲取監控觀測量的監控周期可自定義配置;
分析監控觀測量,當隊列當前積壓量大于單位時間內處理的任務量時,判定為隊列積壓,則減小隊列期望容量,減少隊列入隊速度;當隊列入隊速度大于隊列出隊速度且隊列出隊速度小于隊列出隊請求速度時,判定為隊列緩存不足,則增大隊列期望容量,增加隊列入隊速度。
[0006]進一步地,所述隊列操作包括入隊程序和出隊程序:
入隊程序具體步驟為:
入隊請求操作;
判斷隊列當前積壓量是否小于隊列期望容量,如果小于則執行入隊操作并將隊列入隊速度加一,否則,入隊程序會延時等待,循環請求入隊,直到能夠執行入隊操作為止;
出隊程序具體步驟為:
出隊請求操作;
判斷隊列當前積壓量是否為零,如果不是,執行出隊操作并對隊列出隊速度加一,否貝1J,出隊程序會延時等待,循環請求出隊,直到能夠執行出隊操作為止。
[0007]本發明采用如下系統來實現:
一種基于隊列的任務流量監控系統,包括:
獲取模塊,用于利用程序代理完成隊列操作,定時獲取監控觀測量;獲取監控觀測量的監控周期可自定義配置;
分析判斷模塊,分析監控觀測量,當隊列當前積壓量大于單位時間內處理的任務量時,判定為隊列積壓,則減小隊列期望容量,減少隊列入隊速度;當隊列入隊速度大于隊列出隊速度且隊列出隊速度小于隊列出隊請求速度時,判定為隊列緩存不足,則增大隊列期望容量,增加隊列入隊速度。
[0008]進一步地,所述隊列操作包括入隊程序和出隊程序:
入隊程序具體步驟為:
入隊請求操作;
判斷隊列當前積壓量是否小于隊列期望容量,如果小于則執行入隊操作并將隊列入隊速度加一,否則,入隊程序會延時等待,循環請求入隊,直到能夠執行入隊操作為止;
出隊程序具體步驟為:
出隊請求操作;
判斷隊列當前積壓量是否為零,如果不是,執行出隊操作并對隊列出隊速度加一,否貝1J,出隊程序會延時等待,循環請求出隊,直到能夠執行出隊操作為止。
[0009]綜上所述,本發明提供了一種基于隊列的任務流量監控方法及系統,利用程序代理完成隊列操作,定時獲取監控觀測量;獲取監控觀測量的監控周期可自定義配置;分析監控觀測量,當隊列當前積壓量大于單位時間內處理的任務量時,判定為隊列積壓,則減小隊列期望容量,減少隊列入隊速度;當隊列入隊速度大于隊列出隊速度且隊列出隊速度小于隊列出隊請求速度時,判定為隊列緩存不足,則增大隊列期望容量,增加隊列入隊速度。
[0010]本發明的有益效果為,在出現隊列積壓或隊列緩存不足的情況下,可以動態調整隊列期望容量,從而動態的調整隊列中緩存的任務量,在不降低隊列出隊速度的情況下,盡量減少緩存在隊列中的任務量,避免出現大量隊列任務積壓的情況,即使是出隊程序工作停止,隊列中也只會最多緩存隊列出隊速度相應最小倍數的任務量,且可以及時通知系統。即使是系統停機,也最多只會丟失隊列出隊速度相應最小倍數的任務量。
【附圖說明】
[0011]為了更清楚地說明本發明或現有技術中的技術方案,下面將對實施例或現有技術描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發明中記載的一些實施例,對于本領域普通技術人員來講,在不付出創造性勞動的前提下,還可以根據這些附圖獲得其他的附圖。
[0012]圖1為本發明提供的一種基于隊列的任務流量監控方法實施例流程圖;
圖2為本發明提供的一種基于隊列的任務流量監控系統實施例結構圖。
【具體實施方式】
[0013]本發明給出了基于隊列的任務流量監控方法及系統,為了使本技術領域的人員更好地理解本發明實施例中的技術方案,并使本發明的上述目的、特征和優點能夠更加明顯易懂,下面結合附圖對本發明中技術方案作進一步詳細的說明:本發明給出了一種基于隊列的任務流量監控方法實施例,如圖1所示,包括: SlOl利用程序代理完成隊列操作,定時獲取監控觀測量;
其中,定時獲取的監控觀測量如下:
隊列入隊速度:單位時間內,隊列加入的任務數量。
[0014]隊列入隊請求速度:單位時間內,入隊列程序請求入隊列的請求數量。
[0015]隊列出隊速度:單位時間內,隊列取出的任務數量。
[0016]隊列出隊請求速度:單位時間內,出隊列程序請求出隊列的請求數量。
[0017]隊列最大容量:指隊列本身的內部最大容量,有些隊列沒有該值。
[0018]隊列當前積壓量:指隊列內當前的任務積壓量。
[0019]隊列期望容量:隊列程序代理的一個動態屬性值,描述隊列當前所期望的任務積壓量,在隊列當前積壓量大于隊列期望容量的情況下,入隊操作會返回隊列已滿的假象,且隊列期望容量不大于隊列最大容量。
[0020]其中,在定時獲取監控觀測量之前,還包括:對上一個監控周期的隊列入隊速度、隊列入隊請求速度、隊列出隊速度、隊列出隊請求速度監控觀測量進行清零處理,且監測周期需要依靠實際系統的正常處理速度來定。
[0021]S102分析監控觀測量,并判定是否出現隊列積壓或隊列緩存不足的情況;
其中,隊列狀態中還包括,當隊列入隊請求速度大于隊列出隊請求速度時,為入隊程序速度大于出隊程序速度的狀態;
當隊列出隊速度與隊列出隊請求速度相等時,為出隊程序工作飽和的狀態;
當隊列出隊請求速度降至O時,為出隊程序工作停止的狀態。
[0022]S103當隊列當前積壓量大于單位時間內處理的任務量時,判定為隊列積壓;
S104減小隊列期望容量,減少隊列入隊速度;
其中,在出隊程序工作飽和的情況下,出現隊列積壓,則調整隊列期望容量為隊列出隊速度即隊列出隊請求速度的1.1倍,在此,數值1.1倍只是一個經驗值,也可以根據需要調整為其它大于I或者小于I的值,此外還可以把出現隊列積壓的情況通知其它系統。
[0023]S105當隊