JVM 最大堆大小限制
在为应用服务器设置堆大小时,要记住:确保系统有足够的物理空间,以便将所有进程装入物理内存,并满足操作系统需要。如果分配的内存大于系统的物理内存,就会发生分页,从而导致糟糕的性能。
我将堆大小的最小值和最大值设置为相同的值,对于在 IBM JDK 上运行的生产系统来说,这可能不是最佳选择。在我的评测中,系统承受负载的时间很短(大约 3 小时),并且运行的 portlet 的内存需求不大。如果使用内存需求较大的 portlet,或者要持续运行,那么通过将初始堆大小设置为 320 MB 可能会减少堆碎片。
对堆大小进行调优之后,要监视系统,以确保没有发生分页。如前所述,换页会导致糟糕的性能。
如何设置参数:
在 WebSphere Administrative Console 中,选择 Servers -> Application Servers -> WebSphere Portal -> Server Infrastructure: Java and Process Management -> Process Definition -> Java Virtual Machine
可以在下面两个地方更改堆大小:
- Initial Heap Size
- Maximum Heap Size
JVM 堆大内存页
该设置可以与 IBM JVM 一起使用,以使用大内存页分配堆空间。为支持大内存页,AIX 操作系统必须进行配置。使用大内存页可以减少跟踪堆所需的 CPU 开销。通过这样的调优,我的评测吞吐率提高了 10%。
如何设置参数:
- 在 WebSphere Administrative Console 中,选择 Servers -> Application Servers -> WebSphere Portal -> Server Infrastructure: Java and Process Management -> Process Definition -> Java Virtual Machine -> Generic JVM Argument
添加: -Xlp
- 在 WebSphere Administrative Console 中,选择 Servers -> Application Servers -> WebSphere Portal -> Server Infrastructure: Java and Process Management -> Process Definition -> Custom Properties -> New -> EXTSHM=OFF
(注意:当 EXTSHM 开启时,会阻止大内存页的使用。)
- 停止 Portal 服务器
- 配置 AIX,以支持大内存页。我使用以下步骤分配 1856 MB 的 RAM 作为大内存页(16MB)。之所以选择这个大小,是因为这些系统中有 4GB 的物理内存。对于采用不同物理内存大小的系统,这些值应有所调整。
vmo -r -o lgpg_regions=116 -o lgpg_size=16777216
bosboot -a
reboot -q
vmo -p -o v_pinshm=1
chuser capabilities=CAP_BYPASS_RAC_VMM,CAP_PROPAGATE $USER
- 重新启动 Portal Server。要确认是否正在使用大内存页,运行 AIX 命令 vmstat -l 1 5 并查看 “alp” 列,它是当前使用的活动大内存页。如果正在使用大内存页,那么它应该是一个非 0 值。
添加新评论0 条评论