【问题标题】:Pgx OutOfMemoryError: maximum off-heap size is configured to not exceed 8,192 MBsPgx OutOfMemoryError:最大堆外大小配置为不超过 8,192 MB
【发布时间】:2023-03-06 06:24:01
【问题描述】:

PGX API of Oracle 有问题。

我加载了一个大图并应用了连续的过滤器,但在计算了一些计算之后我破坏了临时图。

GraphChangeSet<Integer> subGraphChangeSet = 
currentSubGraph.createChangeSet();
    list.forEach(v -> subGraphChangeSet.updateVertex((Integer) v.getId())
            .setProperty("BLOCKED", true));

PgxGraph subGraphForRequest = subGraphChangeSet.build();

// ...

PgxGraph subGraphFiltered = subGraphForRequest
                .filter(new VertexFilter("vertex.BLOCKED == true"));

float edges = (float) subGraphFiltered.getNumEdges();

PgqlResultSet results = subGraphFiltered.queryPgql("SELECT label(e), COUNT(*) " +
                "MATCH () -[e]-> () GROUP BY label(e) ");

for (PgxResult result: results)
    map.put(property, (float) result.getLong(2) / edges);

subGraphFiltered.destroy();
subGraphForRequest.destroy();

但是当我尝试执行查询时,我遇到了 [ERROR] OutOfMemoryError: QUERY_PGQL failed maximum off-heap size is configured to not exceed 8,192 MBs. 异常。

所以我尝试使用 VM OPTS -Xms512m -Xmx4g,但 PGX 仍然忽略这些参数。我什至尝试 -XX:-UseGCOverheadLimit 但什么也没发生。我尝试修改pgx.conf文件以更改max_off_heap_size参数的值,但也没有任何反应。

【问题讨论】:

    标签: oracle java-8 pgx


    【解决方案1】:

    经过更多研究,我在文档中发现我们能够使用系统属性

    系统属性

    此外,任何 PGX 引擎或运行时字段都可以通过 Java 系统属性设置,方法是向运行 PGX 的 JVM 写入 -Dpgx.= 参数。注意:设置系统属性将覆盖任何其他配置。例如,要将最大堆外大小设置为 256GB,无论其他配置如何,请使用

    java -Dpgx.max_off_heap_size=256000 ...

    PGX Doc

    这对我有用。

    【讨论】:

      猜你喜欢
      • 2011-07-18
      • 2018-02-18
      • 2020-01-05
      • 2020-08-10
      • 1970-01-01
      • 1970-01-01
      • 2012-03-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多