当 Lotus Domino 服务器被部署和运行在实际环境中后,不可避免地会出现各种性能问题。如何快速地定位和解决这些性能问题,是构建高性能的 Domino 应用中的重要一环。性能监控是常用的发现性能问题的方法,它通过实时监控服务器的各项性能参数,及时发现服务器运行过程中的性能瓶颈,帮助系统管理员定位这些瓶颈并且解决问题。本文通过介绍四种常用的 Domino 服务器性能监控方法,从各个角度全方位监控服务器运行时的性能状况,为 Domino 服务器性能分析和调优提供有力的依据。
一般的服务器监控主要监控服务器上运行的各项程序以及它们的状态,包括方方面面的内容,比如运行期间产生的错误,服务器启动的后台任务等等。性能监控作为服务器监控的一个子集合,更加关注于服务器在性能方面的各项行为。服务器性能监控通过一些工具来监控服务器性能方面的各项指标(如处理器响应速度,资源利用情况等)的变化情况。这些数据随着服务器负载的变化而变化。一旦服务器负载超过所能承受的范围时,管理员可以对性能监控提供的这些监控数据进行进一步的分析,找出此时的服务器的性能瓶颈。因此,性能监控是解决服务器性能问题,提高服务器性能的十分重要的一环。
一个系统被部署在实际环境后,它的负载随着时间段的不同也会有所不同。根据系统负载的变化,可以将时间段分为三个时期:高峰期,空闲期以及正常期。顾名思义,高峰期是在一段时期内用户访问最频繁,服务器处理最繁忙的时刻。与其他时期不同的是,它反应了服务器会遇到的最大的压力,如果服务器在这段时期内来不及处理用户请求,导致响应很慢,那么服务器的性能就不能满足应用需求。因此,高峰期的服务器性能指标往往就是性能监控的重点。
另一个性能监控的重点是系统的 计划执行任务。计划任务大多是后台执行的任务,用于做一些数据统计,数据整合。Domino 服务器上常见的计划任务有创建文档索引,更新文档视图等等。这些任务在执行时会消耗一定的 CPU 及系统资源,影响服务器处理用户请求的能力,更有一些繁重的任务会产生严重的性能问题。通过系统监控来分析任务执行时的各项信息,也是提高服务器性能的重点。
当熟悉性能监控并且收集了一段时间内的监控数据后,我们可以建立服务器的性能基线。性能基线是指通过分析收集的一段时间内数据,产生的服务器性能度量,它反映了在通常情况下,随着时间段和负载的不同,系统资源利用情况的变化。一个完整的性能基线必须包括系统空闲期,正常期和高峰期的性能数据。通过建立起性能基线,我们可以主观判断系统的性能是否满足需求,并且可以根据这些数据对系统的性能瓶颈对症下药。
目前,针对 Domino 服务器的性能监控主要包含以下四种,每一种都有各自的侧重点:
- 操作系统性能监控工具:是操作系统自带的性能监控工具,主要监控操作系统的资源利用情况,包括 CPU,内存,磁盘等等,如 Widnows 下的 perfmon,AIX 下的 perfpmr。
- Domino 系统监控工具:监控 Domino 系统活动和平台使用情况的统计信息,通过这些统计信息我们可以获取 Domino 服务器在一段时间内活动的频繁情况。
- Domino 域监控(DDM):是从 Domino R7 开始引入的服务器监控和故障诊断工具,通过探测的形式监控 Domino 服务器上各部分的活动和任务,并且以事件的形式呈现。
- Tovoli ITCAM for Application:提供一组工具,为在 IT 基础架构的每一个层面上优化性能和可用性提供集成解决方案。
本文以一套部署的 Domino 服务器环境为例,通过使用不同的监控方法监控其运行时的性能。该部署环境包含一台 HTTP 服务器,负责接收来自客户端的请求并且转发给后台的 Domino 服务器;一台 Domino 服务器 mars,负责处理用户的请求。其部署环境如图 1 所示。
图 1. Domino 部署环境
评判一个服务器是否存在性能问题,最直接的是观测其各项资源利用情况。因为大部分性能问题都是由于某项系统资源在压力下不堪重负,成为性能瓶颈导致的。以 Windows 操作系统为例,我们主要关注系统的 CPU 使用状况,各项主要进程信息,系统内存及磁盘状况 4 大方面:
- CPU:CPU 是服务器处理的核心,处理器的处理速度直接关系到服务器处理请求的速度。
- Processor\ % Processor Time:表示 CPU 执行程序所消耗时间的百分比。如果该值持续超过 80%,表明 CPU 是瓶颈。
- System\ Processor Queue Length:处理器队列的长度,表示当前在队列中等待执行的命令的数量。队列长度持续大于 2 则表示可能出现处理器拥塞。
- Processor\ Context Switches:表示系统中整体线程的调度,切换频率。线程切换是开销比较大的操作。频繁的线程切换导大量 CPU 周期被浪费。
- Process:反映了某些具体的进程的信息,包括该进程占用的 CPU、私有内存、共享内存等信息。这些信息有助于进一步分析是哪些进程导致了性能瓶颈。
- Process\ % Process Time:表示该进程执行消耗 CPU 时间的百分比。常见与 Domino 有关的进程有 nhttp.exe、nserver.exe、nevent.exe 等等。
- Process\ Private Bytes、Process\ Virtual Bytes:Private Bytes 表示该进程在内存中的私有数据空间,不包含共享区,在 32 位 Windows 操作系统中,Private Bytes 最大为 2GB。Virtual Bytes 表示该进程在内存中总占用的空间,包含共享区。当这两个值在系统平稳期不断升高时,说明可能发生了内存泄漏。
- Memory:大型的服务器程序通常要占用大量的内存,内存不足时会频繁通过换页操作与磁盘上的数据交换,从而导致性能下降。
- Memory\ Available Mbytes: 系统当前可用物理内存数。如果 Available Mbytes 的值非常小 (4 MB 或更小 ),则说明计算机上总的内存可能不足,或某程序没有释放内存。
- memory\ Pages/sec: 表示由于硬性页面错误而从磁盘取出的页面数,或由于页面错误而写入磁盘以释放工作集空间的页面数。如果该值持续大于几百,表明内存可能存在瓶颈,需要通过增加内存来减少换页次数。Pages/sec 的值非常大不一定表明内存有问题,而可能是运行使用内存映射文件的程序所致。
- Disk:磁盘指数反映了系统 I/O 的能力。
- PhysicalDisk\ % Disk Time:所选磁盘忙于为读或写入请求提供服务所用的时间的百分比。如果持续超过 90%,表示磁盘很繁忙,此时磁盘是瓶颈。在 RAID 系统中,该参数可能会超过 100%,此时不适用于磁盘性能分析。可以使用 % Disk Busy =100% - %Idle Time 计算
- PhysicalDisk\ avg. Disk Queue Length:显示在队列中等待的磁盘读和写命令的数量,该值一般要小于(1.5-2)* 独立磁盘个数,在 RAID 系统中独立磁盘个数可能大于 1 个。超过则说明磁盘 I/O 存在性能瓶颈。
如果在监控中发现以上某一项或者多项资源性能持续变差,比如 CPU 持续超过 80%,内存出现大量的换页操作,则表示系统出现了性能瓶颈。需要注意的是,观测到的出现问题的资源并不一定是引起性能问题的根本原因,它可能是由其他资源出现瓶颈引起的。举例来说,当系统内存不足时,操作系统会频繁通过换页在内存和磁盘之间交换数据,这时可以观察到磁盘的活动也十分频繁。这时,磁盘的瓶颈并不是产生系统性能问题的起因,根本原因是内存不足。监控到系统出现性能瓶颈时,通过进一步深入地分析,检查应用程序能否被进一步优化以减少资源使用,使之不再成为瓶颈。如果程序不能再被优化,那就只能通过增加硬件的性能,如更换更加强劲的硬件,添加集群的方法来提高服务器性能。
IBM Lotus Domino 可以生成用来监控系统活动和平台使用情况的统计信息,并且包括许多的服务器监控功能,这些功能可以通知用户有关进程、网络以及 Domino 系统使用情况的信息。我们可以使用以下三种工具之一(Domino Administrator、Web Administrator 或服务器控制台)来打开这些统计信息和监控功能。
Domino Administrator 包括以下这些用来配置、查看和跟踪 Domino 系统的系统监控工具:
- 监控数据库:存储监控文档、信息和结果。“监控配置”数据库(EVENTS4.NSF)存储用来设置监控的文档。它还包括有关统计信息、统计阈值和事件消息的信息。“监控结果”数据库 (STATREP.NSF) 存储收集的统计信息报告,并且可以进行配置以存储有关被记录的事件的信息。日志文件 (LOG.NSF) 存储服务器的日志文档。
- 监控配置文档:定义并配置事件的组成以及处理事件的方式。它还允许用户定制事件发生时控制台中出现的消息。
- 服务器任务:收集并记录有关 Domino 系统的信息。“关闭监控”任务可以在请求关闭时确保 Domino 终止。“进程监控”任务只适用于 Microsoft Windows 平台上的 Domino,并可以监控应在 Domino 服务器环境中运行的进程。“事件监控器”任务确定是否已经为事件配置了“事件处理程序”,如果是,则将事件发送到指定的人员、数据库或服务器管理程序,以便进行处理。Statistic Collector 任务将 Domino 服务器统计信息收集在一起,并在“监控结果”数据库 (STATREP.NSF) 或用户指定的另一个数据库中创建统计信息报告。ISpy 任务执行 TCP 服务器和邮件路由事件生成器。
- 统计信息:Domino 将统计信息收集在一起,这些信息显示当前在系统中运行的进程的状态 - 例如,统计信息“驱动器 C 中的空闲空间”指出驱动器 C 中的可用空闲空间量。用户可以将这些统计信息与预先确定的统计信息阈值一起使用,以监控 Domino 系统和平台统计信息。
- Domino 服务器监控器:提供用户正在监控的服务器的状态的可视化视图。
使用 Domino Administrator 连接 Domino 服务器,打开“服务器”标签,系统和平台的统计信息及性能报告都显示在这边。用户可以通过界面监控系统,分析数据并且生成报告。这里我们监控了一段时间内 mars 上的活动,通过产生的性能统计信息和性能报告来分析其这段时间内的性能状况。
打开 “统计信息”子标签,该界面用于显示 Domino 系统及操作平台在特定时间内的统计信息,如图 2。Domino 系统会在运行期间不断更新统计信息。默认包括以下缺省的统计信息报告:日历和日程安排、集群、通讯、邮件和数据库、网络、平台、系统、Web 服务器和检索器。这些报告中的信息提供每个分类下的统计信息的子集。用户允许通过创建新的配置文件来添加新的统计信息。
打开 “监控”子标签,该界面用于启动 / 停止服务器运行状况监控器以及查看监控监控结果,如图 3。与普通的系统监控不同,服务器运行状况监控器可以自动计算运行状况统计信息,将这些统计信息与预定义阈值相比较及报告服务器整体运行状况,评定服务器运行状况等级。如果服务器运行状况等级是“警告”或“严重”,则存储于“运行状况监控”数据库 (DOMMON.NSF) 中的运行状况报告会提出短期建议或长期建议,用以调整服务器并使其性能状态恢复为“运行状况”。
打开 “性能”子标签,该标签用于监控 Domino 服务器的活动趋势,如图 4。Domino 服务器精确记录活动时间,按人、数据库和访问协议记录用户活动。活动趋势负责通过总结、平均趋势统计信息的活动记录或观察它在一段时间内的变化趋势,使用此信息来确定每个服务器上最活跃的用户和数据库,最后根据算法推荐资源平衡计划。配合使用 Domino 更改管理器,可以将工作负载重新分发计划的创建和执行自动化,从而加载新服务器、退役旧服务器或在负担不平均的服务器上平衡工作负载。
图 2. “统计信息”界面
图 3. “监控”界面
查看大图。
图 4. “性能”界面
查看大图。
Domino Domain Monitoring(简称 DDM),即 Domino 域监控,是从 Domino R7 开始引入的服务器监控和故障诊断工具。DDM 为管理员提供一种面向特性的服务器状态视图。管理员通过视图信息能快速诊断故障并且解决问题。为了帮助系统管理员降低在系统问题追踪、解决上所花费的时间、精力,DDM 能够自动识别、判断问题,并且对问题进行诊断、分析,提供问题的解决办法。DDM 能够帮助管理员在系统问题进一步危害系统之前,快速的定位、解决它们。
DDM 提供如下功能:
- 定义了超过 50 个可设置的监控,可针对 Domino 服务器的各个功能区域进行主动监控。同时为探测配置提供缺省设置,使设置更轻松。
- 快速发现并报告关键的服务器和客户机问题,并在多个功能区域中确定可能的原因。
- 提供自顶向下、面向功能的域状态视图,能选择性地查看状态的详细信息。
- 提供可视化的指示器,用于显示哪些问题最重要,哪些问题已解决,哪些问题还未解决。
- 提供补救措施和指向数据库的链接,以解决所报告的问题。
DDM 包含五个不同的模块:事件、探测、DDM 服务器收集层次结构、过滤器、相关数据库。其中,事件是 DDM 收集的服务器状态信息的基本单元;探测用于监控 Domino 服务器状态并且生成事件;服务器收集层次结构用于收集一个域中所有服务器上的事件;过滤器用于过滤掉不需要的事件类型;相关数据库包含了“监控配置”数据库(EVENTS4.NSF)和“Domino 域监控”数据库(DDM.NSF)。
事件是 DDM 监控的数据的表现形式。Domino 服务器运行时发生的每件事情都可以是一个事件。事件不仅可以表示系统正在顺畅地工作、处理数据和执行任务,也可以表示系统可能由于未处理数据或未执行所需的任务而导致功能失常。通过“Domino 域监控”数据库(DDM.NSF)可查看 DDM 事件,检查所报告的 DDM 事件可能的原因和可能的解决方案,打开指向可解决所报告事件的相应数据库的链接。DDM 中的事件主要包含两种:增强事件和简单事件。增强事件包括“DDM 探测”文档生成的事件,Domino 事件生成器生成的事件,或者在 DDM 事件报告中出现的带有特定目标信息的任何其他事件。目标信息包括服务器、数据库、代理或用户指定的目标。简单事件就是与特定目标信息无关或不包含特定目标信息的任何事件。
事件按照严重度可以划分为 5 个等级,从高到低依次为 “致命”、“失败”、“警告(高)”、“警告(低)”、“一般”。其中“致命”表示系统即将崩溃,“失败”表示不会引起系统崩溃的严重失败,“警告(高)”表示需要干预的功能损失,“警告(低)”表示性能降低,“一般”表示系统的状态消息。事件的严重度可能会发生变化。
事件按不同的状态分为 “打开”、“关闭”、“永久关闭”。“打开”表示事件具有非“一般”严重性,并且管理员尚未关闭此事件,当事件指向的服务器问题被解决后,打开的事件会自动变成“关闭”。“关闭”表示事件具有“一般”严重性,或者管理员已关闭该事件,如果关闭的事件以后报告为非“一般”严重性,事件状态将变为“打开”。“永久关闭”表示管理员已将此事件标记为永久关闭。这些事件将永远不会自动重新开启,但是管理员可以重新打开或者将其指定为“关闭”。
图显示了一个处于打开状态的事件:从图中可以看到该事件处于“打开”状态,严重度为“警告(高)”,事件的起因以及解决方案。
图 5. DDM 事件
查看大图。
探测是一种独立的检查或一组检查。它们本质上是一段段基于条件触发的代码,被植入到服务器的代码中。服务器运行时的状态一旦满足探测的触发条件时,探测代码被触发并且执行,以事件的形式记录下当前服务器的状态。所有的事件都存放在服务器本地的 “Domino 域监控”数据库(DDM.NSF)中。
打开被监控的 Domino 服务器上的“监控配置”数据库(EVENTS4.NSF)数据库,可以创建新的探测或者修改已有的探测配置。DDM 针对不同功能和模块,创建了不同种类的探测,包括管理探测、应用程序代码探测、数据库探测、目录探测、消息探测、操作系统探测、复制探测、安全性探测、服务器探测和网络探测。在性能监控方面,我们首先要关注的是 Domino 服务器的一些关键性能指标,包括 CPU 、内存、磁盘、网络等使用情况,因此,我们创建一些操作系统探测来监控。操作系统探测有四个子类型:CPU 探测、内存探测、磁盘探测和网络探测。以内存探测为例,如图 6,选择监控范围为 “All Servers in the domain”,操作系统为 “Windows”,内存阈值为小于 10MB 时产生严重度为警告(高)的事件,在 10MB 与 50MB 之间时产生严重度为警告(低)的事件。这样在系统运行时出现内存不足时,DDM 会生成警告事件。
图 6. DDM 操作系统内存探测
查看大图。
监控 Domino 服务器上的操作系统的主要指标,能从总体上获得服务器的性能状况。为了进一步分析 Domino 各项服务的具体性能,我们还需要添加其他与性能有关的探测。其中比较重要的是应用程序代码探测。应用程序代码探测监控代理调度和代理使用的资源。代理包括代理管理器运行的基于服务器的定时代理,以及 HTTP 进程运行的基于服务器的 Web 代理。应用程序代码探测同样有几个子类型:
- 跟不上调度的代理:根据当天使用时间的最大数量,确定哪些代理已经落后于调度。
- 按 CPU 使用量分级的代理:生成当天 CPU 使用量最大的 100 个代理的列表。
- 按内存使用量分级的代理:跟踪 LotusScript 和 Java 代理的内存使用。
- 长时间运行的代理:可以确定潜在的失控代理,生成一个运行时间最长的的代理的分级列表。
- 其他类型的代理探测:不需要进行任何配置,会始终运行。
- 代理安全性错误
- 因设计更新任务而禁用的代理
- 超过最长运行时间非正常终止的代理
- 在没有全文索引的数据库上执行全文搜索操作
图 7 显示了一个监控代理 CPU 使用量的探测,它监控 HTTP 进程运行的 Web 代理,按照该代理在运行过程中 CPU 的使用量,设置不同的阈值和事件严重度。
图 7. DDM Web 代理 CPU 探测
查看大图。
此外,还有一些分布在不同类型中的子类型探测,从一些角度反映了当前 Domino 某个模块的性能状态。图 8 描述的是消息探测中的邮件流统计检查探测,它用于监控 Domino 服务器上的邮件数量,并检查在 MAIL.BOX 文件中的邮件消息数量是否超过路由器可以处理的邮件消息数量。如果超出处理能力,那么邮件就不能及时被传递,产生性能问题。
图 8. DDM 邮件流统计检查探测
查看大图。
当 DDM 探测在服务器上运行时,会产生事件报告给该服务器上的“Domino 域监控”数据库(DDM.NSF)。通过定义 DDM 服务器收集层次结构,我们可以将数据集合到少量服务器上,避免每次都需要在每个服务器上访问每个“Domino 域监控”数据库来检查探测结果。
使用“监控配置”数据库(EVENTS4.NSF),可以创建和管理 DDM 服务器收集层次结构。可以指定一个服务器收集所有的 DDM 事件数据,也可以定义定制的 DDM 服务器收集层次结构,该结构由多个收集服务器组成,也可以由多个收集服务器和多个服务器层组成。与 DDM 过滤器相结合,可以过滤掉不需要收集的事件数据,使性能监控结果更加清晰。
基于 IBM Tivoli® Composite Application Manager for Applications 的 Domino 域集成监控
IBM Tivoli® Composite Application Manager(ITCAM) for Applications 是一个软件解决方案,它是 ITCAM 监控产品家族中的重要一员,用于监控 Application 应用 ( 包括 Domino、Web 应用程序、操作系统等等 ) 的生命周期,以确保高可用性和高性能。它将高级 IT 管理功能和 IBM Tivoli Monitoring 产品的丰富功能结合起来,为监控和管理整个企业提供一个真正的集成解决方案。
- ITCAM 提供了一组工具,用于帮助客户的组织在 IT 基础架构的每一个层面上优化性能和可用性。
- ITCAM 有助于简化和加强分布式应用程序管理。应用程序组件可能驻留在多个服务器、不同的平台和环境甚至大型机上。
- 使用 ITCAM,集成从数据层开始。在数据层中,一个通用数据模型支持在所有组件和代理上实现一个统一的信息视图。然后,这种信息被合并到一个简单易用的基于角色的界面:IBM Tivoli Enterprise Portal。
- 只需一次登录,就可以访问服务器管理、应用程序管理、事务管理和高级管理功能需要的所有监控数据和管理工具。
ITCAM Agent for Lotus® Domino® 是 ITCAM for Application 中的一个组件,它提供了通过 ITCAM 监控 Domino 域的能力。通过它可以在 ITCAM 上实现:
- 资源监控: 支持从 Domino 统计数据、IntelliWatch 统计数据、Domino 事件和服务器状态信息中搜集监控数据。支持从本地 Domino 服务器监控远程 Domino 服务器。支持远程监控同一 Domino 域服务器或者通过跨域验证(cross-certified)监控不同域的服务器。支持监控不同平台的 Domino 服务器。
- 可用性监控: 提供各个 Domino 服务器的可用性信息,代理会定时探测服务器状态以确定是否可用。
如果企业环境中部署了包括 Domino 服务器的复杂应用环境,ITCAM 解决方案提供了统一的监控解决方案。首先,对整个应用程序资源环境统一的性能和可用性监控管理能提高系统管理员的工作效率,它提供了集中的数据仓库、报告和可视化界面,有助于分析各种各类由各系统依赖性造成的系统性能问题。对于 ITCAM 的具体使用,具体可参见 参考资料。
本文概要地介绍了监控 Domino 服务器的四种方法,通过这些方法,Domino 系统管理员可以快速地发现和定位系统出现的性能问题。更多详细的性能监控和配置问题,可以参见 参考资料中列举的文章。
通过本系列文章四部分的阐述,我们对如何发现并且解决 Domino 服务器性能问题,如何提高系统性能做了详细的介绍。读者可以根据我们的方法在自己的 Domino 系统中尝试去监控和解决一些性能问题。
学习
-
Lotus 产品性能专题
- IBM 红皮书:
Lotus Domino Domain Monitoring
- 阅读 developerWorks 文章
DDM 在 Lotus Notes/Domino 8 中的新功能
- 阅读 developerWorks 文章
优化 Lotus Domino 服务器性能 : 像专业人士那样处理性能曲线
- 阅读 developerWorks 文章
Domino 应用程序性能故障检修 : 第 1 部分:故障检修技术和编码技巧
- 阅读 developerWorks 文章
Domino 应用程序性能故障检修 : 第 2 部分:Lotus Notes/Domino 7 中的新工具
- 参考英文资料:
Lotus Domino Document。
- 参考英文资料:
Lotus Domino Administrator 8.5。
- 参考英文资料:
Tivoli Composite Application Manager for Applications。
- 访问 developerWorks Lotus 专区。
- 随时关注 developerWorks 技术活动和网络广播。
获得产品和技术
- 下载 IBM 软件试用版,体验强大的 DB2®,Lotus®,Rational®,Tivoli®和
WebSphere®软件。
讨论
- 参与论坛讨论。
- 加入 developerWorks 中文社区,developerWorks 社区是一个面向全球 IT 专业人员,可以提供博客、书签、wiki、群组、联系、共享和协作等社区功能的专业社交网络社区。
- 加入 IBM 软件下载与技术交流群组,参与在线交流。