anycable-rails icon indicating copy to clipboard operation
anycable-rails copied to clipboard

possibly sending too many pings

Open abatko opened this issue 6 months ago • 1 comments

I am running two servers:

  1. anycable-go (1.6.2)
  2. anycable-rpc (1.6.0)

Once anycable-rpc is up, anycable-go starts saying ERROR: [transport] Client received GoAway with error code ENHANCE_YOUR_CALM and debug data equal to ASCII "too_many_pings". (see https://github.com/grpc/grpc-go/blob/4275c5bdd8e86c450d84f66c9445560fefadc4ec/internal/transport/http2_client.go#L1336-L1342)

Image

Is there any way to reduce the frequency of pings?

Sorry if this is the wrong place to post this issue. I took a stab at which gem might be the source of the pings:

-bash> grep anycable Gemfile.lock 
    anycable (1.6.0)
      anycable-core (= 1.6.0)
    anycable-core (1.6.0)
    anycable-rails (1.6.0)
      anycable
      anycable-rails-core (= 1.6.0)
    anycable-rails-core (1.6.0)
      anycable-core (~> 1.6.0)
  anycable-rails (~> 1.6)

abatko avatar Jun 01 '25 05:06 abatko

Is there any way to reduce the frequency of pings?

We already follow the official instructions and instruct the server to use the same keepalive interval as the client here:

https://github.com/anycable/anycable-rb/blob/366c4067c97611995f96c48a183e3e2443a6df8b/lib/anycable/grpc/config.rb#L44

Either we're doing something wrong here or it's not really supported by gRPC Ruby.

I would give env vars a try at the RPC side, say, GRPC_ARG_HTTP2_MIN_RECV_PING_INTERVAL_WITHOUT_DATA_MS=5000 or GRPC_ARG_HTTP2_MAX_PING_STRIKES=0 (see https://github.com/grpc/grpc/blob/master/doc/keepalive.md).

palkan avatar Jun 04 '25 16:06 palkan