apache / apache/hugegraph

[Bug] mysql作为后端存储,存在statement和resultset未关闭的内存泄漏

Open
#1,859 1 comment 0 reactions 0 assignees View on GitHub
bug
Dominant language
Java
Stars
3.2k
Forks
636
Avg merge
3d 11h
Merged PRs (30d)
14

Description

### Bug Type (问题类型)

performence (性能下降)

### Before submit

- [X] 我已经确认现有的 [Issues](https://github.com/hugegraph/hugegraph/issues) 与 [FAQ](https://hugegraph.github.io/hugegraph-doc/guides/faq.html) 中没有相同 / 重复问题

### Environment (环境信息)

- Server Version: v0.11.x
- Backend: RocksDB x nodes, HDD or SSD
- OS: xx CPUs, xx G RAM, Centos 7.x
- Data Size: xx vertices, xx edges

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

![image](https://user-images.githubusercontent.com/29938993/166859354-0f028d7d-d541-48a4-a0b7-772563524d5e.png)
跟踪代码发现如图所示的地方,没有关闭statement和resultset,会造成内存泄漏

另外,目前用MysqlSessions来维护session 连接池,有2个疑问
1. 为什么 `s/g/m` 会分别维护自己的session,key都是线程id,这样就需要分别创建对应的数据库连接,没有公用数据库连接是基于什么考虑的。
2. tomcat 线程池本身有参数设置的,如果有高并发的场景,会创建多于最小线程数的线程来满足请求,然后如果空闲下来,线程数会降低至最小线程数,这种情况下,MysqlSessions中维护的session就没有机会被清除了,是不是也会造成内存泄漏。

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

_No response_

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

_No response_

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.