I use GRPC C++ lib in my distributed SQL engine. I use server stream that 
client side sends "connect" request then the server side sends data packets 
by a *sync writer* and client side receive data packets by a *async reader*.
I use a single stream to pass massive data and be sure that the reader 
fetches data packets promptly, but I find the stream is halted by *every 
4-5 seconds* sometimes.
To look into this problem, I open the flowctl and timer trace log. I finder 
the server (sender) consumes out the remote window very fast and the stream 
is moved to *stalled list.* the log is in client.log 
<https://gist.github.com/hanfei1991/cdaa7078a1bebbde97b75e490ff9b343>

We can find that in 12:39s stream 11 is added to stalled list and waited 
for a stream updt, in 12:43s , a timer thread receive it and reset the 
window size, then unblock this write call.

On server side, the log is server.log 
<https://gist.github.com/hanfei1991/d718ee890b7cac02f94f412381982caf>, in 
12:43 server begin to receive all of the data in a window at once and sent 
the updt packet to the client.

Why the updt request halt for four seconds ? It seems server process too 
much data *at once*, but why?

-- 
You received this message because you are subscribed to the Google Groups 
"grpc.io" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/grpc-io/07626768-cf49-4670-9b8c-62da6112f523n%40googlegroups.com.

Reply via email to