What scheduler is used for NettyRoutingFilter in Spring Cloud Gateway?

Viewed 12

Scenario:

I have implemented GRPC client that translates HTTP JSON requests to Protobuf to connect to a GRPC server.

Two styles of this.

  1. As a Global gateway filter like NettyRoutingFilter
  2. As a HTTP service that follows similar code.

If I put it on "ludicruous load" the one without the GRPC and one with GRPC

    localhost-direct-ludicrous-load:
      target: "http://localhost:28082"
      phases:
        - name: warmup
          duration: 10
          arrivalRate: 1
        - name: load
          duration: 100
          arrivalRate: 100
          maxVusers: 750

When I run without the GRPC calls I have no issues with the load test (5-node Docker Swarm cluster running t3a.larges). But with the GRPC the gets bogged down by the "refresh" token which is the slowest and load generating part of the system.

Hypothesis:

What I am thinking is that I am probably doing things inefficiently on the client call end even if it was supposed to use Netty.

I tried parallel, boundedElastic, newParallel and newBoundedElastic it seems to be unable to handle the load cleanly.

Though because of Resillience4J the moment I take the load out, it starts functioning normally so at least the limitters are preventing connection timeouts.

If I narrow it down, to the OP question is What scheduler is used for NettyRoutingFilter in Spring Cloud Gateway? as that may be the thing I just need to set the scheduler to in order to get the performance I am expecting.

0 Answers
Related