【问题标题】:Titan 1.0.0 graph cache memory leaksTitan 1.0.0 图形缓存内存泄漏
【发布时间】:2017-01-09 13:44:20
【问题描述】:

我在 Java 8 上运行 TomEE(Tomcat 的一种)服务器,并使用带有 Cassandra 后端和 Elasticsearch 索引的 Titan 1.0.0我的数据库。在我的开发环境中,用户连接很少,一切正常,但在我的生产服务器上,有许多用户连接到许多数据库访问,我们遇到内存泄漏问题,可能是因为 Titan 图形缓存或 Titan 相关的东西。我配置了 4GB 堆大小,经过 10 多个小时的运行,堆上分配的内存增长到最大值(每小时约 300Mb),这导致 GC(垃圾收集器)无法再清理并继续运行导致服务器实例无响应。 使用 VisualVM 我做了一些内存分析,这些是我的截图:
任何建议我们如何解决此问题或找到更详细地调查此问题的方法?在这种情况下,一些 GC 参数可以帮助我们吗?

【问题讨论】:

    标签: memory-leaks garbage-collection java-8 titan apache-tomee


    【解决方案1】:

    我之前在使用 Cassandra 的 Titan 1.0 上看到过这些问题。要检查两件事:

    打开和关闭图表

    您是为每个用户的图表打开不同的事务,还是为每个用户打开不同的图表?即你在做什么:

    (1)

    //User 1 Logs in
    graph = TitanFactory.open(config);
    soStuffWithGraph(graph);
    //User 2 Logs in
    graph = TitanFactory.open(config);
    soStuffWithGraph(graph);
    

    (2)

    graph = TitanFactory.open(config);
    //User 1 Logs in
    soStuffWithGraph(graph);
    //User 2 Logs in
    soStuffWithGraph(graph);
    

    方法 (1) 意味着每个用户都使用自己的图形对象获得与图形的连接。这非常重,并导致更多的内存使用。

    方法(2)意味着每个用户使用相同的连接但不同的事务。我认为这是更可取的。 注意:这是假设用户在不同的线程上。

    长期交易

    这是我遇到的问题,导致您遇到类似的 GC 问题。我只是让交易存活了太久。为了加快查询 Titan 缓存的速度,我认为除非事务关闭,否则它不会清除缓存。所以理想情况下你应该有这样的东西:

    graph = TitanFactory.open(config);
    //User 1 Logs in
    soStuffWithGraph(graph);
    graph.tx().close();
    //User 2 Logs in
    soStuffWithGraph(graph);
    graph.tx().close();
    

    每笔交易在用户完成交易后关闭。

    【讨论】:

    • 我使用的是第二种方法。我有一个与图表的打开连接,并为每个用户请求打开新事务TitanTransaction tt = graph.newTransaction()。每个事务都很短(添加或更新一个或两个顶点或边或从顶点查询数据),最后事务总是在失败的情况下提交tt.commit() 或回滚tt.rollback()(在抛出一些异常之前)跨度>
    • 你是在使用graph.newTransaction(),那么你正在创建multi-threaded transactions,它创建了一个全新的事务处理对象,它也很重并且总是打开的。如果您明确为每个用户创建一个,那么您肯定应该在最后调用tt.close()。否则它将保持打开状态。
    • 来自 Titan documentationjavadoc 我认为 tt.commit()tt.rollback() 将关闭事务,但在每次提交旁边添加 tt.close() 并回滚后它解决了我们的内存泄漏问题。跨度>
    猜你喜欢
    • 1970-01-01
    • 2021-01-27
    • 2015-10-14
    • 1970-01-01
    • 2023-03-18
    • 1970-01-01
    • 1970-01-01
    • 2011-10-22
    • 1970-01-01
    相关资源
    最近更新 更多