apache / apache/hugegraph

[Bug] gremlin-sql缓存占用大量内存导致系统卡顿

Open
#2,402 2 comments 0 reactions 0 assignees View on GitHub
bug gremlin rocksdb
Dominant language
Java
Stars
3.2k
Forks
636
Avg merge
3d 11h
Merged PRs (30d)
14

Description

### Bug Type (问题类型)

performance (性能下降)

### Before submit

- [X] 我已经确认现有的 [Issues](https://github.com/apache/hugegraph/issues) 与 [FAQ](https://hugegraph.apache.org/docs/guides/faq/) 中没有相同 / 重复问题 (I have confirmed and searched that there are no similar problems in the historical issue and documents)

### Environment (环境信息)

- Server Version: 1.0.0 (Apache Release Version)
- Backend: RocksDB x nodes, HDD or SSD
- OS: xx CPUs, xx G RAM, Ubuntu 2x.x / CentOS 7.x
- Data Size: xx vertices, xx edges

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

在最近一次对数据库的大批量删除操作中,发现了这个问题
使用get请求调用gremlin-sql:g_rocksdb.traversal().V('vertex_id1','vertex_id2','vertex_id3',...).drop()删除了2000w数据后,系统变得十分卡顿。
检查gc日志发现有大量的Allocation Stall
![image](https://github.com/apache/incubator-hugegraph/assets/39112278/b5f98d21-aef2-4c03-ad8e-3cb2746fc49e)
使用mat分析heap-dump发现有大量的Class对象占用了内存
image
看起来GremlinGroovyClassLoader在管理gremlin-sql的脚本类上边没有设计好缓存的边界
![image](https://github.com/apache/incubator-hugegraph/assets/39112278/57a41e52-406c-4aec-9a58-1892a5fcc092)
感觉有必要设计一个机制及时清理过期的缓存内容

### 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.