内容


Domino 性能调优简介

Comments

相信任何 Domino 管理员都希望他们的 Domino 服务器能更加高效地运行,并获得性能方面的提升。毕竟,适应这些系统需求的不断演变并充分发挥系统的性能是一项关键的任务。

本文介绍 Notes/Domino 性能分析概念及工具的基本知识。在本文结束部分,您可以找到更多高级文章的链接以及关于性能的在线资源的列表。本文假设您对计算机系统和 Domino 服务器管理有基本的理解。

什么是性能调优?

性能调优的总体目标是充分发挥硬件的潜力。但是,如何才能确保充分利用 Domino 服务器的资源呢?

性能调优涉及确定操作系统和应用程序级瓶颈。它包括分析和调优系统硬件及软件,以优化所有主要组件的性能,包括内存、CPU、磁盘驱动器和网络。例如:

  • 处理器影响 Indexer 速度、Replicator 速度、数据库事务最大数量以及可并行运行的插件数量。
  • 磁盘访问率和配置影响数据库、视图打开和集合导航(查看索引)的速度。
  • 内存影响 Notes 客户机并发连接(会话)的最大数量、缓存大小和服务器插件任务性能(由于磁盘分页较少)。

如何实现性能调优

您应该采用至上而下的性能调优方法。在调优 Domino 服务器的性能之前,您需要确保网络组件能有效运作。网络瓶颈的产生有多种原因,并且经常需要较高的技巧才能排除它们。路由器、网关、防火墙和网络冲突都可以造成性能瓶颈。您可能还需要使用嗅探设备查找网络流量中的问题。

然后,您应该确保 Domino 系统能有效地使用网络,检查网络利用率、总传输字节/秒,以及在检查延迟过程调用(Deferred Process Call,DPC)时间百分比和 DPC 队列/秒。这些信息可以让您了解网络占用的处理器时间以及 DPC 队列是否在增长。

调优网络之后,您已准备好考虑 Domino 服务器的性能。Domino 服务器性能调优的过程和复杂度取决于 Domino 网络的大小和复杂度。如果您只有一台 Domino 服务器,并且它只有一个磁盘驱动器和一个中央处理单元(CPU),那么您的性能调优选项相当简单:

  • 设计应用程序、表单、视图和页面,以实现最优化的性能
  • 使用重定向 URL
  • 使用更快的方式来代替公式,比如计算子表单和 JavaScript
  • 关闭不需要的 Domino 服务器任务
  • 优化 LotusScript 和 Java 代码

对于拥有多个 CPU 和硬盘驱动器的 Domino 服务器,其性能调优显然更加复杂。所有上述技巧都适用于这些系统,但除此之外,您还需要确保 Domino 工作负载有效、平衡地分布到物理磁盘驱动器中。由于 Domino 服务器有时需要占用大量磁盘,因此磁盘驱动器和 RAID 设备的配置可以极大地增强服务器性能。

Domino 服务器在最简单系统上的性能关键可以归结为以下几点:

通过磁盘和处理器展开工作

这些系统的性能调优涉及设置磁盘驱动器分区以及通过组织系统、程序和数据目录在系统中尽可能平均地分布工作负载。(参见 Iris Today 文章 “优化服务器性能:I/O 子系统”)。这些系统经常需要一些测试和硬件、软件调整才能达到最佳性能。性能测试工具允许您体验不同的系统配置,比如 RAID 阵列条带深度和硬盘文件格式,以便了解哪些结果能实现更好的性能。

Domino 性能测试工具

许多性能瓶颈只会在服务器处理高负载时才会显现,因此服务器性能工具将用于模拟邮件消息或数据库活动的负载。使用 Domino 开发的 Server.Load 及 NotesBench 性能工具将运行于 Notes 客户机系统之上,并且将使用工具负载脚本来控制服务器的模拟用户活动。

NotesBench 和 Server.Load 都是使用相同的服务器性能测试引擎构建的,该引擎经过多年的扩展现已包含 Internet 邮件、讨论数据库以及日历安排。Server.Load 比 NotesBench 更加简单和灵活。

Server.Load

Server.Load 使用图形用户界面(GUI)控制工作负载操作。Server.Load 最合适用于中小型评估,它包含在 Domino 服务器光盘中。它的任务包括:

  • 从被测试的系统收集 150 个性能指标。
  • 运行内置和自定义工作负载脚本。

NotesBench

