深入DB2代理的工作原理與連接過程
簡介
DB2 的代理 (agent) 是位于 DB2 服務器中的服務于應用程序請求的一些進程或線程。當有外部應用程序連接至 DB2 實例提出訪問請求時,DB2 的代理就會被激活去應答這些請求。一般 DB2 的代理被稱為工作代理,工作代理大概有三種類型:空閑代理、活動的協(xié)調代理、子代理。
◆空閑代理:指的是沒有任何任務的代理。這種代理不服務于任何遠程連接也不服務于本地連接,處于一種備用或待命狀態(tài)。
◆活動的協(xié)調代理:指的是處于工作狀態(tài)的代理,每一個外部應用程序產(chǎn)生的數(shù)據(jù)庫活動連接的都有一個活動協(xié)調代理來為它服務。
◆子代理:指的是接受協(xié)調代理分發(fā)出來的工作的下一級代理。在 DB2 V95 以前,只有在多分區(qū)環(huán)境 (MPP) 或節(jié)點內并行環(huán)境 (SMP) 下才存在子代理,在 DB2 V95 中所有環(huán)境中都可能存在子代理。
在 DB2 服務器中有一個代理池,當實例剛啟動后這里便有一些代理(其數(shù)量取決于實例參數(shù) NUM_INITAGENTS)。在沒有任何數(shù)據(jù)庫連接時,它們處于待命狀態(tài),就是空閑代理。而當有外部程序連接至數(shù)據(jù)庫時,這些代理開始得到命令去服務于這些新建的連接,這時它們就變成了活動的協(xié)調代理。這些協(xié)調代理再將請求逐步細分,分配給下一級代理即子代理去處理。如果當前的代理都已經(jīng)在工作了,同時又來了新的請求,數(shù)據(jù)庫管理器會產(chǎn)生一個新的代理去應答。當事務處理完畢而且數(shù)據(jù)庫連接斷開后,協(xié)調代理要么返回代理池變回空閑代理,要么就自動消失了(取決于實例參數(shù) NUM_POOLAGENTS)。這就是一個代理的生命周期。
相關的配置參數(shù)
通過執(zhí)行 DB2 get dbm cfg 可以看到以下幾個和代理相關的實例參數(shù):MAXAGENTS,NUM_POOLAGENTS,NUM_INITAGENTS,MAX_COORDAGENTS,MAX_CONNECTIONS,MAXCAGENTS。下面對它們做一下簡要介紹:
◆MAXAGENTS:這個參數(shù)為當前實例中全部代理的數(shù)量,包括協(xié)調代理,空閑代理和子代理之和。不過這個參數(shù)在 DB2 V95 中已經(jīng)不再使用了。
◆NUM_POOLAGENTS:這個參數(shù)用來控制代理池中的空閑代理的數(shù)量。當活動的代理完成工作返回代理池變成空閑代理時,如果數(shù)量超過了這個參數(shù),那么這個代理就會自動消失了。注意:在連接集中器激活的情況下,代理池中的空閑代理數(shù)目在某一時刻可能會超過 NUM_POOLAGENTS 的大小,以應對突發(fā)的高密度連接。
◆NUM_INITAGENTS:這個參數(shù)就是前面提到的在實例剛剛啟動時便生成的一些空閑代理的數(shù)目。這是為了提高性能,因為這些代理可以隨時變成協(xié)調代理去應答外部應用請求,而不用臨時再生成新的代理。
◆MAX_COORDAGENTS:這個參數(shù)決定了在實例中在同一時刻***的協(xié)調代理的數(shù)目 ( 在多分區(qū)環(huán)境指的是一個節(jié)點上的***協(xié)調代理數(shù) )。
◆MAX_CONNECTIONS:這個參數(shù)決定了允許連接至一個實例的***的連接數(shù) ( 在多分區(qū)環(huán)境指的是一個節(jié)點上的***連接數(shù) )。
◆MAXCAGENT:這個參數(shù)決定了實例中的令牌的數(shù)量,一個協(xié)調代理只有得到了令牌才能去服務于應用程序。當沒有得到令牌時,協(xié)調代理只能等候。不過這個參數(shù)在 DB2 V95 中也已經(jīng)取消了。
【編輯推薦】