I'm having an issue with my Spring Boot application which I'm running across three different Kubernetes environments: a self-hosted on-prem cluster using kubeadm, AWS EKS, and GCP GKE. The strange thing is that on GKE, everything runs smoothly—threads are active, and WebClient requests have normal latency. However, when I deploy the same pod to EKS and the on-prem setup, I notice that nearly all runnable threads are either stuck in a WAITING or BLOCKED state, and the latency for processing HTTP requests is extremely high. Since I'm using Spring WebClient, which relies heavily on networking and is supposed to be reactive, I'm puzzled as to why it's performing well in GKE but not in the other two environments. What could be causing these differences?
2 Answers
Have you checked if GKE is handling some underlying issues or automatically optimizing something? It might be worth investigating if GKE is altering network settings or adjusting parameters to prevent throttling.
It could be related to resource limits. Have you looked into CPU throttling? Sometimes, setting appropriate resource requests and limits can make a big difference in performance. Check your monitoring tools for any signs of resource contention.

Absolutely, monitoring resources and adjusting accordingly is key. Don't forget to check all the node settings across your clusters!