介紹
unix和linux用戶經(jīng)常檢查運(yùn)行在服務(wù)器上的進(jìn)程來進(jìn)行問題分析,并檢查服務(wù)器上被消耗的資源。這些信息不僅對(duì)解決問題和分析資源的系統(tǒng)管理員有用,而且對(duì)于開發(fā)高可用性和監(jiān)視db2進(jìn)程以判斷什么時(shí)候執(zhí)行某種行為(例如數(shù)據(jù)庫(kù)重新啟動(dòng))或者執(zhí)行必要的服務(wù)器錯(cuò)誤恢復(fù)(failover)的錯(cuò)誤恢復(fù)腳本都很重要。
如果使用aix,必須使用ps -ef命令來檢查進(jìn)程。在solaris和hp-ux上,ps -ef只為所有的服務(wù)器端進(jìn)程(例如agents、loggers、page cleaners和 prefetchers)顯示db2sysc進(jìn)程(主要的db2引擎進(jìn)程)。如果你使用solaris或者h(yuǎn)p-ux,能使用/usr/ucb/ps -axw命令看到這些進(jìn)程。這些版本的ps命令都可以在linux上工作。
在運(yùn)行db2 universal database客戶端或服務(wù)器軟件的計(jì)算機(jī)上執(zhí)行這個(gè)命令時(shí),可以看到列出了多個(gè)db2進(jìn)程。本文的目的是說明這些進(jìn)程并解釋它們是做什么的以及什么時(shí)候運(yùn)行。通過閱讀本文你能了解db2的每個(gè)進(jìn)程,當(dāng)你看到這些進(jìn)程時(shí)能了解db2正在執(zhí)行什么操作。
注意:在db2中進(jìn)程是怎樣執(zhí)行的對(duì)于windows和linux、unix環(huán)境有稍微的不同。在windows中,只有一個(gè)進(jìn)程(db2sysc),在它下面每個(gè)引擎可分配單元(edu)作為一個(gè)線程執(zhí)行。盡管本文討論進(jìn)程,但是在windows環(huán)境中應(yīng)該認(rèn)為它們是線程。在windows任務(wù)管理器中你能夠看到每個(gè)實(shí)例的db2sysc進(jìn)程(db2syscs.exe)。其它的windows服務(wù)/進(jìn)程也可以顯示,本文我們將解釋它們是什么。
警告:不要在正常的db2環(huán)境中直接干涉db2進(jìn)程。在linux或unix中使用kill -9命令刪除db2進(jìn)程可能會(huì)引起db2的不正常的行為。如果刪除進(jìn)程將導(dǎo)致整個(gè)db2實(shí)例停止。本文中的目的是了解這些進(jìn)程而不是直接維護(hù)它們。
為什么要查看db2進(jìn)程
我們的個(gè)人經(jīng)驗(yàn)已經(jīng)顯示了這些知識(shí)的價(jià)值,我們拜訪的客戶也向我們?cè)儐栠@類信息??纯聪旅娴恼鎸?shí)的情況,看看你自己如何檢查系統(tǒng)上運(yùn)行的db2進(jìn)程來解決問題的:
情況1:罕見的緩沖池頁面清除
某個(gè)運(yùn)行電子商務(wù)網(wǎng)站并使用db2作為數(shù)據(jù)庫(kù)服務(wù)器的客戶報(bào)告說,在一天的多個(gè)時(shí)段數(shù)據(jù)庫(kù)響應(yīng)應(yīng)用程序的時(shí)間很長(zhǎng)。在這些時(shí)期數(shù)據(jù)庫(kù)快照沒有顯示發(fā)生了什么不正常的行為。通過檢查其中一個(gè)時(shí)段進(jìn)程的cpu使用率,可以發(fā)現(xiàn)i/o清除器(db2pclnr)消耗了超過90%的cpu時(shí)間。接下來通過查看i/o清除進(jìn)程觸發(fā)器并適當(dāng)?shù)卣{(diào)整它們,我們消除了這種情況,該電子商務(wù)站點(diǎn)的處理能力提高了50%以上。
情況2:真實(shí)的情況
雖然拜訪了某個(gè)ibm業(yè)務(wù)伙伴并執(zhí)行了一些db2性能調(diào)整,但是我們?nèi)匀挥龅搅似胀ǖ捻憫?yīng)時(shí)間延緩。應(yīng)用程序列表命令沒有顯示任何在這個(gè)時(shí)候不正常的進(jìn)程。在取得db2快照前,我們查看了db2服務(wù)器上運(yùn)行的db2進(jìn)程,發(fā)現(xiàn)db2rebal進(jìn)程正在運(yùn)行。在給dms表空間添加一個(gè)容器的時(shí)候,該進(jìn)程用于執(zhí)行再次數(shù)據(jù)均衡。該客戶承認(rèn)那一天它給一個(gè)包含40gb表的表空間添加了一個(gè)容器。當(dāng)重新均衡完成后,查詢的響應(yīng)速度返回到正常情況。
看看通知和診斷日志
管理通知日志和診斷日志(db2diag.log)是系統(tǒng)管理員用于了解數(shù)據(jù)庫(kù)活動(dòng)和功能的重要工具。正常情況下它們包含db2進(jìn)程的信息,下面的例子顯示了一個(gè)db2diag.log的條目:
2000-03-06-11.53.18.001160 instance:myinst node:000 pid:78121(db2agent (test)) tid:352 appid:*local.payroll.000306140834lock_manager sqlplrq probe:111 database:test dia9999e an internal return code occurred. report the following:"0xffffe10e".
在這個(gè)例子中,消息來源的進(jìn)程id號(hào)是78121。這個(gè)進(jìn)程的名字是db2agent,并且它連接了叫做test的數(shù)據(jù)庫(kù)。了解每個(gè)進(jìn)程在做什么能幫助你了解系統(tǒng)管理通知日志和db2diag.log的內(nèi)容。
db2進(jìn)程的模型
代理
代理可以認(rèn)為是一個(gè)"工作程序",它執(zhí)行所有的應(yīng)用程序需要的數(shù)據(jù)庫(kù)操作。有兩種類型的db2代理:
◆ 協(xié)調(diào)程序代理(db2agent)
協(xié)調(diào)程序代理代表應(yīng)用程序協(xié)調(diào)工作,并且使用進(jìn)程間通訊(interprocess communication,ipc)或者遠(yuǎn)程通訊協(xié)議與其它的代理通訊。所有的客戶端應(yīng)用程序連接請(qǐng)求,無論是本地的或遠(yuǎn)程的,都會(huì)分配一個(gè)相應(yīng)的協(xié)調(diào)程序代理。
◆ 子代理(db2agntp)
當(dāng)允許intra_parallel數(shù)據(jù)庫(kù)管理器配置參數(shù)時(shí),協(xié)調(diào)程序代理把數(shù)據(jù)庫(kù)請(qǐng)求分配給子代理(db2agntp)。這些代理為應(yīng)用程序執(zhí)行請(qǐng)求。一旦建立了協(xié)調(diào)程序代理,它就通過協(xié)調(diào)執(zhí)行數(shù)據(jù)庫(kù)請(qǐng)求的子代理,代表應(yīng)用程序處理所有的數(shù)據(jù)庫(kù)請(qǐng)求。
當(dāng)某個(gè)代理或者子代理完成了自己的工作時(shí)它就變?yōu)榭臻e的。當(dāng)某個(gè)子代理變?yōu)榭臻e時(shí),它的名字從db2agntp變?yōu)閐b2agnta。
例如:
db2agntp是活動(dòng)的子代理,它正在為協(xié)調(diào)程序代理執(zhí)行工作。這些進(jìn)程只有允許內(nèi)部分區(qū)并行性(intra-partition parallelism)時(shí)才存在。
db2agnta是空閑的子代理,它在過去的某個(gè)時(shí)候被協(xié)調(diào)程序代理使用??臻e代理位于代理池中。這些代理對(duì)于來自代表客戶端程序的協(xié)調(diào)程序代理的請(qǐng)求是可用的。可用的代理數(shù)量依賴于數(shù)據(jù)庫(kù)管理器的配置參數(shù)maxagents和num_poolagents。
本文的后面一部分將講解其它類型的代理(例如并行回復(fù)代理,db2agnsc)。下面是顯示db2進(jìn)程模型的兩個(gè)圖表。

