虽然拜访了某个IBM业务伙伴并执行了一些DB2性能调整,但是我们仍然遇到了普通的响应时间延缓。应用程序列表命令没有显示任何在这个时候不正常的进程。在取得DB2快照前,我们查看了DB2服务器上运行的DB2进程,发现db2rebal进程正在运行。
看看通知和诊断日志
管理通知日志和诊断日志(db2diag.log)是系统管理员用于了解数据库活动和功能的重要工具。正常情况下它们包含DB2进程的信息,下面的例子显示了一个db2diag.log的条目:
2000-03-06-11.53.18.001160 Instance:myInst Node:000
PID:78121(db2agent (TEST)) TID:352
Appid:*LOCAL.payroll.000306140834
lock_manager sqlplrq Probe:111 Database:TEST
DIA9999E An internal return code occurred. Report the following:
"0xFFFFE10E".在这个例子中,消息来源的进程ID号是78121。这个进程的名字是db2agent,并且它连接了叫做TEST的数据库。了解每个进程在做什么能帮助你了解系统管理通知日志和db2diag.log的内容。
DB2进程的模型
代理
代理可以认为是一个"工作程序",它执行所有的应用程序需要的数据库操作。有两种类型的DB2代理:
◆ 协调程序代理(db2agent)
协调程序代理代表应用程序协调工作,并且使用进程间通讯(interprocess communication,IPC)或者远程通讯协议与其它的代理通讯。所有的客户端应用程序连接请求,无论是本地的或远程的,都会分配一个相应的协调程序代理。
◆ 子代理(db2agntp)
当允许intra_parallel数据库管理器配置参数时,协调程序代理把数据库请求分配给子代理(db2agntp)。这些代理为应用程序执行请求。一旦建立了协调程序代理,它就通过协调执行数据库请求的子代理,代表应用程序处理所有的数据库请求。
当某个代理或者子代理完成了自己的工作时它就变为空闲的。当某个子代理变为空闲时,它的名字从db2agntp变为db2agnta。
例如:
db2agntp是活动的子代理,它正在为协调程序代理执行工作。这些进程只有允许内部分区并行性(intra-partition parallelism)时才存在。
db2agnta是空闲的子代理,它在过去的某个时候被协调程序代理使用。空闲代理位于代理池中。这些代理对于来自代表客户端程序的协调程序代理的请求是可用的。可用的代理数量依赖于数据库管理器的配置参数maxagents和num_poolagents。
