描述总体性能的文档已经非常多,但它们都建立在这样的假设之上:Lotus Domino 的性能仅受事务数量的影响。实践经验表明,与性能相关的挑战已经扩展到使用类型,而不仅仅受限于事务的数量。
一个重要的问题就是,传输和存储的邮件的大小和数量都比以前要大。在许多环境中,除了处理传统的消息发送之外,Lotus Domino 还成为分发、文档管理和存储的中心。从本质上讲,Lotus Domino 环境为了满足客户需求而变得更加复杂了。所以现在的邮件文件比以前要大,并且还会一直增长。
一些客户正在忙着对付不断增长的邮件文件,从而确定如何处理数据并了解这些增长对性能的影响。受到业务需求的驱动,可能一个用户(或一组用户)就有多达 10 GB 的邮件文件,或者出现许多大型的邮件文件。有关这些增长对系统性能的影响的信息比较有限,因此如果管理员没有很好地理解性能如何受到影响的话,就难以采取补救措施。
一些常见的问题包括:
本文测试各种配置并检查它们如何影响总体性能,从而对这些问题进行研究。
我们对许多处理性能问题的标准方法进行了测试,以演示这些配置可能带来的益处。尽管测试能解决许多场景中碰到的问题,但是要注意每个环境的参数都是不能改变的并且在大多数情况下是统一的。当将参数直接转移到特定环境或实际的生产负载时,必须多加注意。
注意:您不能期望通过不同的调优方式来实现性能的大幅提升。性能调优的本质就是获得更高的资源效率。调优是一个反复的过程,并且这样的调优的好处很明显;越难越复杂的调优可能其价值就越低。最重要的是,任何性能的提升都受到基础资源能力的限制。本文的目标不是提供一个明确的指导方针,而是为更常见的场景提供一个新的视角。
![]() ![]() |
![]() |
测试在运行 AIX® 5.3 系统的 pSeries® 630 机器上完成,该机器有 4 个 PowerPC®_POWER4™ 处理器,总主频为 1453 MHz。该系统的 RAM 为 8 GB,它的数据和 Domino 目录使用 IBM SSA® 160 SerialRAID 适配器 (4109100) 在 20 个 SSA160 物理磁盘驱动器上进行测试,每个磁盘大小为 18 GB(见表 1)。
硬件 | 细节 |
---|---|
CPU | 4 个 PowerPC_POWER4,总主频为 1453 MHz |
内存 | 8 GB |
以太适配器 20 SSA160 物理磁盘驱动器 | 10/100 Mbps Ethernet PCI Adapter II |
存储 | 20 个 SSA160 物理磁盘驱动器,10000 转/分 RAID 0 / 使用并行调度的最大磁盘间(interdisk)策略 |
表 2 列出了测试的软件细节。
软件 | 版本 |
---|---|
AIX | 5.3 |
Lotus Domino 32 位 | 8.0 |
Lotus Domino 64 位 | 8.0.1 |
Server.Load 客户机 | 7.0.3 |
Template | StdR7Mail |
![]() ![]() |
![]() |
测试的目标是在服务器上执行高强度并发行为时,度量各种配置更改对性能的影响。
通过运行一些基础的测试负载来了解典型负载对服务器的影响,与之形成对比的是运行具有大型数据库的负载。在运行基础负载后,将实现各种不同的调优更改,看看这些更改是否对性能产生影响。
除了输入/输出(I/O)发生改变之外,还可能对以下事物产生一些有趣的影响:
通过实现 Server.Load 向服务器生成负载。使用基于内置 Notes® Remote Procedure Call (NRPC) 例程的定制脚本来模拟用户行为,这些行为包括:
注意:随 Server.Load 附带的测试负载被设计为类似 “正常的” 使用模式。我们使用了专门用来耗费系统资源的脚本来完成测试。这个测试中的值并不代表正常情况下的使用;相反,它们反映所有用户试图最大限度地影响服务器时的使用情况。
表 3 给出了使用 dd 命令进行测试时的 I/O 子系统的持续性能度量。dd 命令是一个 UNIX® 命令,它允许您使用文件副本类型的操作控制 I/O 流。这个命令没有反映 Lotus Domino 服务器上的实际使用,因为 Lotus Domino 数据库的 I/O 模式一直都是多线程和随机的。不过,它确实反映了底层硬件的基础性能。此外,使用 RAM 磁盘文件系统再次运行了这个测试,以显示速度方面的差异。
子系统 | 结果 |
---|---|
RAM 磁盘 | 242 MB/秒 |
JFS2 | 写速度为 20 MB/秒,读速度为 39 MB/秒 |
我们关心的两个方面是响应时间和资源使用;因此,我们的最终目标是最大限度地提供资源,同时缩短对用户的响应时间。
![]() ![]() |
![]() |
在我们的测试中,几乎耗尽事务时间的两个操作是 UPDATE_NOTE 和 Notes Indexing Facility (NIF) 操作(OPEN_COLLECTION 和 UPDATE_COLLECTION 等等)。在所有测试中,这些操作占用的事务时间占据了总事务时间的大部分。
因此,事务时间随着用户的增多而增加,而每分钟处理的事务数量则不断下降。从本质上讲,用户越多操作就越多,这就导致性能下降(见图 1)。
目前的资料和经验表明,邮件的性能取决于影响收件箱操作的因素。这是有一定道理的,因为这是最常用的 NIF 结构(即视图/文件夹)。当 NIF 结构变大时,对资源使用和操作时间的影响尤为明显。
图 2 显示了对 250 位使用不同数量的文档的用户的性能影响。这些结果和以前得出的结果一致。尽管这不足为奇,但在这里关键是了解数据库(甚至是视图)的大小会增加处理一个事务所需的资源。
您可以将该结果与事务或用户的实际数量不断增加的场景相比较。有趣的是,当我们仅关注每分钟的事务数量时,如果将文档的数量增加 10 倍,这比将用户数量增加 10 倍产生的负面影响还大。
这是一个宽泛的比较,但它反映了文档的数量与用户的数量一样,都会影响性能。它们都对时间和资源产生负面影响。
下面这些因素对性能的影响不是很大:
注意:用于测试的文档的大小不会对平均响应时间产生很大的影响,但得出的结果有很大差别。这种影响不是很明显,主要是测试中没有出现并发的情况。根据这个结果,通过测试并发性而不是数据库的大小,可以更精确地度量大型文档对性能的影响。
在数据库中包含 500,000 个以上的文档(每个文档不超过 250 KB)的情况下,重新运行这些测试。这些结果将添加到之前的测试使用的数据库的 All Documents 视图,但不添加到 Inbox 视图。这些测试结果表明,性能的差别不是很大。根据该结果,如果用户操作是 “正常的”(即测试脚本中的操作),数据库中的文档的大小和数量对性能的影响不是很明显,前提是 NIF 结构的大小保持不变。
![]() ![]() |
![]() |
采用下面的配置,看看它们对大型收件箱的影响有多大:
结果显示影响是呈指数级增长的;即当文档的数量达到 80,000 时,响应时间会呈指数级增长。
我们的结果表明,尽管总体响应时间增加并且 OPEN_COLLECTION 性能下降了,但 UPDATE_NOTE 时间有略微的改进。
事实上,效率确实得到了提升,即 OPEN_COLLECTION 时间减少,而 UPDATE_NOTE 时间基本保持不变。
这个配置有细微的性能提升;不过,将该值设置为默认值的 4 倍时,尚未发现有任何负面影响。
结果表明 OPEN_COLLECTION 性能得到显著提升,并且预读取值越高性能改善越大,尽管这可能会增加 UPDATE_NOTE 时间。UPDATE_NOTE 操作确实因此而延迟一些,但有趣的是,这个模式不会随着预读取值的增加而延迟得更多。
总体影响基本上是好的,但要注意,该测试条件不适用于并发事务很多的情况。低并发性的测试场景能够获得一定的性能提升,这是由事务日志的本质决定的。
有趣的是,3 次独立运行的结果表明,只有 NIF 操作时间有细微的提升(低于 5 %)。因此,Lotus Domino 能够处理少量异常使用,同时不给其他用户造成明显的影响。
结果表明性能得到有限的提升,可能是因为测试中并发事务不多。在测试运行期间,实际使用的缓冲池不超过 1 GB,尽管服务器可以使用的大小远远超过这个数值。测试结果证明了缓冲池在这里影响不大,但对于存在大量并发事务的环境是有影响的。
![]() ![]() |
![]() |
图 3 演示了各个配置测试的结果。
这些数据表明,可以从以下方面获得巨大的性能提升:
这是一个有趣的结果,将它与通过调节 j2_nPagesPerWriteBehindCluster 增加 I/O 随机性进行比较时,尤其如此。我们发现 UPDATE_NOTE 事务的性能有细微的改进,但 UPDATE_COLLECTION 操作的性能更差。
得出的明显结论就是,与正常的系统相比,具有更大视图和文件夹的系统具有不同的 I/O 性能,因此通过调优实现更加序列化的 I/O 可以大大提高性能。另一方面,对于文档、视图和文件夹比较小的系统,可以通过调优实现更随机的 I/O 来提升性能。(注意,这个系统的页大小为 4 K,因此一个 8 页的预读取为 32 K)。
尽管如此,增加缓冲池还是有一些好处的。1024 MB 的缓冲池和 1536 MB 的缓冲池产生的性能区别不是很大,因为并发事务少,所以增加的缓冲池没有派上用场。
根据以前的文档和测试,我们了解到当缓冲池超过 1024 MB 时性能就会下降。(参见附录更多地了解具有更大并发性的缓冲池测试)。
以前的文档表明事务日志需要一些开销,因此使用它会影响性能。但对于数据库大小比并发事务的数量更重要的压力测试,事务日志则对性能有正面的影响。
这些结论更加证实了大型文档对性能的影响与大量事务对性能的影响是非常不同的。因此,任何调优和针对每种情况的配置都必须是合适的。
![]() ![]() |
![]() |
一个不常用并且较新的特性是 RAM 磁盘,它允许使用物理 RAM 存储文件系统。当然,它不是持久化的,但它为任何临时的行为提供快速的 I/O。
我们测试的其他方面包括 Lotus Domino Directory 的存储(实验性很强)、事务日志存储和 view_rebuild_directory Notes.ini 参数的使用。
在测试时,这些方面都不能显著改善性能。其中的一些原因包括:
例如,在压力测试期间,需要有限制地重新构建视图。尽管这在生产环境中很常见,但对于一般的测试,重构视图则是不常见的。
当 view_rebuild_dir 参数指向 RAM 磁盘时,对重构时间的测试表明性能得到了显著改善。图 4 比较了大小为 4 GB 的数据库的重构时间。
至此,我们得出的惟一结论就是 RAM 磁盘对视图重构的影响非常大。需要人为地创建视图重构条件,以进行观察。尽管常规生产环境中需要重构视图,但一般的测试负载不需要它。
![]() ![]() |
![]() |
限制因素主要是文件夹的结构本身会限制收件箱的大小。由于这个原因,测试所用的收件箱最多只能包含 80,000 个文档。
但是,在常规的生产环境中,有些用户可能会使用服务器上的视图或应用程序。我们知道 Lotus Domino 能够很好地处理这种类型的负载,但不同的配置会造成性能区别吗?图 5 显示了不同功能的响应时间的差别,其中服务器带有在视图中包含 400,000 个文档的数据库。
奇怪的是,性能最好的结果来自于在 RAM 中使用事务记录(见图 5 中的黄线)。这个结果在预料之外,因为在使用 80,000 个文档的测试中,使用事务日志只产生很小的影响;再者,对于已测试的大型数据库和视图,使用事务日志产生的影响是负面的。
然而,通过在快速的独立设备(在本例中是一个基于 RAM 的文件系统)中使用日志,我们看到了显著的性能改善。您甚至会怀疑即使事务数量很少,使用大型视图时事务日志设备也将成为性能的瓶颈。
过去的文档表明需要使用最快的日志磁盘,所以我们使用 RAM 文件系统重新运行测试,看看结果是否有差别。结果表明性能的差别不大,很可能是因为并发性水平很低,日志磁盘没有成为瓶颈。
还需要注意的是,对 view_rebuild_dir Notes.ini 参数使用 RAM 磁盘,总体性能得到提升。
从这组结果可以得出的结论是:
对于网络压缩统计数据,我们使用 FTP 运行该测试以进行控制,确定数据传输如何影响网络。在样例测试中,我们发现最大速度可以达到 10 MB/秒。由于 Lotus Domino 活动是非线性的、间断的,我们获得的总吞吐量很可能比实际小。
不过,我们最关心的是平均读取时间。在我们的基础测试中平均读取时间为 6.3 MB/秒,而读操作的速度为 4.3 MB/秒左右。这些数据表明网络成为了测试的瓶颈。
上面的测试似乎表明压缩虽然在一定程度上改变了行为,但它对响应时间的影响不是很明显。所以,我们认为网络带宽不是测试的主要影响因素。
此外,这些测试的并发性比前面拥有 80,000 个文档的测试的并发性小。为了测试文档数量很大时产生的影响,我们需要在数据库大小不变的情况下进一步牺牲并发性。对于任何可调优的、没有产生预期性能影响的配置,一定要考虑该限制。
![]() ![]() |
![]()
|
为了进一步研究该领域,可以考虑测试其他配置。例如,进一步研究写 I/O 模式和网络限制,并且采用更大的数据库并提高并发性,这些只是相关想法的其中一小部分。尽管本文得出的结果并不权威,但关键要意识到大型数据库的问题非常复杂。它们的行为与传统的数据库性能设想不一样,因此也要以不同的方式处理大型数据库服务器的管理和症状。
总结一下我们的测试结果:
不过需要注意的是,正常的测试负载不包含需要耗费大量资源的数据库活动,并且不考虑特定视图的大小。例如,视图重构和维护操作需要使用额外的资源来完成相同的任务。尽管数据库的总大小不是影响性能的最重要指标,但它仍具有一定的影响。
![]() ![]() |
![]() |
下图演示当小型数据库的并发性上升时,缓冲池的大小产生的影响。注意,1000 位用户并不意味着并发性更多,它仅表示队列请求更多。下面的测试中,包含 500 位用户的测试实现了更多的并发事务。
从这些图可以看到,当并发性程度很高时,管理缓冲池的大小能够获得显著的性能提升。将这个结果与使用大型数据库的测试进行比较,后者获得的性能提升很细微。事实上,在大型数据库测试期间,实际分配的缓冲池从来不超过 1 GB。这个结果演示了并发事务对缓冲池的影响,以及缓冲池的大小如何影响服务器的性能。
尽管在大型数据库测试中缓冲池从不超过 1 GB,但在并发性程度很高的小型数据库中,缓冲池的容量得到了充分的利用。因此在这种情况中,测试结果得出的性能提升比较显著。不过需要注意,当缓冲池的大小超过 1024 MB 时,就会对性能产生负面影响。
过去的测试和总体经验表明,缓冲池存在一个最佳的大小;如果超过这个大小,缓冲池占用的开销将大于它带来的好处。但不存在一个确凿通用的数据,因为缓冲池的最佳大小随不同的负载类型变化,但根据经验,当缓冲池大于 1 GB 时往往不是什么好事。
最后,OPEN_COLLECTION 时间的改善在比例方面要远远高于用户数量的减少。由这个结果可知,当磁盘的负载较小时,缓冲池的效率就越高。原因之一就是缓冲池管理指向磁盘的吞吐量;不过,当磁盘成为瓶颈时,通过配置缓冲池获得的额外收益就被抵消了。
自由广告区 |
分类导航 |
邮件新闻资讯: IT业界 | 邮件服务器 | 邮件趣闻 | 移动电邮 电子邮箱 | 反垃圾邮件|邮件客户端|网络安全 行业数据 | 邮件人物 | 网站公告 | 行业法规 网络技术: 邮件原理 | 网络协议 | 网络管理 | 传输介质 线路接入 | 路由接口 | 邮件存储 | 华为3Com CISCO技术 | 网络与服务器硬件 操作系统: Windows 9X | Linux&Uinx | Windows NT Windows Vista | FreeBSD | 其它操作系统 邮件服务器: 程序与开发 | Exchange | Qmail | Postfix Sendmail | MDaemon | Domino | Foxmail KerioMail | JavaMail | Winwebmail |James Merak&VisNetic | CMailServer | WinMail 金笛邮件系统 | 其它 | 反垃圾邮件: 综述| 客户端反垃圾邮件|服务器端反垃圾邮件 邮件客户端软件: Outlook | Foxmail | DreamMail| KooMail The bat | 雷鸟 | Eudora |Becky! |Pegasus IncrediMail |其它 电子邮箱: 个人邮箱 | 企业邮箱 |Gmail 移动电子邮件:服务器 | 客户端 | 技术前沿 邮件网络安全: 软件漏洞 | 安全知识 | 病毒公告 |防火墙 攻防技术 | 病毒查杀| ISA | 数字签名 邮件营销: Email营销 | 网络营销 | 营销技巧 |营销案例 邮件人才:招聘 | 职场 | 培训 | 指南 | 职场 解决方案: 邮件系统|反垃圾邮件 |安全 |移动电邮 |招标 产品评测: 邮件系统 |反垃圾邮件 |邮箱 |安全 |客户端 |