My Spring Boot App is deployed on Google Kubernetes Engine and has an Istio sidecar.
Tech stack: Webflux (Spring boot 2.2.1), Istio, Kubernetes, Couchbase
Whenever there is high load, the response time recorded in Stackdriver Tracing is ~1800ms, whereas, the application logs indicate the entire operation was completed in the ~100ms mark (verified by the complete() signal logged at the end).
Thats a massive difference!!
The only layer in between my test JMeter deployed in another pod and my Spring Boot App is Istio.
I've tested my reactive app locally and its really fast and can take a lot of load. Can Istio be the bottleneck since its not reactive? Doesn't Istio work on a finite thread pool and follow a blocking and synchronous approach, i.e., non-reactive?
How can I debug this? Istio-proxy logs are reflecting roughly the time shown in Tracing.
Does this mean the app is finishing fast but Istio is taking time to service the response? Please guide.