【问题标题】:Lotus Domino Agent Manager JVM MemoryLotus Domino 代理管理器 JVM 内存
【发布时间】:2014-07-14 13:34:08
【问题描述】:

我正在运行一个计划代理,它询问文件系统上的特定目录以查找图像文件并在它们超过特定文件大小时更改它们的尺寸。

我正在使用名为 ImgScalr 的 Java 图像库:http://www.thebuzzmedia.com/software/imgscalr-java-image-scaling-library/

我遇到的问题是,在某些图像上,进程因 java.lang.OutOfMemory 错误而失败。它所覆盖的图像比较大,通常在 5MB 到 6MB 之间。

运行它的服务器有 8GB 内存,我认为这没问题。

我的问题是代理管理器 JVM 是否使用与 HTTP 任务相同的内存设置,即 HTTPJVMMaxHeapSize?

我已将该设置增加到 1792MB,但这在图像缩减代理运行时似乎没有影响。请注意,将配置增加到高于该数字的任何值会使 HTTP JVM 在启动时抛出以下错误:HTTP JVM: JVMJ9VM015W 库 j9gc24(2) 的初始化错误:无法实例化堆; 2G 请求)

如果代理管理器不使用与 HTTP JVM 相同的设置,那么它是否有自己的设置,我们可以更改以增加可用内存以停止出现 OutOfMemory 错误?

【问题讨论】:

  • 不,它不共享 HTTP JVM 的设置。代理管理器的等效设置是JavaMaxHeapSize,但您不需要将它设置得那么高。 Domino 服务器需要大量共享内存,而将 JavaMaxHeapSize 设置得太高会在 AMGR 任务中占用太多地址空间,从而抢夺所有其他任务所需的地址空间,以便设置共享内存。如果您正在运行 32 位 Domino,8 GB 的 RAM 对您几乎没有用处,因为每个任务的最大值为 2 GB,并且所有任务的共享内存也必须超出 2 GB。
  • 谢谢理查德,增加这肯定有帮助,现在它似乎只会落在更大的图像上,这更容易管理......
  • 你增加了多少? 128 MB 对于几乎任何东西都应该足够了。默认值为 64 MB。如果您将其提高得更高,那么您将冒着使服务器的其他部分缺乏内存的风险。您的代码对数据库和文档的 Notes/Domino 类有什么作用吗?如果是这样,您是否检查过缺少的 recycle() 调用?

标签: java jvm out-of-memory lotus-domino lotus


【解决方案1】:

我的问题是代理管理器 JVM 是否使用相同的内存 设置为 HTTP 任务,即 HTTPJVMMaxHeapSize?

代理管理器是否与HTTP 任务在同一个Java 进程中运行?如果是这样,那么最可能的答案是肯定的。但是您不必依赖猜测,您可以使用JConsoleJVisualVM 连接到Java 进程(两者都是免费的,并且随JDK 一起提供)- 并自己找出答案。通过这样做,您甚至应该在进程失败时看到遥测数据中的峰值。

注意,将配置增加到高于该数字的任何值都会使 HTTP JVM 在启动时抛出以下错误:HTTP JVM: JVMJ9VM015W 库 j9gc24(2) 的初始化错误:无法实例化 堆; 2G 请求)

您可能正在使用32-bit Java 运行时,它的可寻址内存要少得多。尝试使用-d64 运行(假设您同时拥有 32 位和 64 位版本),或者使用 64 位版本的 Java 下载并替换您的运行时。或者阅读 IBM 页面上的FAQ,特别是上面写着的部分:

问题:Domino 是否作为 64 位应用程序运行?答案:多米诺骨牌 8.0.1 和 8.0.2 作为 64 位应用程序在以下 64 位操作系统(OS

【讨论】:

  • 我不认为在这种情况下安装不同版本的 Java 这么简单。正在使用的 JVM 紧密集成到 Domino 服务器中,因此我怀疑尝试更改它会导致服务器出现问题。相关目录中的 Java -version 返回以下内容:
  • java version "1.6.0" Java(TM) SE Runtime Environment (build pwi3260sr4ifix-20090820_01(SR4+IZ54545+IZ55984+148736+IZ54462+IZ58406)) IBM J9 VM (build 2.4, J2RE 1.6 .0 IBM J9 2.4 Windows Server 2008 x86-32 jvmwi3260 sr4ifx-20090729_39787(启用 JIT,启用 AOT)J9VM - 20090729_039787_lHdSMr JIT - r9_20090213_2028 GC - 20090729_AA_0009083
  • 显示:x86-32 的部分确认您没有使用 64 位 JVM。您怀疑存在什么样的“紧密集成”?您是否可以下载包含 64 位 JVM 的版本?
  • 嗨阿米尔,不,我没有读过,所以感谢链接。这是一个相对较新的客户站点,所以到目前为止我们还没有关于服务器版本的输入。我将使用 64 位版本完成下一次升级,看看这是否也会有所改善。感谢您的帮助。