Grpc threads names on client side. Java-based service.

52 views
Skip to first unread message

sicil...@gmail.com

unread,
Jul 4, 2019, 4:29:19 PM7/4/19
to grpc.io
Hi.

I have a service (webservice soap) sending rpc to a grpc server).

When I look at the thread dump I see thread names like this : "grpc-default-worker-ELG-13-7"

or "grpc-default-executor-1"...

What are these threads ??

example of stack :

```
"grpc-default-executor-1" #972 daemon prio=5 os_prio=0 cpu=3938.33ms elapsed=306.27s tid=0x00007f410804a800 nid=0x431 waiting on condition [0x00007f4049fde000]
java.lang.Thread.State: TIMED_WAITING (parking)
at jdk.internal.misc.Unsafe.park(java...@11.0.3/Native Method)
- parking to wait for <0x00000000ea55fba0> (a java.util.concurrent.SynchronousQueue$TransferStack)
at java.util.concurrent.locks.LockSupport.parkNanos(java...@11.0.3/LockSupport.java:234)
at java.util.concurrent.SynchronousQueue$TransferStack.awaitFulfill(java...@11.0.3/SynchronousQueue.java:462)
at java.util.concurrent.SynchronousQueue$TransferStack.transfer(java...@11.0.3/SynchronousQueue.java:361)
at java.util.concurrent.SynchronousQueue.poll(java...@11.0.3/SynchronousQueue.java:937)
at java.util.concurrent.ThreadPoolExecutor.getTask(java...@11.0.3/ThreadPoolExecutor.java:1053)
at java.util.concurrent.ThreadPoolExecutor.runWorker(java...@11.0.3/ThreadPoolExecutor.java:1114)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(java...@11.0.3/ThreadPoolExecutor.java:628)
at java.lang.Thread.run(java...@11.0.3/Thread.java:834)
```

or

```
"grpc-default-worker-ELG-13-1" #940 daemon prio=5 os_prio=0 cpu=3135.01ms elapsed=345.67s tid=0x00007f40c0039800 nid=0x411 runnable [0x00007f4046cad000]
java.lang.Thread.State: RUNNABLE
at sun.nio.ch.EPoll.wait(java...@11.0.3/Native Method)
at sun.nio.ch.EPollSelectorImpl.doSelect(java...@11.0.3/EPollSelectorImpl.java:120)
at sun.nio.ch.SelectorImpl.lockAndDoSelect(java...@11.0.3/SelectorImpl.java:124)
- locked <0x00000000ea568db0> (a io.netty.channel.nio.SelectedSelectionKeySet)
```

Epoll.wait ??? poll the grpcserver ? heartbeat ?


calls to the service itself are done by http thread like "http-nio-8080-exec-206"..On the other hand this one sounds logic because calls to the service are done synchronously. Thanks !

Penn (Dapeng) Zhang

unread,
Jul 12, 2019, 6:03:34 PM7/12/19
to grpc.io
grpc-default-executor is grpc's default channel executor, it's used for running connection management tasks.
grpc-default-worker-ELG is a netty server's eventloop that grpc chooses as default. Epoll.wait could be hearbeat, if it happens two hours after connection established.


On Thursday, July 4, 2019 at 1:29:19 PM UTC-7, sicil...@gmail.com wrote:
Hi.

I have a service (webservice soap) sending rpc to a grpc server).

When I look at the thread dump I see thread names like this : "grpc-default-worker-ELG-13-7"

or "grpc-default-executor-1"...

What are these threads ??

example of stack :

```
"grpc-default-executor-1" #972 daemon prio=5 os_prio=0 cpu=3938.33ms elapsed=306.27s tid=0x00007f410804a800 nid=0x431 waiting on condition  [0x00007f4049fde000]
   java.lang.Thread.State: TIMED_WAITING (parking)
        at jdk.internal.misc.Unsafe.park(java...@11.0.3/Native Method)
        - parking to wait for  <0x00000000ea55fba0> (a java.util.concurrent.SynchronousQueue$TransferStack)

        at java.util.concurrent.locks.LockSupport.parkNanos(java.ba...@11.0.3/LockSupport.java:234)
        at java.util.concurrent.SynchronousQueue$TransferStack.awaitFulfill(java...@11.0.3/SynchronousQueue.java:462)
        at java.util.concurrent.SynchronousQueue$TransferStack.transfer(java.ba...@11.0.3/SynchronousQueue.java:361)
        at java.util.concurrent.SynchronousQueue.poll(java.ba...@11.0.3/SynchronousQueue.java:937)


        at java.util.concurrent.ThreadPoolExecutor.getTask(java...@11.0.3/ThreadPoolExecutor.java:1053)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(java...@11.0.3/ThreadPoolExecutor.java:1114)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(java...@11.0.3/ThreadPoolExecutor.java:628)

        at java.lang.Thread.run(java.ba...@11.0.3/Thread.java:834)
```

or

```
"grpc-default-worker-ELG-13-1" #940 daemon prio=5 os_prio=0 cpu=3135.01ms elapsed=345.67s tid=0x00007f40c0039800 nid=0x411 runnable  [0x00007f4046cad000]
   java.lang.Thread.State: RUNNABLE

        at sun.nio.ch.EPoll.wait(java.ba...@11.0.3/Native Method)
        at sun.nio.ch.EPollSelectorImpl.doSelect(java...@11.0.3/EPollSelectorImpl.java:120)
        at sun.nio.ch.SelectorImpl.lockAndDoSelect(java.base@11.0.3/SelectorImpl.java:124)


        - locked <0x00000000ea568db0> (a io.netty.channel.nio.SelectedSelectionKeySet)
```

Reply all
Reply to author
Forward
0 new messages