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