圖1:沒有連接集合的db2進(jìn)程模型(對(duì)于無分區(qū)的數(shù)據(jù)庫(kù))
圖1中的每個(gè)圓圈代表引擎可分配單元(edu),它是linux/unix平臺(tái)上的進(jìn)程,windows中的線程。
應(yīng)用程序a(app a)和b(app b)都是運(yùn)行在db2服務(wù)器上的本地應(yīng)用程序。當(dāng)這些應(yīng)用程序請(qǐng)求一個(gè)到數(shù)據(jù)庫(kù)的connect時(shí),db2ipccm監(jiān)聽進(jìn)程建立數(shù)據(jù)庫(kù)管理器和應(yīng)用程序之間的通訊。db2ipccm也使用一個(gè)協(xié)調(diào)程序代理edu(db2agent)工作,它直接連接客戶端應(yīng)用程序來建立客戶端應(yīng)用程序和代理之間的共享內(nèi)存通訊。一旦建立了該通訊,本地客戶端的應(yīng)用程序就連接到數(shù)據(jù)庫(kù)了。
應(yīng)用程序c(app c)是一個(gè)遠(yuǎn)程應(yīng)用程序,它位于db2服務(wù)器外的另一臺(tái)計(jì)算機(jī)上。遠(yuǎn)程客戶端通過db2tcpcm監(jiān)聽進(jìn)程建立tcp/ip通訊。接著該db2tcpcm與db2agent一起工作,它成為應(yīng)用程序的協(xié)調(diào)程序代理并把連接傳遞到這個(gè)代理。在這以后,協(xié)調(diào)程序代理聯(lián)系遠(yuǎn)程客戶端應(yīng)用程序并且連接到數(shù)據(jù)庫(kù)了。
本文的后面一部分將講解其它類型的代理(例如并行回復(fù)代理,db2agnsc)。下面是顯示db2進(jìn)程模型的兩個(gè)圖表。

