problem
janusgraph 导数据工具,数据量大的时候,一直卡主。调参意义不大。 通过 -XX:-UseGCOverheadLimit -verbose:gc -XX:+PrintGCDetails 并不能看出啥信息。
fix
jmap
[yangzhiyong@d28-235 graph_kg]$ jmap -heap 15294
Attaching to process ID 15294, please wait...
Debugger attached successfully.
Server compiler detected.
JVM version is 25.74-b02
using thread-local object allocation.
Parallel GC with 23 thread(s)
Heap Configuration:
MinHeapFreeRatio = 0
MaxHeapFreeRatio = 100
MaxHeapSize = 32210157568 (30718.0MB)
NewSize = 715653120 (682.5MB)
MaxNewSize = 10736369664 (10239.0MB)
OldSize = 1431830528 (1365.5MB)
NewRatio = 2
SurvivorRatio = 8
MetaspaceSize = 21807104 (20.796875MB)
CompressedClassSpaceSize = 1073741824 (1024.0MB)
MaxMetaspaceSize = 17592186044415 MB
G1HeapRegionSize = 0 (0.0MB)
Heap Usage:
PS Young Generation
Eden Space:
capacity = 5928648704 (5654.0MB)
used = 5928648704 (5654.0MB)
free = 0 (0.0MB)
100.0% used
From Space:
capacity = 2357723136 (2248.5MB)
used = 0 (0.0MB)
free = 2357723136 (2248.5MB)
0.0% used
To Space:
capacity = 2357723136 (2248.5MB)
used = 0 (0.0MB)
free = 2357723136 (2248.5MB)
0.0% used
PS Old Generation
capacity = 21473787904 (20479.0MB)
used = 21473521856 (20478.74627685547MB)
free = 266048 (0.25372314453125MB)
99.99876105696308% used
Exception in thread "main" java.lang.reflect.InvocationTargetException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at sun.tools.jmap.JMap.runTool(JMap.java:201)
at sun.tools.jmap.JMap.main(JMap.java:130)
Caused by: sun.jvm.hotspot.oops.UnknownOopException
at sun.jvm.hotspot.oops.ObjectHeap.newOop(ObjectHeap.java:263)
at sun.jvm.hotspot.memory.StringTable.stringsDo(StringTable.java:72)
at sun.jvm.hotspot.tools.HeapSummary.printInternStringStatistics(HeapSummary.java:299)
at sun.jvm.hotspot.tools.HeapSummary.run(HeapSummary.java:148)
at sun.jvm.hotspot.tools.Tool.startInternal(Tool.java:260)
at sun.jvm.hotspot.tools.Tool.start(Tool.java:223)
at sun.jvm.hotspot.tools.Tool.execute(Tool.java:118)
at sun.jvm.hotspot.tools.HeapSummary.main(HeapSummary.java:49)
... 6 more
[yangzhiyong@d28-235 graph_kg]$
jmap 可以看出: 配置的堆内存是3G左右,Eden Space 和 PS Old Generation 已经用完了,From 和 TO 还没用, 有 UnknownOopException,问题看起来很复杂。
jstack
jstack -F 15294
##
原因: java.lang.OutOfMemoryError: GC overhead limit exceeded
Cassandra 的 sstableloader 有这个问题