[Bug] gremlin-sql缓存占用大量内存导致系统卡顿
- 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

使用mat分析heap-dump发现有大量的Class对象占用了内存
看起来GremlinGroovyClassLoader在管理gremlin-sql的脚本类上边没有设计好缓存的边界

感觉有必要设计一个机制及时清理过期的缓存内容
### Vertex/Edge example (问题点 / 边数据举例)
_No response_
### Schema [VertexLabel, EdgeLabel, IndexLabel] (元数据结构)
_No response_
Contributor guide
Assessment
This issue has not been assessed yet.