springcloud openfeign 偶现 Caused by: java.net.UnknownHostException
背景
最近查看日志发现某服务偶现Caused by: java.net.UnknownHostException
同时查看eureka的access.log 出现如下异常
10.xxx.xxx.xxx - - [27/May/2025:23:57:29 +0800] “PUT /eureka/apps/{appName}/{host}:xxx-job:8082?status=UP&lastDirtyTimestamp=1748351637173 HTTP/1.1” 404 -
问题关联分析
1. 问题链条
Eureka心跳续约失败(404) → 服务从注册中心下线 → 服务发现失败 → DNS解析失败 → UnknownHostException
2. 具体流程
xxx-job
服务向Eureka发送心跳续约请求- Eureka Server返回404,表示该服务实例不存在
- 经过几次失败后,Eureka Server将该服务实例从注册表中移除
- 其他服务调用
xxx-job
时,从Eureka获取不到该服务的实例信息 - Spring Cloud LoadBalancer无法解析
xxx-job
服务名 - 最终抛出
UnknownHostException: xxx-job
为什么会出现404错误
1. 服务注册不完整
# 可能的配置问题
eureka:client:initial-instance-info-replication-interval-seconds: 40 # 初始注册延迟太长instance-info-replication-interval-seconds: 30
2. Eureka Server清理策略
# Eureka Server可能过于激进地清理实例
eureka:server:eviction-interval-timer-in-ms: 60000 # 清理间隔enable-self-preservation: false # 自我保护模式关闭
3. 网络问题导致注册失败
实例ID中的 host
可能存在DNS解析问题。
解决方案
1. 修复服务注册配置
eureka:client:service-url:defaultZone: http://eureka-server:8761/eureka/register-with-eureka: truefetch-registry: trueinitial-instance-info-replication-interval-seconds: 5instance-info-replication-interval-seconds: 10instance:prefer-ip-address: trueip-address: xxx.xxx.xxx.xxxinstance-id: ${spring.application.name}:${spring.cloud.client.ip-address}:${server.port}lease-renewal-interval-in-seconds: 10lease-expiration-duration-in-seconds: 30
2. 启用Eureka Server自我保护模式
eureka:server:enable-self-preservation: truerenewal-percent-threshold: 0.85eviction-interval-timer-in-ms: 120000
3. 添加重试机制
# 为Feign客户端添加重试
feign:client:config:default:retryer: feign.Retryer.Default
4. 监控和诊断
@Component
public class ServiceHealthMonitor {@Autowiredprivate EurekaClient eurekaClient;@Scheduled(fixedRate = 30000)public void checkServiceHealth() {Application app = eurekaClient.getApplication("xxx-job");if (app == null || app.getInstances().isEmpty()) {logger.warn("xxx-job服务不可用");}}
}
5. 应急预案
@Component
public class ServiceFallback {@Retryable(value = UnknownHostException.class, maxAttempts = 3)public String callXxxjob() {// 服务调用逻辑}@Recoverpublic String recover(UnknownHostException ex) {logger.error("服务调用失败,启用降级策略", ex);return "服务暂时不可用";}
}
验证步骤
- 检查Eureka Dashboard:确认
xxx-job
服务是否持续在线 - 监控日志:观察404错误的频率和时间模式
- 测试网络:
ping host
- 检查服务启动顺序:确保Eureka Server先启动
这个问题的核心是服务注册中心的状态不一致,建议重点解决服务注册稳定性问题。
相关文章:
springcloud openfeign 偶现 Caused by: java.net.UnknownHostException
背景 最近查看日志发现某服务偶现Caused by: java.net.UnknownHostException 同时查看eureka的access.log 出现如下异常 10.xxx.xxx.xxx - - [27/May/2025:23:57:29 0800] “PUT /eureka/apps/{appName}/{host}:xxx-job:8082?statusUP&lastDirtyTimestamp1748351637173 H…...

Transformer实战——词嵌入技术详解
Transformer实战——词嵌入技术详解 0. 前言1. 词嵌入基础2. 分布式表示3. 静态嵌入3.1 Word2Vec3.2 GloVe 4. 使用 Gensim 构建词嵌入5. 使用 Gensim 探索嵌入空间6. 动态嵌入小结系列链接 0. 前言 在本节中,我们首先介绍词嵌入的概念,然后介绍两种实现…...

[pdf、epub]300道《软件方法》强化自测题业务建模需求分析共257页(202505更新)
DDD领域驱动设计批评文集 做强化自测题获得“软件方法建模师”称号 《软件方法》各章合集 在本账号CSDN资源下载,或者访问链接: http://www.umlchina.com/url/quizad.html 如果需要提取码:umlc 文件夹中的“300道软件方法强化自测题2025…...

Vue3入门指南:从零到精通的快速上手
齐爷学vue3 一、Vue3入门 vite:前端构架工具,构建速度快于webpack。轻量快速、对TS,JSX,CSS开箱即用、按需编译。 创建Vue3工程 1.在想要创建Vue3的位置打开cmd,执行如下命令。 npm create vuelatest 2.功能只选择…...
前端常见错误
1. TypeError: Cannot read property xxx of undefined 错误原因:尝试访问一个 undefined 或 null 对象的属性 / 方法。 示例代码: const user { name: "John" }; console.log(user.address.street); // user.address 为 undefined 解决方…...

吴恩达MCP课程(5):mcp_chatbot_prompt_resource.py
前提条件: 1、吴恩达MCP课程(5):research_server_prompt_resource.py 2、server_config_prompt_resource.json文件 {"mcpServers": {"filesystem": {"command": "npx","args"…...
关于DDOS
DDOS是一门没什么技术含量的东西,其本质而言是通过大量数据报文,发送到目标受害主机IP地址上,导致目标主机无法继续服务(俗称:拒绝服务) DDOS灰产人期望达成的预期目标,几乎都是只要把对面打到 …...
云服务器自带的防御可靠吗
最近有不少朋友问我,云服务器自带的防御靠不靠谱。就拿大厂的云服务器来说,很多都自带5G防御。但这5G防御能力,在如今的网络攻击环境下,真的有些不够看。 如今,网络攻击手段层出不穷,攻击流量更是越来越大。…...
Java详解LeetCode 热题 100(27):LeetCode 21. 合并两个有序链表(Merge Two Sorted Lists)详解
文章目录 1. 题目描述1.1 链表节点定义 2. 理解题目2.1 问题可视化2.2 核心挑战 3. 解法一:迭代法(哨兵节点)3.1 算法思路3.2 Java代码实现3.3 详细执行过程演示3.4 执行结果示例3.5 复杂度分析3.6 优缺点分析 4. 解法二:递归法4.…...

设计模式——抽象工厂设计模式(创建型)
摘要 抽象工厂设计模式是一种创建型设计模式,旨在提供一个接口,用于创建一系列相关或依赖的对象,无需指定具体类。它通过抽象工厂、具体工厂、抽象产品和具体产品等组件构建,相比工厂方法模式,能创建一个产品族。该模…...

基于LocalAI与cpolar技术协同的本地化AI模型部署与远程访问方案解析
文章目录 前言1. Docker部署2. 简单使用演示3. 安装cpolar内网穿透4. 配置公网地址5. 配置固定公网地址前言 各位极客朋友们!今天要向大家推荐一套创新性的本地部署方案——LocalAI技术架构。这款开源工具包能够将普通配置的笔记本电脑转化为具备强大算力的AI工作站,轻松实现…...
Linux 云服务器部署 Flask 项目(含后台运行与 systemd 开机自启)
一、准备工作 在开始正式部署之前,请确认以下前提条件已经准备好: 你有一台运行 Linux 系统(CentOS 或 Ubuntu)的服务器; 服务器有公网 IP,本例中使用:111.229.204.102; 你拥有该服务器的管理员权限(可以使用 sudo); 打算使用 Flask 构建一个简单的 Web 接口; 服务…...

霍尔效应传感器的革新突破:铟化铟晶体与结构演进驱动汽车点火系统升级
一、半导体材料革新:铟化铟晶体的电压放大机制 铟化铟(InSb)晶体因其独特的能带结构,成为提升霍尔电压的关键材料。相较于传统硅基材料,其载流子迁移率高出3-5倍,在相同磁场强度下可显著放大霍尔电压。其作…...

无法运用pytorch环境、改环境路径、隔离环境
一.未建虚拟环境时 1.创建新项目后,直接运行是这样的。 2.设置中Virtualenv找不到pytorch环境?因为此时没有创建新虚拟环境。 3.选择conda环境(全局环境)时,是可以下载环境的。 运行结果如下: 是全局环境…...

从0开始学vue:pnpm怎么安装
一、什么是 pnpm? pnpm(Performant npm)是新一代 JavaScript 包管理器,优势包括: 节省磁盘空间:通过硬链接和符号链接实现高效存储安装速度更快:比 npm/yarn 快 2-3 倍内置工作区支持…...
React从基础入门到高级实战:React 实战项目 - 项目二:电商平台前端
React 实战项目:电商平台前端 欢迎来到本 React 开发教程专栏的第 27 篇!在前 26 篇文章中,我们从 React 的基础概念逐步深入到高级技巧,涵盖了组件、状态、路由、性能优化和设计模式等核心知识。这一次,我们将通过一…...

Python 网络编程 -- WebSocket编程
作者主要是为了用python构建实时网络通信程序。 概念性的东西越简单越好理解,因此,下面我从晚上摘抄的概念 我的理解。 什么是网络通信? 更确切地说,网络通信是两台计算机上的两个进程之间的通信。比如,浏览器进程和新浪服务器上的某个Web服务进程在通…...
微信小程序动态组件加载的应用场景与实现方式
动态组件加载的应用场景与实现方式 你提供的代码展示了微信小程序中动态加载组件的方法,但这种方式在实际开发中需要注意使用场景和实现细节。下面我来详细说明如何应用: 应用场景 按需加载组件:在某些条件满足时才加载组件动态配置组件&a…...
人工智能在智能教育中的创新应用与未来趋势
随着人工智能(AI)技术的飞速发展,教育领域正经历着一场深刻的变革。智能教育通过引入AI、物联网(IoT)、大数据和云计算等前沿技术,正在实现教育的个性化、智能化和高效化。本文将探讨人工智能在智能教育中的…...

边缘计算应用实践心得
当数据中心的光纤开始承载不了爆炸式增长的物联网数据流时,边缘计算就像毛细血管般渗透进现代数字肌理的末梢。这种将算力下沉到数据源头的技术范式,本质上是对传统云计算中心化架构的叛逆与补充——在智能制造车间里,实时质检算法直接在工业…...

EXCEL如何快速批量给两字姓名中间加空格
EXCEL如何快速批量给姓名中间加空格 优点:不会导致排版混乱 缺点:无法输出在原有单元格上,若需要保留原始数据,可将公式结果复制后“选择性粘贴为值” 使用场景:在EXCEL中想要快速批量给两字姓名中间加入空格使姓名对…...
OD 算法题 B卷【BOSS的收入】
文章目录 BOSS的收入 BOSS的收入 一个公司只有一个boss,其有若干一级分销,一级分销又有若干二级分销,每个分销只有唯一的上级;每个月,下级分销需要将自己的总收入(自己的下级上交的)࿰…...
Linux共享内存原理及系统调用分析
shmget 是 System V 共享内存的核心系统调用之一,其权限位(shmflg 参数)决定了共享内存段的访问控制和创建行为。以下是权限位的详细解析: 权限位的组成 shmflg 参数由两部分组成: 权限标志(低 9 位&…...

Jenkins | Linux环境部署Jenkins与部署java项目
1. 部署jenkins 1.1 下载war包 依赖环境 jdk 11 下载地址: https://www.jenkins.io/ 依赖环境 1.2 启动服务 启动命令 需要注意使用jdk11以上的版本 直接启动 # httpPort 指定端口 #-Xms2048m -Xmx4096m 指定java 堆内存初始大小 与最大大小 /usr/java/jdk17/bin/java…...

react私有样式处理
react私有样式处理 Nav.jsx Menu.jsx vue中通过scoped来实现样式私有化。加上scoped,就属于当前组件的私有样式。 给视图中的元素都加了一个属性data-v-xxx,然后给这些样式都加上属性选择器。(deep就是不加属性也不加属性选择器) …...

UDP/TCP协议全解
目录 一. UDP协议 1.UDP协议概念 2.UDP数据报格式 3.UDP协议差错控制 二. TCP协议 1.TCP协议概念 2.三次握手与四次挥手 3.TCP报文段格式(重点) 4.流量控制 5.拥塞控制 一. UDP协议 1.UDP协议概念 当应用层的进程1要向进程2传输报文ÿ…...
nginx 服务启动失败问题记录
背景和问题 systemctl status nginx.service 查看报错信息,显示如下: nginx: [emerg] socket() [::]:80 failed (97: Address family not supported by protocol) nginx: configuration file /etc/nginx/nginx.conf test failed问题分析 这个错误通常…...

Duix.HeyGem:以“离线+开源”重构数字人创作生态
在AI技术快速演进的今天,虚拟数字人正从高成本、高门槛的专业领域走向大众化应用。Duix.HeyGem 数字人项目正是这一趋势下的杰出代表。该项目由一支拥有七年AI研发经验的团队打造,通过放弃传统3D建模路径,转向真人视频驱动的AI训练模型,成功实现了低成本、高质量、本地化的…...

ubuntu22.04安装megaton
前置 sudo apt-get install git cmake ninja-build generate-ninja安装devkitPro https://blog.csdn.net/qq_39942341/article/details/148388639?spm1001.2014.3001.5502 安装cargo https://blog.csdn.net/qq_39942341/article/details/148387783?spm1001.2014.3001.5501 …...
风机下引线断点检测算法实现
风机下引线断点检测算法实现 1. 算法原理 该检测系统基于时域反射法(TDR)原理: 在引线起点注入高压纳秒级脉冲脉冲沿引线传播,遇到阻抗不连续点(断点)产生反射采集反射信号并计算时间差通过小波变换进行信号去噪和特征提取根据传播速度计算断点位置:距离 = (传播速度 时间…...