TeslaCN opened a new issue #11305: URL: https://github.com/apache/shardingsphere/issues/11305
## Feature Request Related to #10626 ### Is your feature request related to a problem? https://github.com/apache/shardingsphere/blob/4cc516ef3ccd8d9abcebf9b3de69a4af1f586cf6/shardingsphere-infra/shardingsphere-infra-executor/src/main/java/org/apache/shardingsphere/infra/executor/kernel/model/ExecutionGroupContext.java#L40 The randomUUID is slow even if I used the `/dev/urandom`. `-Djava.security.egd=file:/dev/./urandom` Threads may be blocked in high concurrency scenario.  I measured this methods with JMH and dump stacks. ``` "icu.wwj.jmh.MyBenchmark.measureRandomUUID-jmh-worker-12" #23 daemon prio=5 os_prio=31 tid=0x00007f8ab18b6800 nid=0x9b03 waiting for monitor entry [0x00007000078ae000] java.lang.Thread.State: BLOCKED (on object monitor) at sun.security.provider.SecureRandom.engineNextBytes(SecureRandom.java:215) - waiting to lock <0x00000006c000a9e0> (a sun.security.provider.SecureRandom) at java.security.SecureRandom.nextBytes(SecureRandom.java:478) at java.util.UUID.randomUUID(UUID.java:145) at icu.wwj.jmh.MyBenchmark.measureRandomUUID(MyBenchmark.java:62) at icu.wwj.jmh.generated.MyBenchmark_measureRandomUUID.measureRandomUUID_thrpt_jmhStub(MyBenchmark_measureRandomUUID.java:101) at icu.wwj.jmh.generated.MyBenchmark_measureRandomUUID.measureRandomUUID_Throughput(MyBenchmark_measureRandomUUID.java:70) at sun.reflect.GeneratedMethodAccessor9.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at org.openjdk.jmh.runner.LoopBenchmarkHandler$BenchmarkTask.call(LoopBenchmarkHandler.java:199) at org.openjdk.jmh.runner.LoopBenchmarkHandler$BenchmarkTask.call(LoopBenchmarkHandler.java:181) at java.util.concurrent.FutureTask.run(FutureTask.java:266) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) at java.lang.Thread.run(Thread.java:748) "icu.wwj.jmh.MyBenchmark.measureRandomUUID-jmh-worker-11" #22 daemon prio=5 os_prio=31 tid=0x00007f8ab30db800 nid=0x9c03 waiting for monitor entry [0x00007000077ab000] java.lang.Thread.State: BLOCKED (on object monitor) at sun.security.provider.SecureRandom.engineNextBytes(SecureRandom.java:215) - waiting to lock <0x00000006c000a9e0> (a sun.security.provider.SecureRandom) at java.security.SecureRandom.nextBytes(SecureRandom.java:478) at java.util.UUID.randomUUID(UUID.java:145) at icu.wwj.jmh.MyBenchmark.measureRandomUUID(MyBenchmark.java:62) at icu.wwj.jmh.generated.MyBenchmark_measureRandomUUID.measureRandomUUID_thrpt_jmhStub(MyBenchmark_measureRandomUUID.java:101) at icu.wwj.jmh.generated.MyBenchmark_measureRandomUUID.measureRandomUUID_Throughput(MyBenchmark_measureRandomUUID.java:70) at sun.reflect.GeneratedMethodAccessor9.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at org.openjdk.jmh.runner.LoopBenchmarkHandler$BenchmarkTask.call(LoopBenchmarkHandler.java:199) at org.openjdk.jmh.runner.LoopBenchmarkHandler$BenchmarkTask.call(LoopBenchmarkHandler.java:181) at java.util.concurrent.FutureTask.run(FutureTask.java:266) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) at java.lang.Thread.run(Thread.java:748) "icu.wwj.jmh.MyBenchmark.measureRandomUUID-jmh-worker-10" #21 daemon prio=5 os_prio=31 tid=0x00007f8ab7028800 nid=0x9d03 waiting for monitor entry [0x00007000076a8000] java.lang.Thread.State: BLOCKED (on object monitor) at sun.security.provider.SecureRandom.engineNextBytes(SecureRandom.java:215) - waiting to lock <0x00000006c000a9e0> (a sun.security.provider.SecureRandom) at java.security.SecureRandom.nextBytes(SecureRandom.java:478) at java.util.UUID.randomUUID(UUID.java:145) at icu.wwj.jmh.MyBenchmark.measureRandomUUID(MyBenchmark.java:62) at icu.wwj.jmh.generated.MyBenchmark_measureRandomUUID.measureRandomUUID_thrpt_jmhStub(MyBenchmark_measureRandomUUID.java:101) at icu.wwj.jmh.generated.MyBenchmark_measureRandomUUID.measureRandomUUID_Throughput(MyBenchmark_measureRandomUUID.java:70) at sun.reflect.GeneratedMethodAccessor9.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at org.openjdk.jmh.runner.LoopBenchmarkHandler$BenchmarkTask.call(LoopBenchmarkHandler.java:199) at org.openjdk.jmh.runner.LoopBenchmarkHandler$BenchmarkTask.call(LoopBenchmarkHandler.java:181) at java.util.concurrent.FutureTask.run(FutureTask.java:266) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) at java.lang.Thread.run(Thread.java:748) "icu.wwj.jmh.MyBenchmark.measureRandomUUID-jmh-worker-9" #20 daemon prio=5 os_prio=31 tid=0x00007f8ab30da000 nid=0x9e03 waiting for monitor entry [0x00007000075a5000] java.lang.Thread.State: BLOCKED (on object monitor) at sun.security.provider.SecureRandom.engineNextBytes(SecureRandom.java:215) - locked <0x00000006c000a9e0> (a sun.security.provider.SecureRandom) at java.security.SecureRandom.nextBytes(SecureRandom.java:478) at java.util.UUID.randomUUID(UUID.java:145) at icu.wwj.jmh.MyBenchmark.measureRandomUUID(MyBenchmark.java:62) at icu.wwj.jmh.generated.MyBenchmark_measureRandomUUID.measureRandomUUID_thrpt_jmhStub(MyBenchmark_measureRandomUUID.java:101) at icu.wwj.jmh.generated.MyBenchmark_measureRandomUUID.measureRandomUUID_Throughput(MyBenchmark_measureRandomUUID.java:70) at sun.reflect.GeneratedMethodAccessor9.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at org.openjdk.jmh.runner.LoopBenchmarkHandler$BenchmarkTask.call(LoopBenchmarkHandler.java:199) at org.openjdk.jmh.runner.LoopBenchmarkHandler$BenchmarkTask.call(LoopBenchmarkHandler.java:181) at java.util.concurrent.FutureTask.run(FutureTask.java:266) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) at java.lang.Thread.run(Thread.java:748) "icu.wwj.jmh.MyBenchmark.measureRandomUUID-jmh-worker-8" #19 daemon prio=5 os_prio=31 tid=0x00007f8ab6060000 nid=0x9f03 waiting for monitor entry [0x00007000074a2000] java.lang.Thread.State: BLOCKED (on object monitor) at sun.security.provider.SecureRandom.engineNextBytes(SecureRandom.java:215) - waiting to lock <0x00000006c000a9e0> (a sun.security.provider.SecureRandom) at java.security.SecureRandom.nextBytes(SecureRandom.java:478) at java.util.UUID.randomUUID(UUID.java:145) at icu.wwj.jmh.MyBenchmark.measureRandomUUID(MyBenchmark.java:62) at icu.wwj.jmh.generated.MyBenchmark_measureRandomUUID.measureRandomUUID_thrpt_jmhStub(MyBenchmark_measureRandomUUID.java:101) at icu.wwj.jmh.generated.MyBenchmark_measureRandomUUID.measureRandomUUID_Throughput(MyBenchmark_measureRandomUUID.java:70) at sun.reflect.GeneratedMethodAccessor9.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at org.openjdk.jmh.runner.LoopBenchmarkHandler$BenchmarkTask.call(LoopBenchmarkHandler.java:199) at org.openjdk.jmh.runner.LoopBenchmarkHandler$BenchmarkTask.call(LoopBenchmarkHandler.java:181) at java.util.concurrent.FutureTask.run(FutureTask.java:266) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) at java.lang.Thread.run(Thread.java:748) "icu.wwj.jmh.MyBenchmark.measureRandomUUID-jmh-worker-7" #18 daemon prio=5 os_prio=31 tid=0x00007f8ab30d9800 nid=0x5d03 waiting for monitor entry [0x000070000739f000] java.lang.Thread.State: BLOCKED (on object monitor) at sun.security.provider.SecureRandom.engineNextBytes(SecureRandom.java:215) - waiting to lock <0x00000006c000a9e0> (a sun.security.provider.SecureRandom) at java.security.SecureRandom.nextBytes(SecureRandom.java:478) at java.util.UUID.randomUUID(UUID.java:145) at icu.wwj.jmh.MyBenchmark.measureRandomUUID(MyBenchmark.java:62) at icu.wwj.jmh.generated.MyBenchmark_measureRandomUUID.measureRandomUUID_thrpt_jmhStub(MyBenchmark_measureRandomUUID.java:101) at icu.wwj.jmh.generated.MyBenchmark_measureRandomUUID.measureRandomUUID_Throughput(MyBenchmark_measureRandomUUID.java:70) at sun.reflect.GeneratedMethodAccessor9.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at org.openjdk.jmh.runner.LoopBenchmarkHandler$BenchmarkTask.call(LoopBenchmarkHandler.java:199) at org.openjdk.jmh.runner.LoopBenchmarkHandler$BenchmarkTask.call(LoopBenchmarkHandler.java:181) at java.util.concurrent.FutureTask.run(FutureTask.java:266) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) at java.lang.Thread.run(Thread.java:748) "icu.wwj.jmh.MyBenchmark.measureRandomUUID-jmh-worker-6" #17 daemon prio=5 os_prio=31 tid=0x00007f8ab18b5800 nid=0xa103 waiting for monitor entry [0x000070000729c000] java.lang.Thread.State: BLOCKED (on object monitor) at sun.security.provider.SecureRandom.engineNextBytes(SecureRandom.java:215) - waiting to lock <0x00000006c000a9e0> (a sun.security.provider.SecureRandom) at java.security.SecureRandom.nextBytes(SecureRandom.java:478) at java.util.UUID.randomUUID(UUID.java:145) at icu.wwj.jmh.MyBenchmark.measureRandomUUID(MyBenchmark.java:62) at icu.wwj.jmh.generated.MyBenchmark_measureRandomUUID.measureRandomUUID_thrpt_jmhStub(MyBenchmark_measureRandomUUID.java:101) at icu.wwj.jmh.generated.MyBenchmark_measureRandomUUID.measureRandomUUID_Throughput(MyBenchmark_measureRandomUUID.java:70) at sun.reflect.GeneratedMethodAccessor9.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at org.openjdk.jmh.runner.LoopBenchmarkHandler$BenchmarkTask.call(LoopBenchmarkHandler.java:199) at org.openjdk.jmh.runner.LoopBenchmarkHandler$BenchmarkTask.call(LoopBenchmarkHandler.java:181) at java.util.concurrent.FutureTask.run(FutureTask.java:266) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) at java.lang.Thread.run(Thread.java:748) "icu.wwj.jmh.MyBenchmark.measureRandomUUID-jmh-worker-5" #16 daemon prio=5 os_prio=31 tid=0x00007f8ab18b5000 nid=0xa203 waiting for monitor entry [0x0000700007199000] java.lang.Thread.State: BLOCKED (on object monitor) at sun.security.provider.SecureRandom.engineNextBytes(SecureRandom.java:215) - waiting to lock <0x00000006c000a9e0> (a sun.security.provider.SecureRandom) at java.security.SecureRandom.nextBytes(SecureRandom.java:478) at java.util.UUID.randomUUID(UUID.java:145) at icu.wwj.jmh.MyBenchmark.measureRandomUUID(MyBenchmark.java:62) at icu.wwj.jmh.generated.MyBenchmark_measureRandomUUID.measureRandomUUID_thrpt_jmhStub(MyBenchmark_measureRandomUUID.java:101) at icu.wwj.jmh.generated.MyBenchmark_measureRandomUUID.measureRandomUUID_Throughput(MyBenchmark_measureRandomUUID.java:70) at sun.reflect.GeneratedMethodAccessor9.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at org.openjdk.jmh.runner.LoopBenchmarkHandler$BenchmarkTask.call(LoopBenchmarkHandler.java:199) at org.openjdk.jmh.runner.LoopBenchmarkHandler$BenchmarkTask.call(LoopBenchmarkHandler.java:181) at java.util.concurrent.FutureTask.run(FutureTask.java:266) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) at java.lang.Thread.run(Thread.java:748) "icu.wwj.jmh.MyBenchmark.measureRandomUUID-jmh-worker-4" #15 daemon prio=5 os_prio=31 tid=0x00007f8ab18b0800 nid=0x5a03 waiting for monitor entry [0x0000700007096000] java.lang.Thread.State: BLOCKED (on object monitor) at sun.security.provider.SecureRandom.engineNextBytes(SecureRandom.java:215) - waiting to lock <0x00000006c000a9e0> (a sun.security.provider.SecureRandom) at java.security.SecureRandom.nextBytes(SecureRandom.java:478) at java.util.UUID.randomUUID(UUID.java:145) at icu.wwj.jmh.MyBenchmark.measureRandomUUID(MyBenchmark.java:62) at icu.wwj.jmh.generated.MyBenchmark_measureRandomUUID.measureRandomUUID_thrpt_jmhStub(MyBenchmark_measureRandomUUID.java:101) at icu.wwj.jmh.generated.MyBenchmark_measureRandomUUID.measureRandomUUID_Throughput(MyBenchmark_measureRandomUUID.java:70) at sun.reflect.GeneratedMethodAccessor9.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at org.openjdk.jmh.runner.LoopBenchmarkHandler$BenchmarkTask.call(LoopBenchmarkHandler.java:199) at org.openjdk.jmh.runner.LoopBenchmarkHandler$BenchmarkTask.call(LoopBenchmarkHandler.java:181) at java.util.concurrent.FutureTask.run(FutureTask.java:266) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) at java.lang.Thread.run(Thread.java:748) "icu.wwj.jmh.MyBenchmark.measureRandomUUID-jmh-worker-3" #14 daemon prio=5 os_prio=31 tid=0x00007f8ab5b23800 nid=0x5803 waiting for monitor entry [0x0000700006f93000] java.lang.Thread.State: BLOCKED (on object monitor) at sun.security.provider.SecureRandom.engineNextBytes(SecureRandom.java:215) - waiting to lock <0x00000006c000a9e0> (a sun.security.provider.SecureRandom) at java.security.SecureRandom.nextBytes(SecureRandom.java:478) at java.util.UUID.randomUUID(UUID.java:145) at icu.wwj.jmh.MyBenchmark.measureRandomUUID(MyBenchmark.java:62) at icu.wwj.jmh.generated.MyBenchmark_measureRandomUUID.measureRandomUUID_thrpt_jmhStub(MyBenchmark_measureRandomUUID.java:101) at icu.wwj.jmh.generated.MyBenchmark_measureRandomUUID.measureRandomUUID_Throughput(MyBenchmark_measureRandomUUID.java:70) at sun.reflect.GeneratedMethodAccessor9.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at org.openjdk.jmh.runner.LoopBenchmarkHandler$BenchmarkTask.call(LoopBenchmarkHandler.java:199) at org.openjdk.jmh.runner.LoopBenchmarkHandler$BenchmarkTask.call(LoopBenchmarkHandler.java:181) at java.util.concurrent.FutureTask.run(FutureTask.java:266) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) at java.lang.Thread.run(Thread.java:748) "icu.wwj.jmh.MyBenchmark.measureRandomUUID-jmh-worker-2" #13 daemon prio=5 os_prio=31 tid=0x00007f8ab5b22800 nid=0x5703 waiting for monitor entry [0x0000700006e90000] java.lang.Thread.State: BLOCKED (on object monitor) at sun.security.provider.SecureRandom.engineNextBytes(SecureRandom.java:215) - waiting to lock <0x00000006c000a9e0> (a sun.security.provider.SecureRandom) at java.security.SecureRandom.nextBytes(SecureRandom.java:478) at java.util.UUID.randomUUID(UUID.java:145) at icu.wwj.jmh.MyBenchmark.measureRandomUUID(MyBenchmark.java:62) at icu.wwj.jmh.generated.MyBenchmark_measureRandomUUID.measureRandomUUID_thrpt_jmhStub(MyBenchmark_measureRandomUUID.java:101) at icu.wwj.jmh.generated.MyBenchmark_measureRandomUUID.measureRandomUUID_Throughput(MyBenchmark_measureRandomUUID.java:70) at sun.reflect.GeneratedMethodAccessor9.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at org.openjdk.jmh.runner.LoopBenchmarkHandler$BenchmarkTask.call(LoopBenchmarkHandler.java:199) at org.openjdk.jmh.runner.LoopBenchmarkHandler$BenchmarkTask.call(LoopBenchmarkHandler.java:181) at java.util.concurrent.FutureTask.run(FutureTask.java:266) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) at java.lang.Thread.run(Thread.java:748) "icu.wwj.jmh.MyBenchmark.measureRandomUUID-jmh-worker-1" #12 daemon prio=5 os_prio=31 tid=0x00007f8ab5b1b000 nid=0x5603 waiting for monitor entry [0x0000700006d8d000] java.lang.Thread.State: BLOCKED (on object monitor) at sun.security.provider.SecureRandom.engineNextBytes(SecureRandom.java:215) - waiting to lock <0x00000006c000a9e0> (a sun.security.provider.SecureRandom) at java.security.SecureRandom.nextBytes(SecureRandom.java:478) at java.util.UUID.randomUUID(UUID.java:145) at icu.wwj.jmh.MyBenchmark.measureRandomUUID(MyBenchmark.java:62) at icu.wwj.jmh.generated.MyBenchmark_measureRandomUUID.measureRandomUUID_thrpt_jmhStub(MyBenchmark_measureRandomUUID.java:101) at icu.wwj.jmh.generated.MyBenchmark_measureRandomUUID.measureRandomUUID_Throughput(MyBenchmark_measureRandomUUID.java:70) at sun.reflect.GeneratedMethodAccessor9.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at org.openjdk.jmh.runner.LoopBenchmarkHandler$BenchmarkTask.call(LoopBenchmarkHandler.java:199) at org.openjdk.jmh.runner.LoopBenchmarkHandler$BenchmarkTask.call(LoopBenchmarkHandler.java:181) at java.util.concurrent.FutureTask.run(FutureTask.java:266) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) at java.lang.Thread.run(Thread.java:748) ``` ### Describe the feature you would like. -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: [email protected] For queries about this service, please contact Infrastructure at: [email protected]