NotesBench 是一款强大的基于命令行的工具,它只适用于 NotesBench Consortium 成员和受过性能分析培训的个人。它所需的 Domino 系统知识和设置比 Server.Load 更多,并且不适用于小型评估。它的任务包括:

  • 生成一系列使用 “用户/秒” 衡量的系统响应时间评级。
  • 运行一组标准的内置工作负载。
  • 从 NOTES.INI 文件获取所有工作负载控制信息。
  • 以并行/子关系同步多个测试驱动器。

您的正确选择是什么?

NotesBench 和 Server.Load 都可以用于运行工作负载来公开您的服务器中的瓶颈。但是,开始 Domino 性能分析最快的方式是使用 Server.Load。您的 Domino 服务器 CD 上提供了程序及文档的副本!

如果您计划进行大型部署,我们建议您使用 NotesBench Consortium 成员的服务。他们有配置和运行 NotesBench 的经验,并且可以自定义 NotesBench 在符合您需求的平台上运行。

NotesMark 评级,与马力评级类似,允许您比较 Domino 在不同硬件平台上的稳定性。与使用 Server.Load 公开系统瓶颈相比,使用 NotesBench 获取 NotesMark 评级需要更多配置和更加严格的指导。

理解基准测试服务器的作用

基准测试服务器是用于使用 Server.Load、NotesBench 或第三方工具进行测试的 Domino 服务器。此服务器创建在隔离的 Notes 域中,它能为测试系统提供较高的负载。

性能测试工具提供的设置脚本和代理在创建 Person 文档时会一并创建数百甚至数千的相关邮件文件。这允许您更好地理解系统在高负载下的行为,以便于理解系统限制。

运行测试并分析信息之后,瓶颈服务器可以转换为生产服务器,或者可以成为焦点不同的测试服务器。

什么是稳定状态?

稳定状态表示被测试的系统已达到均衡,并且系统可以维持测试负载尽可能长的时间,因为内存、CPU和磁盘 I/O(输入/输出)不会增加或接近关键限制。

下图显示了整晚运行 Server.Load 工作负载的服务器已经达到稳定状态。第一张图针对 Windows NT 系统,第二张图针对 RS/6000 系统。注意,主要系统组件的活动在初始剧增后逐渐趋于平稳。如果任何系统组件的活动在测试运行过程中增加,则系统不会达到稳定状态。

图 1. Windows NT 稳定状态图
Windows NT 稳定状态图
Windows NT 稳定状态图
图 2. RS/6000 稳定状态图
RS/6000 稳定状态图
RS/6000 稳定状态图

使用系统监控工具收集性能数据

运行 Domino 的操作系统将跟踪系统内部发生的一切情况。监控程序将从静态计数器收集请求数据,并将它们记录到文本文件中,或者以图形的方式显示。这些数据将显示哪些系统组件已达到或接近最大容量,并允许您测量系统调整对性能的影响。基于 Microsoft 的平台使用 Perfmon 实用工具收集数据。UNIX 平台则使用 IOSTAT 和 VMSTAT 这样的命令行实用工具。其他 Domino 服务器平台可以使用其他工具和方法。

Domino 性能测试的工作原理

下图演示了数据在测试驱动器与被测试系统之间的流动。蓝色箭头所代表的请求模拟服务器上的用户。黄色箭头表示从服务器检索出的统计数据,它们将保存在 Server.Load 指标文件中。Server.Load 还将 Script Output Monitor 中的文本捕获到结果文件中,可以在其中搜索超时和错误消息。

图 3. 数据在测试时的流动情况
数据在测试时的流动情况
数据在测试时的流动情况

要使用监控工具执行性能测试和收集数据:

  1. 在测试客户机上安装 Server.Load。
  2. 使用特殊的工具负载和代理设置性能测试,为测试用户创建邮件文件和 Person 文档。
  3. 运行性能工作负载,在被测系统上创建工作负载直到它达到稳定状态。
  4. 查看并绘制从 Windows 服务器平台上的 Perfmon、Windows 和 Solaris 平台上的 Platform Stats 中收集的统计数据(位于 Statrep.nsf 数据库中)。
  5. 从测试驱动器客户机指标文件收集响应时间数据。
  6. 阅读下节了解如何解释收集到的数据。

分析测试结果:最可能的疑点

在查找数据瓶颈时,您应该从中央系统组件开始。正如繁忙交叉点处的流量需要备份一样,系统关键区域的数据也只会在负载量大时才会备份。通过创建电子邮件 “高峰期”,性能测试可以堵塞系统中的瓶颈。然后,与流量网络摄像机类似,操作系统性能统计数据用于监控流经系统的数据。

