网站首页
本站精华
免费下载
游客:
注册
|
登录
|
会员
|
搜索
|
帮助
LoveUnix
»
DB2 & Informix
» DB2 通用数据库进程全接触ZT
‹‹ 上一主题
|
下一主题 ››
投票
交易
悬赏
活动
打印
|
推荐
|
订阅
|
收藏
标题: DB2 通用数据库进程全接触ZT
燕狂徒
版主
UID 59
精华
14
积分 1708
帖子 3209
活跃指数 155
LU金币 4925 个
LU金条 616 个
阅读权限 210
注册 2003-9-19
#1
大
中
小
使用道具
发表于 2004-10-28 10:29
资料
个人空间
主页
短消息
加为好友
简 介
UNIX 和 Linux 用户通常会检查运行在其服务器上的进程,以执行问题分析及检查服务器中消耗的资源。该信息不仅对执行问题和资源分析的管理员有用,而且对于那些开发高度可用性和故障转移脚本(这些脚本监控 DB2 进程,以确定何时需要进行诸如数据库重新启动或服务器故障转移之类的操作)的人也很有用。
如果您正在使用 AIX,则可以使用命令 ps -ef 检查进程。在 Solaris 和 HP-UX 上,ps -ef 将只显示所有服务器端进程(例如:代理程序、记录器、页面清除程序和预取程序)的 db2sysc 进程(主 DB2 引擎进程)。如果您正在使用 Solaris 或 HP-UX,利用命令 /usr/ucb/ps -axw 您可以看到这些服务器端进程。这两种版本的 ps 命令都可以在 Linux 上使用。
当在运行 DB2 通用数据库客户机或服务器软件的计算机上执行该命令时,您可能会看到列出了几个 DB2 进程。本文的目的是记录这些进程,并且解释它们的作用以及它们何时可能会运行。尽管手册 DB2 UDB V8 Administration Guide - Performance 的第 2 章记录了大多数重要的进程,但该列表并不完整。通过阅读本文,您将会理解每个 DB2 进程,当您看到那些进程时,您会开始明白 DB2 正在执行什么操作。
请注意,DB2 在 Windows 上工作方式的实现与基于 Linux 和 UNIX 环境的实现稍有不同。在 Windows 中,只有一个进程(db2sysc),在该进程下的每个引擎分派单元(engine dispatchable unit,EDU)都被作为线程来实现。尽管本文讨论的是进程,但是在 Windows 环境中应当把它们看成线程。通过 Windows 任务管理器(Task Manager),您将能够看到每个实例的 db2sysc 进程(db2syscs.exe)。还将显示其它 Windows 服务/进程,我们将在本文中解释它们是什么。
警告!请勿直接干预正常 DB2 环境中的 DB2 进程。在 Linux 或 UNIX 中利用 kill -9 命令杀死 DB2 进程可能会导致 DB2 出现异常行为。例如,杀死 db2sysc 进程将使整个 DB2 实例停止运行。本文旨在帮助您理解进程,而不是直接操作它们。
为什么研究 DB2 进程?
我们的个人经验已表明这方面的知识很有价值,并且我们拜访的客户也向我们寻求这类信息。还不相信吗?看一看下面的实际方案,并且亲眼看看如何通过检查在系统上运行的 DB2 进程来解决问题:
方案 1:罕见的缓冲池页面的清除
一个运行电子商务(eCommerce)站点并使用 DB2 作为数据库服务器的客户报告说,在一整天里,数据库对应用程序请求的响应时间会不时地变得很长。数据库快照未显示当时有任何异常发生。通过检查服务器上进程在其中某一时刻的 CPU 使用情况,我们可以确定 I/O 清除程序(db2pclnr)消耗了超过 90% 的 CPU 时间。随后通过研究 I/O 清除程序触发器并对其进行相应的调优,我们消除了这种情况,使得电子商务站点每天可以处理的吞吐量提高了 50% 以上。
方案 2:真相大白
在拜访 IBM 的一家业务合作伙伴以进行一些 DB2 性能调优工作时,我们碰到了查询响应时间全面延长的问题。除了常规的程序之外,显示应用程序列表的命令并未显示当时有任何其它程序在运行。在获得 DB2 快照之前,我们看了一下运行在 DB2 服务器上的 DB2 进程,发现 db2rebal 进程正在运行。当将某个容器添加到 DMS 表空间时,就会使用该进程执行数据的重新均衡工作。客户“承认”,那天的早些时候他将一个容器添加到了包含 40 GB 表的表空间。一旦重新均衡工作完成,查询响应时间恢复如初。
揭开通知和诊断日志的庐山真面目
管理通知日志和诊断日志(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:SAMPLE
DIA9999E An internal return code occurred. Report the following:
"0xFFFFE10E".
在该示例中,消息来自进程标识号为 78121 的进程。该进程的名称是 db2agent,并与名为 TEST 的数据库相连。理解进程的功能有助于您了解管理通知日志和 db2diag.log 中各项的意义。
http://www.100c.com.cn/oblog/user1/1/index.html
燕狂徒
版主
UID 59
精华
14
积分 1708
帖子 3209
活跃指数 155
LU金币 4925 个
LU金条 616 个
阅读权限 210
注册 2003-9-19
#2
大
中
小
使用道具
发表于 2004-10-28 10:32
资料
个人空间
主页
短消息
加为好友
DB2 进程模型
尽管 DB2 Administration Guide - Performance 手册中介绍了 DB2 进程模型,但是本文还是将对其做一下简要概述。首先说明代理程序(agent)的概念。
代理程序
代理程序可被认为是一个代表应用程序执行所有数据库操作的“工作程序”。DB2 代理程序主要有两种:
协调程序代理程序(Coordinator Agent)(db2agent)
协调程序代理程序代表应用程序协调工作,并使用进程间通信(IPC)或远程通信协议与其它代理程序进行通信。所有来自客户机应用程序的连接请求,无论是本地还是远程的,都分配了相应的协调程序代理程序。
子代理程序(Subagent)(db2agntp)
如果启用了 intra_parallel 数据库管理器配置参数,协调程序代理程序就会把数据库请求分发给子代理程序(db2agntp)。这些代理程序执行应用程序的请求。一旦创建了协调程序代理程序,通过协调对数据库执行请求的子代理程序(db2agent),协调程序代理程序代表其应用程序处理所有数据库请求。
当某个代理程序或子代理程序完成其任务时,它就转为空闲状态。当子代理程序处于空闲状态时,其名称从 db2agntp 变为 db2agnta。
例如:
db2agntp 进程是活动的子代理程序,它们当前正在执行协调程序代理程序的工作。仅当启用了分区内并行性时,这些进程才存在。
db2agnta 进程是空闲的子代理程序,协调程序代理程序过去曾使用过它们。
空闲代理程序驻留在代理程序池中。这些代理程序可用于来自代表客户机程序进行操作的协调程序代理程序,或来自代表现有协调程序代理程序进行操作的子代理程序的请求。
可用的代理程序数取决于数据库管理器配置参数 maxagents 和 num_poolagents。
稍后我们将在本文中描述其它代理程序类型,如并行恢复代理程序(db2agnsc)。
下面两幅图显示了 DB2 进程模型。
图 1. 无连接集中的 DB2 进程模型(适用于非分区数据库)
[attachmentid=9829]
图 1 中的圆圈表示引擎分派单元(EDU),在 Linux/UNIX 平台上称为进程,而在 Windows 上称为线程。
应用程序 A(App A)和 B(App B)是本地应用程序,运行它们的机器与 DB2 服务器所驻留的机器是同一台机器。当这些应用程序发出连接数据库的 CONNECT 命令时,db2ipccm 侦听器进程建立数据库管理器和应用程序之间的通信。db2ipccm 还将与协调程序代理程序 EDU(db2agent)一起工作,后者直接与客户机应用程序进行联系,以建立客户机应用程序和协调程序之间共享内存的通信。一旦建立了这种通信,本地客户机上的应用程序就被连接到数据库。
应用程序 C(App C)是一个远程应用程序,它所驻留的机器与用于 DB2 服务器的机器不同。远程客户机通过 db2tcpcm 侦听器进程建立 TCP/IP 通信。然后 db2tcpcm 与 db2agent 一起工作,后者成为应用程序的协调程序代理程序,并将连接传递给该代理程序。之后,协调程序代理程序与远程客户机应用程序进行联系,并被连接到数据库。
图 2. 无连接集中的 DB2 进程模型(适用于分区数据库)
[attachmentid=9830]
图 2 与图 1 类似,但是它适用于分区数据库。Node0000 和 Node0001 表示两台不同的机器,这两台机器上分别驻留了一部分数据库。它们之间的进程和交互作用与图 1 中描述的相同;但是,有其它一些仅适用于该环境的进程。例如,db2fcmd 进程是快速通信管理器(Fast Communication Manager)进程,用于管理不同分区之间的通信。下一节中的表将更详细地描述适用于分区数据库的其它进程。
附件:
您所在的用户组无法下载或查看附件
http://www.100c.com.cn/oblog/user1/1/index.html
燕狂徒
版主
UID 59
精华
14
积分 1708
帖子 3209
活跃指数 155
LU金币 4925 个
LU金条 616 个
阅读权限 210
注册 2003-9-19
#3
大
中
小
使用道具
发表于 2004-10-28 10:36
资料
个人空间
主页
短消息
加为好友
进程
以下各表分别根据每个实例、每个数据库以及按照功能列出了所有 DB2 进程。请注意,下表中的一些进程并不是按照字母顺序列出的,而是根据功能进行分组的。如果您希望以字母顺序查找进程,请参阅下面的表 7。
表 1. 每个实例的进程 — 无连接,无活动的数据库
[attachmentid=9831]
表 2. 每个实例和每个连接
表 3. 每个实例和每个活动数据库
[attachmentid=9832]
附件:
您所在的用户组无法下载或查看附件
http://www.100c.com.cn/oblog/user1/1/index.html
燕狂徒
版主
UID 59
精华
14
积分 1708
帖子 3209
活跃指数 155
LU金币 4925 个
LU金条 616 个
阅读权限 210
注册 2003-9-19
#4
大
中
小
使用道具
发表于 2004-10-28 10:38
资料
个人空间
主页
短消息
加为好友
表 4. 按功能分类的其它进程
[attachmentid=9833]
附件:
您所在的用户组无法下载或查看附件
http://www.100c.com.cn/oblog/user1/1/index.html
燕狂徒
版主
UID 59
精华
14
积分 1708
帖子 3209
活跃指数 155
LU金币 4925 个
LU金条 616 个
阅读权限 210
注册 2003-9-19
#5
大
中
小
使用道具
发表于 2004-10-28 10:40
资料
个人空间
主页
短消息
加为好友
表 5. 一些常用的可执行文件
[attachmentid=9834]
表 6. 其它 Windows 服务/进程
[attachmentid=9835]
示例
下面这一节为您演示了一些输出示例,当您在 AIX 中执行 ps -ef 命令时可能会获得这样的输出。运行 db2start 之后:
root 49504 1 0 13:13:07 - 0:00 db2wdog
db2inst1 22142 49180 0 13:13:10 - 0:00 db2gds
db2inst1 43072 49180 0 13:13:17 - 0:00 db2syslog
db2inst1 45294 74134 0 12:12:43 pts/2 0:00 /usr/bin/ksh
db2inst1 49180 49504 0 13:13:10 - 0:00 db2sysc
db2inst1 55920 49180 0 13:13:19 - 0:00 db2resync
db2inst1 59012 22142 0 13:13:19 - 0:00 db2srvlst
db2inst1 60680 49180 0 13:13:17 - 0:00 db2ipccm
数据库管理器配置文件包含下列设置,它们会影响您最初看到的进程:
Max number of existing agents (MAXAGENTS) = 200
Agent pool size (NUM_POOLAGENTS) = 100(calculated)
Initial number of agents in pool (NUM_INITAGENTS) = 0
由于 NUM_INITAGENTS 是 0,所以在运行 db2start 时不会显示“db2agent (idle)”进程。例如,如果在运行 db2start 之前将 NUM_INITAGENTS 设置为 5,那么在发出
db2start 之后,将显示下面这些额外的进程:
db2inst1 35542 59814 0 16:25:57 - 0:00 db2agent (idle)
db2inst1 43096 59814 0 16:25:57 - 0:00 db2agent (idle)
db2inst1 49628 59814 0 16:25:57 - 0:00 db2agent (idle)
db2inst1 58170 59814 0 16:25:57 - 0:00 db2agent (idle)
db2inst1 64012 59814 0 16:25:57 - 0:00 db2agent (idle)
在连接到数据库 SAMPLE 后(NUM_INITAGENTS 的值仍然保持为 0)
root 49504 1 0 13:13:07 - 0:00 db2wdog
db2inst1 25844 35124 0 16:04:50 - 0:00 db2pfchr
db2inst1 35124 65638 0 16:04:17 - 0:00 db2gds
db2inst1 35540 35124 0 16:04:50 - 0:00 db2loggr (SAMPLE)
db2inst1 41940 65638 0 16:04:19 - 0:00 db2resync
db2inst1 45058 35124 0 16:04:50 - 0:00 db2pfchr
db2inst1 49300 35124 0 16:04:19 - 0:00 db2srvlst
db2inst1 49626 35124 0 16:04:50 - 0:00 db2dlock (SAMPLE)
db2inst1 55852 65638 0 16:04:17 - 0:00 db2ipccm
db2inst1 58168 35124 0 16:04:50 - 0:00 db2loggw (SAMPLE)
db2inst1 59048 35124 0 16:04:50 - 0:00 db2pfchr
db2inst1 64010 55852 0 16:04:50 - 0:00 db2agent (SAMPLE)
db2inst1 65638 22238 0 16:04:17 - 0:00 db2sysc
db2inst1 70018 35124 0 16:04:50 - 0:00 db2pclnr
db2inst1 72120 35124 0 16:04:51 - 0:00 db2event (DB2DETAILDEADLOCK) db2inst1 74198 65638 0 16:04:17 - 0:00 db2syslog
db2inst1 74578 1 0 16:04:47 - 0:00 /home/db2inst1/sqllib/bin/db2bp
50112C14631 5
连接到 SAMPLE 数据库后,“db2agent (SAMPLE)”进程出现了。该进程表明实际上有一个到 SAMPLE 数据库的连接。如果我们发出以下命令:
db2 connect reset
db2agent (SAMPLE) 现在将变成 db2agent (idle)。这是因为 NUM_POOLAGENTS 被设置成了大于零的数,这意味着该代理程序尽管是空闲的,但在池中将仍然保持被分配的 状态。如果 NUM_POOLAGENTS 被设置成零,那么在运行了“connect reset”后,将不再有 db2agent 进程运行。
SAMPLE 数据库的数据库配置文件包含下列这些设置:
Number of asynchronous page cleaners (NUM_IOCLEANERS) = 1
Number of I/O servers (NUM_IOSERVERS) = 3
请注意,有三个 db2pfchr 进程(与 NUM_IOSERVERS 的值对应)和一个 db2pclnr 进程(与 NUM_IOCLEANERS 的值对应)。
结束语
根据不同的 DB2 操作和配置设置,将会有许多其它进程出现和消失。我们已经为您展示了一些样本方案,这些方案演示了您可以如何观察哪些进程正在运行、这些进程表明了 什么以及数据库设置对其产生了怎样的影响。现在您可以使用这一知识来提高您管理 DB2 数据库的能力。
附件:
您所在的用户组无法下载或查看附件
http://www.100c.com.cn/oblog/user1/1/index.html
banker
LU天使
UID 653
精华 0
积分 802
帖子 1558
活跃指数 6
LU金币 2438 个
LU金条 0 个
阅读权限 50
注册 2003-10-16
#6
大
中
小
使用道具
发表于 2004-10-28 12:33
资料
个人空间
主页
短消息
加为好友
支持!!
当我们讲话时,有人聆听。
当我们做事时,有人跟随。
当我们前进时,没有任何困难可以阻挡
[广告]
记录自己的思想火花,留住每日的技术积累,尽在拥有属于自己独立域名的博客。
投票
交易
悬赏
活动
LoveUnix
专项技术区
> AIX -IBM UNIX
> 其他UNIX & Linux
> i5 (AS400) & IBM大机
> PC Server & HPC
> 存储设备
> 备份软件
> 网络 & 安全
> 编程开发 & Rational
> DB2 & Informix
> ORACLE等数据库
> 中间件技术
行业综合区
> 职业咨询 前程无忧
> 培训认证 行业入门
> 行业应用 项目实施
> 产品信息 商务交流
> Free download下载
交流灌水区
> 蓝色太平洋
> 墨香雅韵
> 论坛建设
> 博客专区
当前时区 GMT+8, 现在时间是 2008-10-12 10:41
乐悠LoveUnix论坛-京ICP备05005823号
Thanks to
Discuz!
© 2001-2007 Power by
LoveUnix.net
Processed in 0.054202 second(s), 6 queries , Gzip enabled
TOP
清除 Cookies
-
联系我们
-
乐悠LoveUnix
-
Archiver
界面风格
----------
Discuz! 5 Default
新DISCUZ风格
控制面板首页
编辑个人资料
积分交易
公众用户组
好友列表
升级个人空间
基本概况
流量统计
客户软件
发帖量记录
论坛排行
主题排行
发帖排行
积分排行
在线时间
管理团队
管理统计