记一次使用SpringCloud Gateway的OOM错误

简介: 记一次使用SpringCloud Gateway的OOM错误

问题背景

线上经常会出现网关服务掉线的情况,排查看之后,发现会产生OOM的错误,生成对应的错误文件。

问题复盘

究其原因,发现,是在创建新的进程时,内存不足导致。

采用arthas 进行查看下内存占用、线程数量,发现有大量的线程产生

image.png

image.png

大量的nacos线程,压垮了系统的运行

优化后的线程图如下:

image.png

优化前,线程数达到几万个

一堆工具,开始找寻排查问题的那个

image.png

当知道thread激增之后,就要去看下,为啥出现这么多线程。追踪源码,能够产生线程的最终是NacosServiceManger

vmtool —action getInstances —className demo.MathGame —express ‘instances.length’

通过示例命令,构造自己命令,查询NacosServiceManger运行实例。结果发现出现了一堆。

好吧,一个这玩意,就能带来指数式增长,因为内部是通过线程池实现,NamingProxy

so,根源找到了。就看下NacosServiceManger是如何产生那么多的。

问题解决

image.png

核心根源在于写自己的配置的时候,采用了new进行不断生成,ok,改掉

第一次,写了个单例获取示例

image.png

ok,基本优化完毕

第二次,仔细遍历源码,不该出现这么次的bug,应该有能够使用该对象的实现。果然发现它注入到容器内了,直接引用。

完事。。。

目录
相关文章
|
2月前
|
负载均衡 Java Nacos
SpringCloud基础2——Nacos配置、Feign、Gateway
nacos配置管理、Feign远程调用、Gateway服务网关
SpringCloud基础2——Nacos配置、Feign、Gateway
|
2月前
|
Java 开发者 Spring
Spring Cloud Gateway 中,过滤器的分类有哪些?
Spring Cloud Gateway 中,过滤器的分类有哪些?
48 3
|
2月前
|
负载均衡 Java 网络架构
实现微服务网关:Zuul与Spring Cloud Gateway的比较分析
实现微服务网关:Zuul与Spring Cloud Gateway的比较分析
102 5
|
1月前
|
负载均衡 Java API
【Spring Cloud生态】Spring Cloud Gateway基本配置
【Spring Cloud生态】Spring Cloud Gateway基本配置
37 0
|
2月前
|
安全 Java 开发者
强大!Spring Cloud Gateway新特性及高级开发技巧
在微服务架构日益盛行的今天,网关作为微服务架构中的关键组件,承担着路由、安全、监控、限流等多重职责。Spring Cloud Gateway作为新一代的微服务网关,凭借其基于Spring Framework 5、Project Reactor和Spring Boot 2.0的强大技术栈,正逐步成为业界的主流选择。本文将深入探讨Spring Cloud Gateway的新特性及高级开发技巧,助力开发者更好地掌握这一强大的网关工具。
222 6
|
4月前
|
负载均衡 Java Spring
Spring cloud gateway 如何在路由时进行负载均衡
Spring cloud gateway 如何在路由时进行负载均衡
491 15
|
3月前
|
Java Spring 容器
【Azure Spring Cloud】在Azure Spring Apps上看见 App Memory Usage 和 jvm.menory.use 的指标的疑问及OOM
【Azure Spring Cloud】在Azure Spring Apps上看见 App Memory Usage 和 jvm.menory.use 的指标的疑问及OOM
|
4月前
|
Java Spring
spring cloud gateway在使用 zookeeper 注册中心时,配置https 进行服务转发
spring cloud gateway在使用 zookeeper 注册中心时,配置https 进行服务转发
111 3
|
4月前
|
Java 微服务 Spring
SpringCloud gateway自定义请求的 httpClient
SpringCloud gateway自定义请求的 httpClient
183 3
|
4月前
|
JSON 前端开发 Java
SpringCloud怎么搭建GateWay网关&统一登录模块
本文来分享一下,最近我在自己的项目中实现的认证服务,目前比较简单,就是可以提供一个公共的服务,专门来处理登录请求,然后我还在API网关处实现了登录拦截的效果,因为在一个博客系统中,有一些地址是可以不登录的,比方说首页;也有一些是必须登录的,比如发布文章、评论等。所以,在网关处可以支持自定义一些不需要登录的地址,一些需要登录的地址,也可以在网关处进行校验,如果未登录,可以返回JSON格式的出参,前端可以进行相关处理,比如跳转到登录页面等。
116 4