apache / apache/iotdb

the memory in the old generation isn't GC in time, with code sessionPool.showPathsTemplateSetOn

Đang mở
#14,407 1 bình luận 0 reaction 0 người được giao Xem trên GitHub
Ngôn ngữ chính
Java
Star
6.4k
Fork
1.2k
Merge trung bình
1 ngày 23 giờ
Pull request đã merge (30 ngày)
115

Mô tả

When run the code below, the memory in the old generation isn't GC in time, which eventually leads to the data node crashing.

Version
version: 1.3.2

### log :
A fatal error has been detected by the Java Runtime Environment:
Internal Error (debug.cpp:362), pid=32562, tid=88579
fatal error: OutOfMemory encountered: Java heap space

JRE version: OpenJDK Runtime Environment Corretto-17.0.11.9.1 (17.0.11+9) (build 17.0.11+9-LTS)
Java VM: OpenJDK 64-Bit Server VM Corretto-17.0.11.9.1 (17.0.11+9-LTS, mixed mode, sharing, tiered, compressed oops, compressed class ptrs, g1 gc, bsd-aarch64)

--------------- S U M M A R Y ------------

Command Line: --add-opens=java.base/java.util.concurrent=ALL-UNNAMED --add-opens=java.base/java.lang=ALL-UNNAMED --add-opens=java.base/java.util=ALL-UNNAMED --add-opens=java.base/java.nio=ALL-UNNAMED --add-opens=java.base/java.io=ALL-UNNAMED --add-opens=java.base/java.net=ALL-UNNAMED -Dlogback.configurationFile=./sbin/../conf/logback-datanode.xml -DIOTDB_HOME=./sbin/.. -DIOTDB_DATA_HOME=./sbin/.. -DTSFILE_HOME=./sbin/.. -DIOTDB_CONF=./sbin/../conf -DTSFILE_CONF=./sbin/../conf -Dname=iotdb\.IoTDB -DIOTDB_LOG_DIR=./sbin/../logs -DOFF_HEAP_MEMORY=1232M -Diotdb.jmx.local=true -Xms4912M -Xmx4912M -XX:MaxDirectMemorySize=1232M -Djdk.nio.maxCachedBufferSize=1291845 -XX:+CrashOnOutOfMemoryError -XX:+UseAdaptiveSizePolicy -Xss512k -XX:SafepointTimeoutDelay=1000 -XX:+SafepointTimeout org.apache.iotdb.db.service.DataNode -s

Host: "Mac14,7" arm64, 8 cores, 16G, Darwin 23.4.0, macOS 14.4 (23E214)
Time: Thu Dec 12 22:29:33 2024 CST elapsed time: 33.258095 seconds (0d 0h 0m 33s)

### code:
```
public class SessionPoolDemo {

private static SessionPool sessionPool;
private static void constructCustomSessionPool() {
sessionPool = new SessionPool.Builder()
.host("127.0.0.1")
.port(6667)
.user("root")
.password("root")
.build();
}

public static void main(String[] args) throws Exception {
constructCustomSessionPool();

for (int i = 0; i < 1000; i++) { // or 5000
List locationTemplate = sessionPool.showPathsTemplateSetOn("locationTemplate");
System.out.println(locationTemplate.size());
}
}
}
```

### GC:
gc

Hướng dẫn đóng góp

Mở hướng dẫn đóng góp

Hướng nghiên cứu

Bắt đầu với lệnh gọi SessionPool.showPathsTemplateSetOn được sử dụng trong SessionPoolDemo và tái hiện sự cố trên IoTDB 1.3.2 bằng các thiết lập JVM và bằng chứng GC được cung cấp. Theo dõi việc cấp phát và lưu giữ qua các lần gọi lặp lại; được xem là hoàn tất khi vòng lặp không còn gây tăng old generation dẫn đến lỗi Java heap-space.

Do mô hình lập chỉ mục viết ra từ nội dung của issue.

Đánh giá

Công nghệ
java
Lĩnh vực
databases
Loại issue
Lỗi
Độ khó
4/5
Thời gian dự kiến
3-5 ngày
Mức độ hoạt động
Đình trệ
Độ rõ ràng
Khá rõ ràng
Mức phù hợp với người mới
35/100

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.