圖1:沒有連接集合的db2進(jìn)程模型(對(duì)于無分區(qū)的數(shù)據(jù)庫(kù))
圖1中的每個(gè)圓圈代表引擎可分配單元(edu),它是linux/unix平臺(tái)上的進(jìn)程,windows中的線程。
應(yīng)用程序a(app a)和b(app b)都是運(yùn)行在db2服務(wù)器上的本地應(yīng)用程序。當(dāng)這些應(yīng)用程序請(qǐng)求一個(gè)到數(shù)據(jù)庫(kù)的connect時(shí),db2ipccm監(jiān)聽進(jìn)程建立數(shù)據(jù)庫(kù)管理器和應(yīng)用程序之間的通訊。db2ipccm也使用一個(gè)協(xié)調(diào)程序代理edu(db2agent)工作,它直接連接客戶端應(yīng)用程序來建立客戶端應(yīng)用程序和代理之間的共享內(nèi)存通訊。一旦建立了該通訊,本地客戶端的應(yīng)用程序就連接到數(shù)據(jù)庫(kù)了。
應(yīng)用程序c(app c)是一個(gè)遠(yuǎn)程應(yīng)用程序,它位于db2服務(wù)器外的另一臺(tái)計(jì)算機(jī)上。遠(yuǎn)程客戶端通過db2tcpcm監(jiān)聽進(jìn)程建立tcp/ip通訊。接著該db2tcpcm與db2agent一起工作,它成為應(yīng)用程序的協(xié)調(diào)程序代理并把連接傳遞到這個(gè)代理。在這以后,協(xié)調(diào)程序代理聯(lián)系遠(yuǎn)程客戶端應(yīng)用程序并且連接到數(shù)據(jù)庫(kù)了。
表1:每個(gè)實(shí)例的進(jìn)程--沒有連接、沒有活動(dòng)的數(shù)據(jù)庫(kù)

表2:每個(gè)實(shí)例和每個(gè)連接的進(jìn)程

表3:每個(gè)實(shí)例和每個(gè)活動(dòng)數(shù)據(jù)庫(kù)的進(jìn)程

商業(yè)源碼熱門下載www.html.org.cn
新聞熱點(diǎn)
疑難解答