需要重点记住的一点是,每个子系统都与一个队列相关联,并且其长度就是需要监控的队列长度。就 CPU 而言,它是 System Processor Queue Length,而对于磁盘来说,它采用 Average Queue Length,等等。您可以按逻辑顺序来查看瓶颈。

服务器 CPU

检查瓶颈时考虑的第一个地方就是服务器 CPU。即使系统的磁盘空间和 RAM 无限大,它也会受到 CPU 能处理的数据量的限制。如果 CPU 使用率接近 100%,则系统会受到 CPU 的限制。但是,即使 CPU 使用率达到 100%,但 System's Processor Queue Length 在一段时间内未超过 2(在 Windows NT 上),则 CPU 不会带来瓶颈问题。注意,您服务器的 CPU 使用率可以达到 100%,但它不能持续超过 1 分钟。

在理想情况下,服务器应该保留一些增长空间,一旦处理器时间达到 100%,就不应该再添加任何注册用户或服务器任务。

可用内存

下一个要检查的地方是内存。如果可用 RAM 在任何时刻接近零,则系统性能将受到 RAM 的限制。查看物理 RAM 和以字节表示的确认虚拟内存。

磁盘输入和输出

接下来查看磁盘输入和输出。这是非常有趣的地方!如果您有大量 RAM 和 CPU 周期可用,但系统仍然需要很长时间才能打开数据库,则应该查看 Windows NT 上的硬盘输入/输出,方法是检查 Drive Queue Lengths 和 Average Disk Reads/Writes per second、Percent Disk Time 和 Percent Disk Bytes transfer time。在 UNIX 上,查看 Logical Disk Percent Time 和 Logical Disk Service Time。

未来计划

下表列出了一些文章和资源,它们阐述了如何使用这些工具揭示 Domino 服务器中的性能瓶颈,以及如何在性能调优和容量计划中使用这些技巧和指标。

性能简介文章

改善 Domino 服务器性能的十大方法
如果您只想了解关于 Domino 性能的更多信息,则应该阅读这些优秀的文章!

掌控性能” 和 “掌控性能 2
在这些采访中,了解 Iris Domino 性能团队、他们的任务以及 Domino 性能的未来。

优化服务器性能:专业处理曲线
本文分析使用各种系统配置同时执行各种测试工作负载时的 Domino 性能。您可以研究 6 种不同评估场景中的结果,确定每种配置的标准。

优化 Domino 服务器性能

优化服务器性能:端口加密和缓冲池设置
本文讨论您所使用的各种工具,并通过分析不同测试场景展示了端口加密和 NSF_BUFFER_POOL_SIZE 设置对服务器性能的影响。

优化服务器性能:HTTP 线程设置
HTTP 线程就像汽车化油器中的燃料 —— 不能太多也不能太少,否则会产生负面影响。确保您的 Domino Web 服务器能达到最高效率。

优化服务器性能:I/O 子系统
了解如何使用事务日志、多种 mail.box 和多种磁盘驱动控制器来提高性能。

Notes.net 公开:改善网站性能
在这个高容量网站的实际示例中跟踪 Notes.net 的性能。了解我们如何通过升级和系统配置变更来改善性能。

Notes 支持:更多的内存真的有用吗?
本文概述内存占用对 Domino 服务器性能的影响。它演示了服务器内存存储如何通过过度的磁盘 I/O 操作使服务器变慢。

优化服务器性能:事务日志
本文概述事务日志性能的优势以及 RAID 驱动器配置和 R5Mail 测试工作负载的详细信息。

优化服务器性能:Semaphores(第 1 部分)
这是一个系列文章的第 1 部分,描述 Semaphore 超时发生的原因,以及如何诊断其内在原因。

优化服务器性能:Semaphores(第 2 部分)
本文以第 1 篇文章的建议为基础,并展示了额外的故障排除技巧,这次基于实际体验。

Domino 应用的性能注意事项
这篇 IBM 红皮书主要介绍性能的应用方面,同时还简要讨论了一些基本的服务器调优话题。

优化 Domino 服务器集群性能

优化服务器性能:Domino 集群(第 1 部分)
本文首先讨论 Domino 集群,侧重介绍与性能相关的方面,然后讨论 Domino R4.6 集群的性能测试。

优化服务器性能:Domino 集群(第 2 部分)
本文扩展讨论 Domino R5 集群的性能测试,包括关于 Internet Cluster Manager 和集群复制的数据。


相关主题


评论

添加或订阅评论,请先登录注册

static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=10
Zone=Lotus
ArticleID=398621
ArticleTitle=Domino 性能调优简介
publish-date=09012000