当前位置: 首页 > news >正文

Unable to find instance for system-app

一、问题分析解决

技术栈: spring-cloud-gateway + nacos
在启动一个服务之后,到页面请求数据 出现 unable to find instance 翻译中文为找不到实例服务。如下图所示:

在这里插入图片描述

那么我们就该立刻想到是 nacos 注册中心或者是我们的服务注册到 nacos 时没配置好。

nacos 配置的检查没有问题,但是发现 nacos的服务注册一直无法上来,或者上来一会儿后,立马又掉线了。

那就可以肯定服务启动过程中一定有问题了。 打开后台日志,仔细观察服务启动日志,终于发现一个 大bug, outOfMemoryException for Metaspace . 查看 启动脚本, MetaspaceSize和MaxMetaspaceSize 都配置才 128M . 实在太小了, 改成 512M, 然后启动 问题解决了。

二、MetaspaceSize和MaxMetaspaceSize

  • JVM加载类的时候,需要记录类的元数据,这些数据会保存在一个单独的内存区域内,在Java 7里,这个空间被称为永久代(Permgen),在Java 8里,使用元空间(Metaspace)代替了永久代。永久代和元空间保存的数据并不完全一样,永久代中还保存另一些与类的元数据无关的杂项。

  • 字符串对象在JVM中是如何存放的中说的,在Java 7里将字符串常量从永久代移动到了堆区域,但是永久代并没有完全改造完成。直到Java 8,永久代的改造才算完全搞定,在元空间中保存的数据比永久代中纯粹很多,就是类的元数据,这些信息只对编译期或JVM的运行时有用。

  • 使用Java 8以后,关于元空间的JVM参数有两个:-XX:MetaspaceSize=N和-XX:MaxMetaspaceSize=N,对于64位JVM来说,元空间的默认初始大小是20.75MB,默认的元空间的最大值是无限。MaxMetaspaceSize用于设置metaspace区域的最大值,这个值可以通过mxbean中的MemoryPoolBean获取到,如果这个参数没有设置,那么就是通过mxbean拿到的最大值是-1,表示无穷大。

  • 由于调整元空间的大小需要Full GC,这是非常昂贵的操作,如果应用在启动的时候发生大量Full GC,通常都是由于永久代或元空间发生了大小调整,基于这种情况,一般建议在JVM参数中将MetaspaceSize和MaxMetaspaceSize设置成一样的值,并设置得比初始值要大,对于8G物理内存的机器来说,一般我会将这两个值都设置为256M(PS:读者可以根据自己的实际情况再调整)。

相关文章:

  • Android LruCache
  • docker安装GBase 8s(一)
  • 软考:信息安全工程师2
  • 微软Win11 22H2 22621.607(KB5017389)RP预览版发布!
  • RK3399平台开发系列讲解(USB篇)USB设备基础结构
  • java计算机毕业设计商超销售系统源代码+数据库+系统+lw文档
  • 阿里云视频点播-->>>阿里云媒资上传工具类及配置
  • Java.lang.Byte类之equals()方法的功能说明
  • 荧光探针染料母体 1402299-58-4,2-(1-乙基-2-甲基喹啉-4(1H)-亚基)丙二腈特点
  • 个人思考,怎样打开自己的格局
  • 餐饮SaaS下半场,聚焦效率革命?
  • SpringBoot 多环境配置文件切换
  • 超高清3D渲染编辑器免费开放!新增局部辉光、镜面反射功能
  • C++ “链链“不忘@必有回响之双向链表
  • FME助力电子海图数据自由转换
  • 【391天】每日项目总结系列128(2018.03.03)
  • 【node学习】协程
  • CentOS 7 防火墙操作
  • iBatis和MyBatis在使用ResultMap对应关系时的区别
  • Java精华积累:初学者都应该搞懂的问题
  • springboot_database项目介绍
  • vue 配置sass、scss全局变量
  • vue总结
  • webpack+react项目初体验——记录我的webpack环境配置
  • 基于web的全景—— Pannellum小试
  • 微信开源mars源码分析1—上层samples分析
  • Hibernate主键生成策略及选择
  • 蚂蚁金服CTO程立:真正的技术革命才刚刚开始
  • 摩拜创始人胡玮炜也彻底离开了,共享单车行业还有未来吗? ...
  • #### go map 底层结构 ####
  • #DBA杂记1
  • #stm32驱动外设模块总结w5500模块
  • #大学#套接字
  • #微信小程序:微信小程序常见的配置传旨
  • (2)Java 简介
  • (33)STM32——485实验笔记
  • (java版)排序算法----【冒泡,选择,插入,希尔,快速排序,归并排序,基数排序】超详细~~
  • (二开)Flink 修改源码拓展 SQL 语法
  • (附源码)ssm智慧社区管理系统 毕业设计 101635
  • (论文阅读32/100)Flowing convnets for human pose estimation in videos
  • (算法)求1到1亿间的质数或素数
  • (完整代码)R语言中利用SVM-RFE机器学习算法筛选关键因子
  • (一)Spring Cloud 直击微服务作用、架构应用、hystrix降级
  • (一)基于IDEA的JAVA基础10
  • (转)IIS6 ASP 0251超过响应缓冲区限制错误的解决方法
  • .bat批处理(十一):替换字符串中包含百分号%的子串
  • .dwp和.webpart的区别
  • .mysql secret在哪_MYSQL基本操作(上)
  • .NET Core 网络数据采集 -- 使用AngleSharp做html解析
  • .Net IE10 _doPostBack 未定义
  • .net6 webapi log4net完整配置使用流程
  • .NET面试题解析(11)-SQL语言基础及数据库基本原理
  • @Controller和@RestController的区别?
  • @ResponseBody
  • @Tag和@Operation标签失效问题。SpringDoc 2.2.0(OpenApi 3)和Spring Boot 3.1.1集成