级别: 中级 George Demetriou, 性能工程师, Iris
1999 年 8 月 02 日 本文对 Windows NT 上的 Domino Web 服务器的资源利用进行了性能分析。文中的测试展示了更改 HTTP 线程设置对服务器响应时间和资源利用率的影响。
您是否已经将所有 Domino 服务器都设置为 “支持 Web”,但是又想充分利用系统资源?也许您还没有意识到,您可以调整服务器上运行的 HTTP 线程的数量,并提高服务器的响应时间和资源利用率。
在本文中,我们将深入了解 Windows NT 上 Domino Web 服务器资源利用率的性能分析。文中的测试展示了更改 HTTP 线程的设置对服务器性能的影响。我们首先定义什么是 HTTP 线程,然后描述测试方法和测试数据,最后总结测试结果。这可以帮助您决定将来如何设置您的环境。
有关如何针对 Lotus/Iris 实施性能分析的更多信息,或者有关所使用的工具的简介,请阅读 “优化服务器性能:端口加密和缓冲区设置”。要阅读改善服务器性能的更多建议,请参考 “提升服务器性能的十大方法”。
什么是 HTTP
线程?
HTTP 线程是处理传入 HTTP 请求的执行线程。要指定想在 Domino 服务器激活的线程的数量,可以使用 Public Address Book 中 Server 文档的 HTTP 部分的 “Number
of active threads” 字段。默认设置是 40。在 Domino 服务器上初始化 HTTP 服务器任务时,将创建定义的线程,每个线程占用约 20-40Kb 的内存。在更改 Server 文档中的值并重启 HTTP 任务之前,这些线程的数量是固定的。
Domino 服务器在这里充当基于 HTTP 的消息传递服务器,在对它进行性能分析时,我们预期 HTTP 活动线程的设置应该等于特定 Domino 服务器上 Web 用户的数量。例如,如果您预计有 200 个 Web 用户使用 Domino 服务器,您可以假设应该将 HTTP 活动线程设置为 200。但是,正如您从我们的测试结果中看到的,实际情况并非如此。
测试方法和测试数据
为了运行测试场景,我们安装了一个客户端,可以模拟运行新 NotesBench WebMail 工作负载的 Web 浏览器用户,其配置如下:
- CPU:一个 Pentium II
处理器
- 内存:256MB RAM
- 操作系统:Windows NT 4.0
Workstation
- Notes:Release 5(基于 Beta
1)
- NotesBench WebMail 工作负载(可从 NotesBench 发行版 5 获取)
我们安装了一个 Domino 服务器,配置如下:
- CPU:两个 Intel Pentium II/300MHz,512k 二级缓存
- 内存:512MB RAM
- 单个 SCSI 控制器
- 跨 6 个磁盘驱动器创建 3 个硬件阵列
- 硬盘驱动器:
--Logical C:一个 RAID0 7200rpm 驱动器,用于操作系统
--Logical D:一个 RAID0 7200rpm 驱动器,用于页面文件和 Domino
可执行文件
--Logical F:一个 RAID5 7200rpm,带有 4 个驱动器,用于用户邮件文件、日志和邮箱(共 36GB 存储空间,用于 \data 目录)
- 操作系统:Windows NT Server 4.0, Service
Pack 3
- Domino:Release 4.62 for Windows
NT
具体来说,我们想测试改变以下 HTTP 线程设置时的相对影响(用户数量、响应时间、资源利用率):10、25、50、100 和 200。我们将每一种设置应用于
NotesBench WebMail,分别测试用户数为 25、50、100 和 200 的情况。该测试场景比较各种负载情况下的平均用户响应时间、探针响应时间、系统 CPU 利用率、占用的内存和磁盘利用率。我们在稳定状态下每次测试运行约 60 分钟,自举(ramp up)周期为 5 分钟。
我们在所有测试中使用的工作负载都是新的 NotesBench WebMail 工作负载,它在 R5 发布后可用。该工作负载允许每个模拟用户访问他们各自的邮件文件,邮件文件使用 R4.6 Mail -
Combined 模版(mailc46.ntf)通过 HTTP 协议构建。每个用户迭代执行 15 分钟的脚本,该脚本由以下部分组成:
- 准备 10K 的消息并将其发送到三个收件人,这些收件人是从服务器的目录中动态选择的,每 15 分钟选择一次。
- 读取收件箱和前五个收件箱文档,然后删除第一个消息。
所有消息都可以通过同一个 Domino 服务器上的其他模拟 WebMail 用户发送和接受。
此外,WebMail 工作负载需要在客户端上设置以下 NOTES.INI:
- ThreadStagger = 5(秒)
- NormalMessageSize=10000
- NumMessageRecipients=3
ThreadStagger 设置指定每个用户何时开始登录,在本例中,每个用户在 5 秒钟之后开始登录。该设置帮助服务器顺利地完成自举,在自举阶段不存在连接超时。NormalMessageSize 和 NumMessageRecipients 设置指定消息的大小 (10K) 以及 15 分钟的 WebMail 脚本中使用的收件人数量 (3)。
您可以通过侧栏 “HTTP 线程设置测试结果” 了解这些测试的结果。关于我们的结论,请参考下一节 “我们的发现”。
我们的发现
我们发现,HTTP 线程不一定
越多 越好。实际上,根据数据和图形可以看出,如果定义的 HTTP 线程数量高于实际需要的数量,将导致性能递减,内存消耗增加。因此,您应该只定义服务器负载所需的最少 HTTP 线程数量。
针对给定用户负载确定最优 HTTP 线程设置的最佳方法是先运行与用户负载相符的 HTTP 线程设置。然后,在服务器控制台,输入以下内容检查使用的 HTTP 线程的最大数量:
show statistic
domino.threads.active.peak
由于该值指示了使用的 HTTP 线程的最大数量,因此在 Server 文档中更适合使用该值设置 HTTP 线程。
如果您已经安装了 Domino 服务器并且大致了解它将支持的 Web 邮件用户的数量,那么可以将 HTTP 线程的数量设置为 Web 用户数的 10%,这是一个很好的初始值。例如,如果您预期 200 个 Web 邮件用户,那么合适的初始 HTTP 线程的数量为 20。用户运行之后,您可以根据
“domino.threads.active.peak” 统计数据对设置进行 “调优”。如果您经常发现 Peak 值与您定义的值一致,那么应该增加 Server 文档的 HTTP 部分定义的线程的值。
如果对基于 HTTP 的消息传递不使用服务器呢?您同样可以监控
“domino.threads.active.peak” 统计数据以确定启动的线程数是否高于实际所需的数量。通过降低线程数,您可以减少 HTTP 服务器使用的内存数量,从而将节省下的内存用于服务器的其他活动。
参考资料
关于作者  | |  | George Demetriou 于 1997 年从 Eastman Software 转入 Iris 工作。他是一名性能工程师,一直负责 Domino Web 服务器性能测量和评估方面的工作。 |
对本文的评价
|