獐:长牙如匕,但依旧是个大写的怂
3679 2025-05-03 09:23:37
我使用了java应用程序的线程转储来研究延迟问题。我看到在timed_waiting状态下有很多GRPC线程。
我是grpc的新手,我想了解以下内容。
-默认工作线程的功能是什么?-缺省执行器线程的功能是什么?IO线程正在等待blockingStub调用。那么,它在等待哪个线程/资源呢?
代码语言:javascript运行复制grpc-default-worker-ELG-3-1
THREAD ID: 330
STATE: RUNNABLE
stackTrace:
java.lang.Thread.State: RUNNABLE
at app//io.grpc.netty.shaded.io.netty.channel.epoll.Native.epollWait0(Native Method)
at app//io.grpc.netty.shaded.io.netty.channel.epoll.Native.epollWait(Native.java:132)
at app//io.grpc.netty.shaded.io.netty.channel.epoll.EpollEventLoop.epollWait(EpollEventLoop.java:286)
at app//io.grpc.netty.shaded.io.netty.channel.epoll.EpollEventLoop.run(EpollEventLoop.java:351)
at app//io.grpc.netty.shaded.io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:989)
at app//io.grpc.netty.shaded.io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74)
at app//io.grpc.netty.shaded.io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)
at java.base@11.0.11/java.lang.Thread.run(Thread.java:829)
Locked ownable synchronizers:
- None代码语言:javascript运行复制grpc-default-executor-76
THREAD ID : 1768
STATE : TIMED_WAITING
stackTrace:
java.lang.Thread.State: TIMED_WAITING
at java.base@11.0.11/jdk.internal.misc.Unsafe.park(Native Method)
- parking to wait for <6af9e3ce> (a java.util.concurrent.SynchronousQueue$TransferStack)
at java.base@11.0.11/java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:234)
at java.base@11.0.11/java.util.concurrent.SynchronousQueue$TransferStack.awaitFulfill(SynchronousQueue.java:462)
at java.base@11.0.11/java.util.concurrent.SynchronousQueue$TransferStack.transfer(SynchronousQueue.java:361)
at java.base@11.0.11/java.util.concurrent.SynchronousQueue.poll(SynchronousQueue.java:937)
at java.base@11.0.11/java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1053)
at java.base@11.0.11/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1114)
at java.base@11.0.11/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
at java.base@11.0.11/java.lang.Thread.run(Thread.java:829)
Locked ownable synchronizers:
- None代码语言:javascript运行复制io-pool-145
THREAD ID : 1683
STATE : WAITING
stackTrace:
java.lang.Thread.State: WAITING
at java.base@11.0.11/jdk.internal.misc.Unsafe.park(Native Method)
- parking to wait for (a io.grpc.stub.ClientCalls$ThreadlessExecutor)
at java.base@11.0.11/java.util.concurrent.locks.LockSupport.park(LockSupport.java:194)
at app//io.grpc.stub.ClientCalls$ThreadlessExecutor.waitAndDrain(ClientCalls.java:731)
at app//io.grpc.stub.ClientCalls.blockingUnaryCall(ClientCalls.java:149)
xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx
xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx
xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx
xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx
xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx
xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx
xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx
xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx
xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx
xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx
at java.base@11.0.11/java.util.concurrent.CompletableFuture$AsyncSupply.run(CompletableFuture.java:1700)
at java.base@11.0.11/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
at java.base@11.0.11/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
at java.base@11.0.11/java.lang.Thread.run(Thread.java:829)
Locked ownable synchronizers:
- Locked <41493122> (a java.util.concurrent.ThreadPoolExecutor$Worker)