[Bug] 1.5.0 mysql backend内存泄漏
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 4/5
- Tempo stimato
- 3-5 giorni
- Idoneità per principianti
- 48/100
- Tipo di issue
- Bug
- Chiarezza
- Abbastanza chiara
- Stato di attività
- Tranquilla
- Stack tecnologico
- java, mysql
- Ambito
- database, performance
Direzione di ricerca
Cerca ResultSetWrapper nella codebase Java e verifica come vengono creati, utilizzati e chiusi il relativo resultSet e statement. Riproduci il carico di lavoro del backend MySQL sulla versione 1.5.0 controllando i log o un dump della memoria, quindi verifica che le risorse vengano rilasciate in modo coerente e che la memoria non continui più a crescere fino all’esaurimento.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
Bug Type (问题类型)
performance (性能下降)
Before submit
- 我已经确认现有的 Issues 与 FAQ 中没有相同 / 重复问题 (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] (元数据结构)
- Lingua principale
- Java
- Stelle
- 3.2k
- Fork
- 637
- Merge medio
- 3g 18h
- PR unite (30g)
- 23
Guida per i contributori
Apri la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di apache/hugegraph
-
bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 64/100
-
Difficoltà 4/5 3-5 giorni Idoneità per principianti 48/100
-
Difficoltà 3/5 1-2 giorni Idoneità per principianti 64/100
-
Difficoltà 5/5 Più di una settimana Idoneità per principianti 25/100
-
Difficoltà 5/5 Più di una settimana Idoneità per principianti 28/100
Tutte le issue di apache/hugegraph
Issue simili
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 82/100
infinispan/infinispan#18150 ·
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 84/100
-
untriaged
Difficoltà 2/5 1-3 ore Idoneità per principianti 82/100
opensearch-project/k-NN#3597 ·
-
bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 88/100
-
bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 82/100