Skip to content

[Bug] 1.5.0 mysql backend内存泄漏 #3101

Description

@leshjmail

Bug Type (问题类型)

performance (性能下降)

Before submit

  • 我已经确认现有的 IssuesFAQ 中没有相同 / 重复问题 (I have confirmed and searched that there are no similar problems in the historical issue and documents)

Environment (环境信息)

  • Server Version: 1.5.0 (Apache Release Version)
  • Backend: Mysql
  • OS: CentOS 7.x

Expected & Actual behavior (期望与实际表现)

  • 问题描述:
    1、内存dump中mysql驱动实例呈线性增长趋势
    2、gc回收后占用空间没有下降,直至内存溢出
  • 问题分析
    在ResultSetWrapper中创建和close方法中分别加入日志,发现存在一定比例的ResultSetWrapper没有正常调用关闭方法。
  • 问题解决
    在ResultSetWrapper中加入finalize方法,在回收前判断resultSet和statement有没有正常关闭,未关闭则处理
    加入此处理后问题解决。
    @OverRide
    protected void finalize() {
    try {
    if (this.resultSet != null && !this.resultSet.isClosed()) {
    LOG.warn("resultSet was not closed properly, forcing close via finalize");
    this.resultSet.close();
    }
    } catch (SQLException e) {
    throw new BackendException("Failed to close ResultSet", e);
    } finally {
    try {
    if (this.statement != null && !this.statement.isClosed()) {
    LOG.warn("statement was not closed properly, forcing close via finalize");
    this.statement.close();
    }
    } catch (SQLException e) {
    throw new BackendException("Failed to close Statement", e);
    }
    }
    }

Vertex/Edge example (问题点 / 边数据举例)

Schema [VertexLabel, EdgeLabel, IndexLabel] (元数据结构)

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions