【问题标题】:Setting heap size for CorbTask为 CorbTask 设置堆大小
【发布时间】:2019-04-05 04:21:54
【问题描述】:

在我的 build.gradle 中,我有一个 CorbTask 类型的任务,我希望在其中通过大量 URI 执行一些进程。在这种情况下,我处理的 URI 略少于 800,000 个。

task updateSharePointMetadata(type: com.marklogic.gradle.task.CorbTask) {
  classpath = configurations.corb
  xccUrl = "xcc://${mlUsername}:${mlPassword}@${mlHost}:${mlStagingPort}"
  urisModule = "corb/selectSharepointMetadata.xqy|ADHOC"
  processModule = "corb/updateBinarySizeInSharePointMetadata.xqy|ADHOC"
  threadCount = 8
  batchSize = 100
  batchUriDelim=','
}

当我运行此任务时...在对 URI 进行排队的过程中,我收到了 OutOfMemoryError,Out of Heap space。当任务运行时......或者至少我之前做过,现在至少它运行......但我仍然看到 Free Memory 警告,因为它排队 uri。

WARNING: free memory: 35 MiB of 394

在 gradle 属性中,我已经有 org.gradle.jvmargs 参数设置来传递 -Xmx 设置,但它似乎没有任何区别。我认为这是因为 CorbTask 扩展了 JavaExec,它是衍生出来的。因此,我查看了可能在 CorbTask 上设置 jvmArgs 属性,但这是不可设置的。

有人有什么想法吗?

【问题讨论】:

  • 你试过了吗? tasks.withType(JavaExec) { jvmArgs = ['-Xms1g', '-Xmx2g'] }
  • 这行得通。谢谢@grtjn

标签: marklogic marklogic-9 ml-gradle marklogic-corb


【解决方案1】:

DISK-QUEUE 选项已针对此类情况添加。

您可以启用 DISK-QUEUE 选项,而不是尝试提高内存设置并希望大量 URI 适合。

  • 您可以配置 DISK-QUEUE-MAX-IN-MEMORY-SIZE,这将限制在内存中排队的 URI 数量。其余的将溢出到临时文件中的磁盘。
  • 您可以使用 DISK-QUEUE-TEMP-DIR 设置文件的生成位置(默认位置是 java.io.tmpdir)

【讨论】:

  • 作为后续行动。我有另一种情况,我启用了 DISK QUEUE,但我的内存仍然不足。它在排队后用完,但是当它开始接收时。信息:配置的 URI 队列最大内存大小:1,000 2019 年 5 月 31 日上午 11:37:23 com.marklogic.developer.corb.Manager logOptions 信息:配置的 URI 队列临时目录:空 2019 年 5 月 31 日 11:37:23 AM com.marklogic.developer.corb.Manager 运行信息:最大堆大小 = 247 MiB 2019 年 5 月 31 日上午 11:37:23 com.marklogic.developer.corb.Manager populateQueue 信息:填充队列
  • URI 值有多大?您是否尝试过设置更小的 DISK-QUEUE-MAX-MEMORY-SIZE?
  • 我们正在查看 200 万个 URI。我尝试了分箱,这是对 1900 万个总 URI 进行分箱。这个箱似乎比平常有更多。
  • 我会试试 DISK-QUEUE-MAX-IN-MEMORY-SIZE。
  • 排队不是问题。我看到正在创建临时文件。但是在所有东西都排队并开始处理之后,这些东西是如何被传递出去的?似乎 240 万个 URI 中有一半被传递,导致内存不足。 INFO:收到 1,200,000/2,403,571:rdf.abbvienet.com/entity/sharepoint/document/…
【解决方案2】:

上面@grtjn 的评论解决了这个问题。

tasks.withType(JavaExec) { jvmArgs = ['-Xms1g', '-Xmx2g'] }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-04-14
    • 2013-02-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-31
    • 2014-03-13
    • 2011-08-16
    相关资源
    最近更新 更多