今天测试rocketMQ5.0,发现不能正常运行,始终提示出错,JDK版本17,操作系统Windows11。虚拟机参数修改如下:
set "JAVA_OPT=%JAVA_OPT% -server -Xms256m -Xmx512m"
set "JAVA_OPT=%JAVA_OPT% -XX:+UseG1GC -XX:G1HeapRegionSize=16m -XX:G1ReservePercent=25 -XX:InitiatingHeapOccupancyPercent=30 -XX:SoftRefLRUPolicyMSPerMB=0 -XX:SurvivorRatio=8"
set "JAVA_OPT=%JAVA_OPT% -verbose:gc -Xlog:gc:%USERPROFILE%\mq_gc.log -Xlog:gc*"
set "JAVA_OPT=%JAVA_OPT% -XX:-OmitStackTraceInFastThrow"
set "JAVA_OPT=%JAVA_OPT% -XX:+AlwaysPreTouch"
set "JAVA_OPT=%JAVA_OPT% -XX:MaxDirectMemorySize=512m"
set "JAVA_OPT=%JAVA_OPT% -XX:-UseLargePages"
set "JAVA_OPT=%JAVA_OPT% -Drocketmq.client.logUseSlf4j=true"
set "JAVA_OPT=%JAVA_OPT% -cp %CLASSPATH%"
"%JAVA%" %JAVA_OPT% %*
运行参数如下:
start mqbroker.cmd -n localhost:9876 autoCreateTopicEnable=true
运行结果如下:
[0.026s][info][gc] Using G1
[0.230s][info][gc,init] Version: 17.0.3.1+2-LTS-6 (release)
[0.230s][info][gc,init] CPUs: 8 total, 8 available
[0.230s][info][gc,init] Memory: 7103M
[0.230s][info][gc,init] Large Page Support: Disabled
[0.230s][info][gc,init] NUMA Support: Disabled
[0.231s][info][gc,init] Compressed Oops: Enabled (32-bit)
[0.231s][info][gc,init] Heap Region Size: 16M
[0.231s][info][gc,init] Heap Min Capacity: 256M
[0.231s][info][gc,init] Heap Initial Capacity: 256M
[0.231s][info][gc,init] Heap Max Capacity: 512M
[0.232s][info][gc,init] Pre-touch: Enabled
[0.232s][info][gc,init] Parallel Workers: 8
[0.232s][info][gc,init] Concurrent Workers: 2
[0.233s][info][gc,init] Concurrent Refinement Workers: 8
[0.233s][info][gc,init] Periodic GC: Disabled
[0.235s][info][gc,metaspace] CDS archive(s) mapped at: [0x0000000800000000-0x0000000800bc0000-0x0000000800bc0000), size 12320768, SharedBaseAddress: 0x0000000800000000, ArchiveRelocationMode: 0.
[0.235s][info][gc,metaspace] Compressed class space mapped at: 0x0000000800c00000-0x0000000840c00000, reserved size: 1073741824
[0.236s][info][gc,metaspace] Narrow klass base: 0x0000000800000000, Narrow klass shift: 0, Narrow klass range: 0x100000000
[0.856s][info][gc,start ] GC(0) Pause Young (Normal) (G1 Evacuation Pause)
[0.857s][info][gc,task ] GC(0) Using 6 workers of 8 for evacuation
[0.860s][info][gc,phases ] GC(0) Pre Evacuate Collection Set: 0.0ms
[0.861s][info][gc,phases ] GC(0) Merge Heap Roots: 0.0ms
[0.861s][info][gc,phases ] GC(0) Evacuate Collection Set: 2.6ms
[0.861s][info][gc,phases ] GC(0) Post Evacuate Collection Set: 0.6ms
[0.861s][info][gc,phases ] GC(0) Other: 0.8ms
[0.861s][info][gc,heap ] GC(0) Eden regions: 1->0(1)
[0.861s][info][gc,heap ] GC(0) Survivor regions: 0->1(1)
[0.861s][info][gc,heap ] GC(0) Old regions: 0->0
[0.862s][info][gc,heap ] GC(0) Archive regions: 0->0
[0.862s][info][gc,heap ] GC(0) Humongous regions: 0->0
[0.862s][info][gc,metaspace] GC(0) Metaspace: 4690K(4864K)->4690K(4864K) NonClass: 4182K(4288K)->4182K(4288K) Class: 508K(576K)->508K(576K)
[0.862s][info][gc ] GC(0) Pause Young (Normal) (G1 Evacuation Pause) 16M->6M(256M) 5.571ms
[0.862s][info][gc,cpu ] GC(0) User=0.00s Sys=0.00s Real=0.00s
[1.282s][info][gc,start ] GC(1) Pause Young (Normal) (G1 Evacuation Pause)
[1.282s][info][gc,task ] GC(1) Using 6 workers of 8 for evacuation
[1.286s][info][gc,phases ] GC(1) Pre Evacuate Collection Set: 0.0ms
[1.287s][info][gc,phases ] GC(1) Merge Heap Roots: 0.0ms
[1.287s][info][gc,phases ] GC(1) Evacuate Collection Set: 3.5ms
[1.287s][info][gc,phases ] GC(1) Post Evacuate Collection Set: 0.7ms
[1.287s][info][gc,phases ] GC(1) Other: 0.5ms
[1.287s][info][gc,heap ] GC(1) Eden regions: 1->0(1)
[1.287s][info][gc,heap ] GC(1) Survivor regions: 1->1(1)
[1.287s][info][gc,heap ] GC(1) Old regions: 0->0
[1.287s][info][gc,heap ] GC(1) Archive regions: 0->0
[1.288s][info][gc,heap ] GC(1) Humongous regions: 0->0
[1.288s][info][gc,metaspace] GC(1) Metaspace: 9656K(9856K)->9656K(9856K) NonClass: 8582K(8704K)->8582K(8704K) Class: 1073K(1152K)->1073K(1152K)
[1.288s][info][gc ] GC(1) Pause Young (Normal) (G1 Evacuation Pause) 22M->8M(256M) 6.226ms
[1.288s][info][gc,cpu ] GC(1) User=0.02s Sys=0.00s Real=0.02s
java.lang.IllegalAccessError: class org.apache.rocketmq.common.UtilAll (in unnamed module @0x4944252c) cannot access class sun.nio.ch.DirectBuffer (in module java.base) because module java.base does not export sun.nio.ch to unnamed module @0x4944252c
at org.apache.rocketmq.common.UtilAll.viewed(UtilAll.java:720)
at org.apache.rocketmq.common.UtilAll.cleanBuffer(UtilAll.java:684)
at org.apache.rocketmq.store.logfile.DefaultMappedFile.cleanup(DefaultMappedFile.java:470)
at org.apache.rocketmq.store.ReferenceResource.release(ReferenceResource.java:63)
at org.apache.rocketmq.store.ReferenceResource.shutdown(ReferenceResource.java:47)
at org.apache.rocketmq.store.logfile.DefaultMappedFile.destroy(DefaultMappedFile.java:481)
at org.apache.rocketmq.store.index.IndexFile.destroy(IndexFile.java:97)
at org.apache.rocketmq.store.index.IndexService.load(IndexService.java:72)
at org.apache.rocketmq.store.DefaultMessageStore.load(DefaultMessageStore.java:287)
at org.apache.rocketmq.broker.BrokerController.initialize(BrokerController.java:754)
at org.apache.rocketmq.broker.BrokerStartup.createBrokerController(BrokerStartup.java:224)
at org.apache.rocketmq.broker.BrokerStartup.main(BrokerStartup.java:58)
[1.498s][info][gc,heap,exit] Heap
[1.498s][info][gc,heap,exit] garbage-first heap total 262144K, used 15196K [0x00000000e0000000, 0x0000000100000000)
[1.498s][info][gc,heap,exit] region size 16384K, 2 young (32768K), 1 survivors (16384K)
[1.498s][info][gc,heap,exit] Metaspace used 11815K, committed 11968K, reserved 1064960K
[1.498s][info][gc,heap,exit] class space used 1261K, committed 1344K, reserved 1048576K
修改前虚拟机参数
set "JAVA_OPT=%JAVA_OPT% -server -Xms2g -Xmx2g"
set "JAVA_OPT=%JAVA_OPT% -XX:+UseG1GC -XX:G1HeapRegionSize=16m -XX:G1ReservePercent=25 -XX:InitiatingHeapOccupancyPercent=30 -XX:SoftRefLRUPolicyMSPerMB=0 -XX:SurvivorRatio=8"
set "JAVA_OPT=%JAVA_OPT% -verbose:gc -Xloggc:%USERPROFILE%\mq_gc.log -XX:+PrintGCDetails -XX:+PrintGCDateStamps -XX:+PrintGCApplicationStoppedTime -XX:+PrintAdaptiveSizePolicy"
set "JAVA_OPT=%JAVA_OPT% -XX:+UseGCLogFileRotation -XX:NumberOfGCLogFiles=5 -XX:GCLogFileSize=30m"
set "JAVA_OPT=%JAVA_OPT% -XX:-OmitStackTraceInFastThrow"
set "JAVA_OPT=%JAVA_OPT% -XX:+AlwaysPreTouch"
set "JAVA_OPT=%JAVA_OPT% -XX:MaxDirectMemorySize=15g"
set "JAVA_OPT=%JAVA_OPT% -XX:-UseLargePages -XX:-UseBiasedLocking"
set "JAVA_OPT=%JAVA_OPT% -Drocketmq.client.logUseSlf4j=true"
set "JAVA_OPT=%JAVA_OPT% -cp %CLASSPATH%"
"%JAVA%" %JAVA_OPT% %*
将rocketMQ版本更换为4.9.4还是老问题。
请各位大神帮忙解答,非常感谢!
这个可能是由于java9中的模块化功能引起的问题,你可以使用java9以下的版本或者尝试在jvm启动参数中增加如下命令:
--add-exports java.base/jdk.internal.ref=ALL-UNNAMED
基本解决就是这两个操作,
加一下这个命令:
--add-opens=java.base/jdk.internal.ref=ALL-UNNAMED
--add-opens=java.base/sun.nio.ch=ALL-UNNAMED
如果使用IDEA 这样搞
添加
--add-exports java.base/sun.nio.ch=ALL-UNNAMED
如果使用的是VSCode就添加这个:
"vmArgs": "--add-exports java.base/sun.nio.ch=ALL-UNNAMED"