运行在i系列400服务器中的Domino任务(Tasks)
内容提要:
基于对Domino任务所承担功能的不同,可以把它们分为负责响应Notes客户端请求的交互特性任务和具有批处理特性的后台支持任务.任务可以是多线程的.
在i系列的Domino里,无论是交互特性任务还是后台支持任务,都具有相同的运行优先级,都作为具有高优先级的批处理作业运行.没有经过详细研究而轻易改变这些任务的运行优先级,可能会暂时提高Domino运行性能,但从长远来看,会引起系统不可预测的后果.
Domino基本任务: | Domino基本任务如何执行: |
One Router thread (Mail Router) | Background task |
One Replica Task (Replication) | Background task |
AdminP running | Background task |
Events and Reporting enabled | Background task |
One Updater (Indexing) | Interactive task |
C&S enabled (Calendar & Schedule) | Interactive task |
Agent Manager running | Interactive task |
另外,Domino还有几个高级任务,为提高服务器的整体性能,建议把这些高级服务运行在单独的Domino服务器中,从而独享资源、隔离错误和分配适合运行的优先级:
-- Clustering and failover
-- SMTP and HTTP
Domino启动时自动运行哪些任务,可以通过修改notes.ini文件来设置. DominoR5缺省设置如下:
ServerTasks=Billing,Replica,Router,Update,Stats,AMgr,Adminp,Sched,CalConn,Event,QNNINADD
下文详细介绍Domino任务的分类和功能,以及它们和iSeries作业的对应关系.
说明:
i系列上的Domino服务器运行在独立的Domino子系统中,Domino子系统里又包含了许多作业,每个作业就对应了一个Domino基本任务.
这些在i系列里的Domino作业大致可以分成几类:
(1)需要长期保持运行的Domino基本任务: ADMINP/AMGR/QNNINSTS/ROUTER/SERVER/STATLOG/UPDATE
(2)经常需要的Domino附加任务: CLADMIN/CLDBDIR/CLREPL/COLLECT/EVENT/HTTP/LOGASIO/REPLICA/SCHED/SMTP
(3)不常用到的Domino附加任务: BILLING/CALCONN/QNNINADD/REPORT/STATS
(4)由Domino系统管理员或agent在某段时间内调用的进行 数据库后台维护的任务: COMPACT/UPDALL/Fixup
(5) QSYSWRK子系统下的Domino QNNxxxx 程序: 大多数的QNNDxxxx程序负责处理目录同步服务,使得iSeries服务器的 distribution directory 和 Domino Directory ( Public Address Book , Name and Address Book)保持同步.没有对应的可人为控制的Domino任务 .
下面介绍几个重要的、和Domino任务相对应的OS/400作业.请注意,任何Domino任务都不要用OS/400的ENDJOB命令停止,而应该用Domino自己的命令"tell xxx q" 停止它们:
(1)ADMINP (administration process):最重要的Domino 调度作业,以类型于批处理的方式执行 许多 常规系统管理任务( administrative tasks),或帮助用户完成选择动作的运行. 可以用"show stat platform.process.*"统计信息查看它占用的系统处理器资源.
(2)AMGR (Domino Agent Manager): 负责管理预先定义好的Agents.Agents可以帮助Notes用户自动执行任务.比如,某个Agent可以帮助实现对每个接收到的邮件自动发送反馈信息,提示这个用户暂时不在公司.用户也可以用 Notes Agent Builder 来自创建 simple agents、formula agents、LotusScript agents 等. 可以用"show stat agent"分析性能数据.
(3)QNNINSTS : 监督人,没有对应的Domino任务. 每次用STRDOMSVR命令启动Domino子系统,作业QNNINSTS会自动提交,它去调用程序QNNINSTS,由这个程序负责启动所有服务器任务,并监控这些任务是否正常结束了.如果某个任务失败,QNNINSTS会试着停止所有剩余任务并重启Domino服务器.因为QNNINSTS是第一个启动作业,也是最后一个停止作业,请不要用ENDJOB命令强行停止它,可以使用ENDOMSVR来停止整个Domino服务器. 它的job log存储了所有在Domino启动时出现在主控台上的报错信息.
(4)ROUTER (Domino Mail Routing Task):在发送信箱和接收信箱间转移邮件.为了帮助确定邮件转移路径,每个Domino服务器上的Mail Router 都会基于 Domino Directory提供的信息维护一个routing table. 每个Domino服务器上的Mail Router在工作时都会用到两个数据库:
-- mail.box, 暂时存储所有服务器上发出的和接收到的、待发待转移的邮件.
-- names.nsf,存储routing table,提供用户、服务器和连接文档信息.
可以使用"Mail Trace"来确定最优邮件转发路径,或分析路由相关问题.
通过增加Router任务的线程数可以提高邮件路由性能.首先,请先用命令"show stat mail.waiting"判断是否需要这样做.这个命令显示出在这段时间内等待被路由的邮件数量.如果数值开始增加,从Domino R5开始,可以创建多个MAIL.BOX文件来并行运行多个mail router任务.可以从创建两个开始,按实际需要再增加,建议不要超过10个.
(5)SERVER: 最重要的Domino服务任务,多线程作业,是QNNINSTS后的第一个被启动作业,控制所有Domino服务器中发生的事情,比如启动会话、控制存取NSF数据库、控制Domino分区间通讯等.SERVER任务初始化会激活8到10个线程.随着用户不断登录,会有线程陆续激活,会引起CPU资源消耗.通过实施IOCP,可以在SERVER作业里使用更少的线程支持更多的用户,从而提高了系统性能.
http://www-1.ibm.com/servers/eserver/iseries/domino/iocp.htm
(6)UPDATE (indexer task): 负责在Domino数据库中任何文档变化后,更新和重建Domino数据库的视图(views)和 索引(indexes),确保它们能反映最新的信息.一般要保持UPDATE在Domino服务器上一直运行,从而确保所有的indexes和Domino数据库中的变化实时对应.当用Domino主控台命令"show tasks"查看,UPDATE任务是以"Indexer"出现的.可以同时运行多个UPDATE任务,但会对系统性能产生重大影响.即使是单独运行的UPDATE任务,也会占用大量系统资源. "Indexer"由三部分组成: UPDATE任务/UPDALL任务/NIF(Notes Indexing Facility)任务.
UPDATE任务长期运行,监控着队列$UpdateQueue.UPDALL任务是UPDATE任务的一个实例,它除了为 所有 Domino数据库更新所有变化了的视图和全文索引,还会执行超出UPDATE的某些功能,比如真正删除已经标识为 "discarded"的view的index等.缺省,它会在每天2:00AM启动.当然,也可以人为用Domino主控台命令"Load"调起它.NIF任务处理大部分由于用户开/关数据库、视图(View)或定位索引入口时而引发的服务器请求.所以,NIF就帮助确保了视图的数据新鲜和顺序正确.虽然NIF长期运行,但没有方法收集它的性能数据. 当做视图更新时,视图会被锁住不可用.但正常情况下,更新动作非常快,所以用户往往不会察觉.为了降低UPDATE任务对系统性能(特别是CPU使用率)的影响,请仔细使用Domino Designer来修改视图的属性:
请使用Domino管理客户端,打开"server document",为相关Domino任务进行参数设置: