3

我试图找到一个明确的答案,即 Domino 8.5.3 FP4 - 64 Bit for Windows 中的 JVM 堆大小的最佳设置是什么。

我知道默认情况下它设置为1024M。一些网站建议建议使用 1G / 1024M - 但这是默认设置,所以它是否尽可能好?

其他网站表示可用 RAM 的 25%。

我的 Domino 服务器有 12GB RAM 可用。目前它的 HTTPJVMMaxHeapSize = 1024M 并且任务管理器告诉我大约 7GB 的 RAM 正在使用中,而 nhttp.exe 正在使用大约 1.1GB。如果可能,我想将此堆增加到 2GB 或 3GB - 这样做会有什么问题吗?

我正在运行 Windows Server 2008 R2 标准版。

4

2 回答 2

4

从 XPages 的角度来说:

1 - 了解工作集和硬件的动态

也就是说,了解应用程序代码、服务器运行时和硬件配置文件在处理给定工作集(即:服务器内的 XPages 应用程序)时正在做什么。应用程序在生命周期执行和内存使用方面是否以非最佳方式编码?应用程序是否使用内存或磁盘持久性进行组件树序列化?服务器是否分配了足够数量的 JVM 内存?硬件是否提供足够的 CPU 和内存?

2 - 配置和监控具有上限负载的工作集

要完全回答 #1 中的一些问题,必须使用 XPages Toolbox 和 Eclipse Memory Analyzer 等工具进行详细的性能和可伸缩性分析。此外,使用 Rational Performance Tester(或其他一些性能测试工具)测试工作集,以模拟测试环境中的真实并发工作负载。这允许您设置一个测试环境,您可以在其中使用 (n) 个使用自动化的并发用户来访问您的应用程序,并收集所有关于健康等的宝贵数据。

3 - 分析配置文件信息以识别工作集中的瓶颈

请记住,您的工作集可以是一个或多个应用程序。每个人都在做不同的事情,并且有不同的负载要求。请具体说明手头的任务 - 您是希望针​​对所有应用程序(针对平均规模)更普遍地调整系统,还是希望针对特定应用程序(针对目标规模)全面优化服务器?

4 - 在适用的情况下优化工作集

在适用的情况下进入并更改 XSP / Java / ServerSide JavaScript 代码 - 使用您对 XPages 请求处理生命周期的了解,并注意在高端负载场景下那些饥饿的 JVM 内存使用者。始终支持磁盘持久性(磁盘存储比 RAM 便宜!)并相应地编写自定义 Java 对象和托管 Bean 以应对序列化和恢复。并在这些场景中在功能和速度之间进行权衡,在这些场景中,高可扩展性最终会消耗 CPU……具有目标功能/操作等的更智能的 UX。

5 - 在适用的情况下扩展硬件

准备好根据工作集的需要增加内核、时钟速度、RAM、磁盘存储 - 分析、监控和优化工作集的循环方法将越来越多地阐明硬件的适用性,因为这个过程进化。

5 - 从 #2 开始重复,直到工作集和硬件执行并扩展到系统的预期要求/负载预期

于 2013-09-10T11:49:39.007 回答
1

我建议将JavaVerboseGC=1带有控制台输出的服务器 notes.ini 参数设置到 IBM_TECHNICAL_SUPPORT 目录中的 console.log 中。一段时间后,获取该日志文件并使用IBM Support AssistantIBM Monitoring and Diagnostic Tools for Java - Garbage Collection and Memory Visualizer (GCMV) 工具

这可以帮助如何解释收集的数据:http ://www-01.ibm.com/support/docview.wss?uid=swg27013824&aid=1 。

如果你得到 OutOfMemoryException,你绝对应该这样做。

堆大小设置得太高会导致更少的 GC 运行,但需要更长的时间 - 服务器将定期“挂起”很短的时间。所以不建议设置太高。

于 2013-09-10T11:02:56.850 回答