整理出这四个重要的参数,说起来很不易,来源于一次网络故障事故后的调查,对于平时使用Spring Cloud Gateway(简称scg)来说这些参数几乎很少会关注到,从网上也很少能看到讲解的文章,表面上是SCG的问题,实则都是和SCG的底层网络通信框架Netty有关系。
率先曝光一下这4个参数
System.setProperty("reactor.netty.pool.leasingStrategy", "lifo");
spring.cloud.gateway.httpclient.pool.max-idle-time=PT1S
spring.cloud.gateway.httpclient.connect-timeout=2000
spring.cloud.gateway.httpclient.response-timeout=PT30S
是不是略感陌生,平时的网关使用的都是默认配置,使用起来也没有问题,因为使用了WebFlux异步非阻塞的框架,底层基于Netty,NIO的异步非阻塞的处理SOCKET,可以让少量的线程处理大量的业务请求。
所以如果你使用端点监控去查看网关的线程数,网关中暴露的线程数都不会很高
system_cpu_count{application="i5xforyou-service-gateway",} 4