Most of the time is spent in IDLE -> CONNECTING transition. From this doc https://github.com/grpc/grpc/blob/master/doc/connectivity-semantics-and-api.md which says for CONNECTING
CONNECTING: The channel is trying to establish a connection and is waiting to make progress on one of the steps involved in name resolution, TCP connection establishment or TLS handshake. This may be used as the initial state for channels upon creation. DNS resolution and TLS handshake (since you are not calling usePlaintext() on the builder) are possible culprits. Even TCP connection establishment is a possibility depending on where the target is. If you enable trace logging you might be able to figure out. On Tue, Aug 22, 2023 at 10:08 PM '邹会江' via grpc.io <grpc-io@googlegroups.com> wrote: > Thank you for your reply! > 1. The first time: > The transition from idle state to connecting takes: 3377 ms, > The transition from idle state to ready takes: 3679 ms > 2. The second time: > The transition from idle state to connecting takes: 1643 ms, > The transition from idle state to ready takes: 1797 ms > 3.The third time: > The transition from idle state to connecting takes: 1019 ms, > The transition from idle state to ready takes: 1049 ms > 4. What is my enviroment? > MacBook Pro (16-inch, 2019) > 2.6 GHz 6 core Intel Core i7 > 16 GB 2667 MHz DDR4 > > 在2023年8月23日星期三 UTC+8 04:31:28<Larry Safran> 写道: > >> Another question is whether this is the same the second time you create a >> channel. The first time, the JVM may be taking time doing class loading. >> >> On Tue, Aug 22, 2023 at 8:41 AM 'Yuri Golobokov' via grpc.io < >> grp...@googlegroups.com> wrote: >> >>> Hello, >>> What is the round-trip time? How much time does DNS resolution take? >>> >>> On Tuesday, August 22, 2023 at 12:02:21 AM UTC-7 邹会江 wrote: >>> >>>> ### JAVA Code >>>> >>>> ``` >>>> channel = >>>> ManagedChannelBuilder.forTarget(param.getTarget()).build(); >>>> long channelStart = System.currentTimeMillis(); >>>> asyncStub = ASRRouteGrpc.newStub(channel); >>>> asrResponseStreamObserver = new >>>> ASRResponseStreamObserver(speechTranscriberListener); >>>> requestObserver = >>>> asyncStub.route(asrResponseStreamObserver); >>>> RouteRequest requestConf = newRequestHead(param); >>>> traceId = requestConf.getAsrConfig().getTraceId(); >>>> ConnectivityState currentChannelState = >>>> channel.getState(true); >>>> while (currentChannelState != ConnectivityState.READY) { >>>> CountDownLatch latchUntilChannelReady = new >>>> CountDownLatch(1); >>>> channel.notifyWhenStateChanged(currentChannelState, >>>> latchUntilChannelReady::countDown); >>>> latchUntilChannelReady.await(); >>>> currentChannelState = channel.getState(true); >>>> if (currentChannelState == >>>> ConnectivityState.CONNECTING) { >>>> long channelConnecting = System.currentTimeMillis(); >>>> LOGGER.info("The transition from idle state to >>>> connecting takes: {} ms", channelConnecting - channelStart); >>>> } >>>> } >>>> long channelReady = System.currentTimeMillis(); >>>> if (LOGGER.isInfoEnabled()) { >>>> LOGGER.info("Trace id: {}, channel start time: {}, >>>> channel ready time: {}, creating channel takes: {} ms", traceId, >>>> channelStart, channelReady, >>>> channelReady - channelStart); >>>> } >>>> ``` >>>> ### LOGGER >>>> >>>> ``` >>>> 2023-08-22 14:12:34,816 INFO client.ASRClient - The transition from >>>> idle state to connecting takes: 1009 ms >>>> 2023-08-22 14:12:34,841 INFO client.ASRClient - Trace id: >>>> 6afd2c67-e8c5-4cea-bd5c-4b82591a52aa, channel start time: 1692684753807, >>>> channel ready time: 1692684754841, creating channel takes: 1034 ms >>>> ``` >>>> ### Description >>>> #### code logic >>>> 1. first create channel >>>> 2. mark a time stamp(channelStart) after the channel is created >>>> 3. get the state of channel ,the state is IDEL >>>> 4. when the state of channel changes from IDEL to CONNECTING,mark a >>>> time stamp(channelConnecting) >>>> 5. when the state of channel changes from CONNECTING to READY, mark a >>>> time stamp(channelReady) >>>> >>>> #### Log info >>>> 1. It takes 1009ms for channel from IDLE state to CONNECTING state. >>>> 2. It takes 25ms for channel from CONNECTIONG state to READY state. >>>> ### What's i supposed >>>> 1. Does it take too long for a channel to change from IDLE to >>>> CONNECTING? >>>> 2. I want to reduce the time it takes for a channel to go from IDLE to >>>> CONNECTING. >>>> >>> -- >>> 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 grpc-io+u...@googlegroups.com. >>> To view this discussion on the web visit >>> https://groups.google.com/d/msgid/grpc-io/8f2a15b8-1541-422e-ad66-9a5778e53882n%40googlegroups.com >>> <https://groups.google.com/d/msgid/grpc-io/8f2a15b8-1541-422e-ad66-9a5778e53882n%40googlegroups.com?utm_medium=email&utm_source=footer> >>> . >>> >> -- > 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 grpc-io+unsubscr...@googlegroups.com. > To view this discussion on the web visit > https://groups.google.com/d/msgid/grpc-io/8901e7bd-b684-462f-bf88-3607b6b01713n%40googlegroups.com > <https://groups.google.com/d/msgid/grpc-io/8901e7bd-b684-462f-bf88-3607b6b01713n%40googlegroups.com?utm_medium=email&utm_source=footer> > . > -- 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 grpc-io+unsubscr...@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/grpc-io/CA%2BPad6hUFt%3DgmD8utp%2B5bGON8Tq5AHsPwZtUsL8WrhU%3D45f72A%40mail.gmail.com.