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

OpenFeign性能优化最全实战

Feign 就是动态代理 模板化 HTTP 请求帮你把接口方法自动转成 HTTP 调用。完整执行流程8 步启动时FeignClient 接口被 Feign 扫描生成动态代理类调用时执行接口方法 → 进入代理类解析注解读取 GetMapping、参数、路径构造请求拼接 URL、参数、请求头选择客户端使用 OkHttp/HttpClient 发送请求拦截器处理执行请求前后拦截器如放 Token发送请求通过连接池发送 HTTP一、OpenFeign 为什么慢核心瓶颈默认配置非常保守慢的根源并发线程数太小默认仅 200 个HTTP 连接不池化每次请求新建连接超时时间不合理默认用 JDK 原生 HttpURLConnection性能差、无连接池日志级别过高FULL 日志极耗性能二、终极优化方案4 步起飞优化 1替换 HTTP 客户端最关键禁用默认 JDK 客户端改用 Apache HttpClient 5 或 OkHttp它们支持连接池、复用连接、心跳、并发优化性能提升巨大。推荐OkHttp最简单、最稳!-- OpenFeign 核心 --dependencygroupIdorg.springframework.cloud/groupIdartifactIdspring-cloud-starter-openfeign/artifactId/dependency!-- 优化OkHttp 连接池 --dependencygroupIdio.github.openfeign/groupIdartifactIdfeign-okhttp/artifactIdversion12.1/version/dependency启用配置feign:okhttp:enabled:true# 启用 OkHttphttpclient:enabled:false# 关闭默认 HttpClient优化 2配置连接池并发核心feign:okhttp:enabled:trueclient:config:default:connectTimeout:2000# 连接超时readTimeout:5000# 读取超时loggerLevel:basic# 日志级别千万别用 full# OkHttp 连接池优化生产推荐okhttp:pool:max-idle-connections:200# 最大空闲连接keep-alive-duration:300s# 连接保活时间优化 3调大 Feign 并发线程池默认 max-connections 200高并发下直接不够用feign:okhttp:enabled:truehttpclient:max-connections:500# 最大总连接数max-connections-per-route:300# 每个域名最大连接数高并发建议max-connections 500 ~ 1000max-connections-per-route 300 ~ 500优化 4日志级别优化性能杀手❌ 禁止使用loggerLevel:full# 打印完整请求响应高并发下性能暴跌✅ 生产推荐loggerLevel:basic# 只打印请求方法、URL、响应码、耗时三、进阶性能优化高手必看优化 5开启 Feign 异步非阻塞默认 Feign 是同步阻塞的高并发下会阻塞业务线程。开启异步FeignClient(nameuser-service)publicinterfaceUserFeign{GetMapping(/user/{id})CompletableFutureUsergetUser(PathVariable(id)Longid);}性能提升非常明显。优化 6开启 GZIP 压缩减少传输体积feign:compression:request:enabled:truemime-types:application/jsonmin-request-size:1024# 超过1KB压缩response:enabled:true接口响应速度提升 20%~50%优化 7单独调优某服务避免全局影响feign:client:config:# 默认全局default:connectTimeout:2000readTimeout:5000# 给 user-service 单独配置更大超时更高并发user-service:connectTimeout:3000readTimeout:8000四、生产环境终极最优配置直接复制feign:okhttp:enabled:truehttpclient:enabled:falsemax-connections:800max-connections-per-route:400client:config:default:connectTimeout:2000readTimeout:5000loggerLevel:basiccompression:request:enabled:truemime-types:application/jsonmin-request-size:1024response:enabled:trueokhttp:pool:max-idle-connections:200keep-alive-duration:300s五、性能提升效果实测接口响应速度提升 30%~100%并发支持能力提升 3~5 倍线程阻塞大幅减少服务CPU使用率降低六、OpenFeign 请求头传递Token微服务最常见需求网关/前端传 Token → 微服务A → 调用 Feign → 微服务B必须让 Token 透传方案RequestInterceptor 统一拦截注入最标准1. 写拦截器代码importfeign.RequestInterceptor;importfeign.RequestTemplate;importjakarta.servlet.http.HttpServletRequest;importorg.springframework.context.annotation.Bean;importorg.springframework.context.annotation.Configuration;importorg.springframework.web.context.request.RequestContextHolder;importorg.springframework.web.context.request.ServletRequestAttributes;ConfigurationpublicclassFeignHeaderConfig{BeanpublicRequestInterceptorrequestInterceptor(){returnnewRequestInterceptor(){Overridepublicvoidapply(RequestTemplatetemplate){// 1. 获取当前请求上下文ServletRequestAttributesattributes(ServletRequestAttributes)RequestContextHolder.getRequestAttributes();if(attributes!null){HttpServletRequestrequestattributes.getRequest();// 2. 从请求头获取 TokenStringtokenrequest.getHeader(Authorization);// 3. 放入 Feign 请求头if(token!null){template.header(Authorization,token);}}}};}}2. 适用场景网关透传 Token登录鉴权用户信息传递3. 注意异步场景失效异步(Async)、子线程中 Feign 调用会拿不到 request因为RequestContextHolder是ThreadLocal 存储子线程无法获取。✅异步修复方案// 主线程先获取ServletRequestAttributesattributes(ServletRequestAttributes)RequestContextHolder.getRequestAttributes();// 异步任务里手动设置CompletableFuture.runAsync(()-{RequestContextHolder.setRequestAttributes(attributes);// 这里再调 Feign});七、OpenFeign 优化总结必须用 OkHttp 替代默认客户端必须开启连接池必须调大并发连接数日志级别必须用 basic高并发建议开启异步开启GZIP压缩

相关文章:

OpenFeign性能优化最全实战

Feign 就是动态代理 模板化 HTTP 请求,帮你把接口方法自动转成 HTTP 调用。 完整执行流程(8 步) 启动时:FeignClient 接口被 Feign 扫描,生成动态代理类 调用时:执行接口方法 → 进入代理类 解析注解&…...

MacBook上5分钟搞定Jmeter接口压测:从下载到脚本自动保存结果(附BeanShell代码)

MacBook高效接口压测指南:5分钟实现Jmeter自动化结果收集 每次遇到偶发性接口问题,手动点击上百次查看结果是不是让你抓狂?作为开发者,我们需要的不仅是工具,更是一套能自动完成脏活的解决方案。今天我们就来彻底解决…...

保姆级教程:用Halcon的cooc_feature_image算子搞定LCD屏幕缺陷检测(附完整代码)

工业级LCD屏幕缺陷检测实战:Halcon纹理特征分析与优化策略 在液晶显示屏(LCD)制造过程中,微米级的缺陷可能导致产品报废。传统人工检测不仅效率低下,且漏检率高达15%-30%。Halcon的cooc_feature_image算子通过灰度共生…...

AI转PSD终极指南:快速实现矢量图到Photoshop分层文件的完美转换

AI转PSD终极指南:快速实现矢量图到Photoshop分层文件的完美转换 【免费下载链接】ai-to-psd A script for prepare export of vector objects from Adobe Illustrator to Photoshop 项目地址: https://gitcode.com/gh_mirrors/ai/ai-to-psd 还在为Illustrato…...

ComfyUI-VideoHelperSuite解决VHS_VideoCombine节点缺失的4阶段实战方案

ComfyUI-VideoHelperSuite解决VHS_VideoCombine节点缺失的4阶段实战方案 【免费下载链接】ComfyUI-VideoHelperSuite Nodes related to video workflows 项目地址: https://gitcode.com/gh_mirrors/co/ComfyUI-VideoHelperSuite 在ComfyUI视频工作流中,VHS_V…...

工业Python网关性能断崖式下降?实测发现:asyncio在ARM Cortex-A9上协程切换开销超预期237%,3种轻量替代架构对比报告

第一章:工业Python网关性能断崖式下降的现场诊断逻辑工业Python网关在连续运行数周后突发响应延迟激增、消息吞吐骤降50%以上,此类“断崖式”性能劣化往往非单一因素导致,需构建分层递进的现场诊断逻辑:从资源表象切入&#xff0c…...

别急着扔!用Windows虚拟内存和这几招,让老电脑再战三年(附SSD选购建议)

让老旧电脑重获新生的5个关键策略与SSD选购指南 老旧电脑卡顿到让人抓狂?先别急着换新机。我的邻居张叔上周还抱怨他那台2015年的联想笔记本"慢得像蜗牛",经过一番优化后,现在居然能流畅运行Photoshop处理照片。本文将分享一套系统…...

KV STUDIO Ver.12 梯形图编程实战:从入门到精通的5个关键步骤

1. 环境配置:从零搭建KV STUDIO开发环境 第一次打开KV STUDIO Ver.12时,很多新手会被复杂的界面吓到。其实只要按照正确步骤配置,半小时就能搭建好开发环境。我去年给产线做自动化改造时,需要在三台不同型号的KV PLC上部署程序&a…...

AI赋能开发:让快马智能分析并优化你的openclaw101风格网站代码与体验

今天想和大家分享一个很有意思的发现:用AI辅助开发工具来优化技术博客网站,效果真的超出预期。就拿我最近在InsCode(快马)平台上体验的openclaw101风格网站优化来说,整个过程既高效又有趣。 网站分析阶段 首先,我让平台的AI模型…...

从无人机航拍到手机扫描:聊聊SfM(运动恢复结构)在实际项目中的选型与避坑指南

从无人机航拍到手机扫描:SfM技术实战选型与避坑指南 当我们需要将一座千年古刹数字化存档,或是为电商平台上的家具产品创建3D展示模型时,运动恢复结构(SfM)技术往往成为首选方案。这项能够从普通照片中重建三维场景的技…...

Source Han Serif CN:终极开源中文字体深度技术指南

Source Han Serif CN:终极开源中文字体深度技术指南 【免费下载链接】source-han-serif-ttf Source Han Serif TTF 项目地址: https://gitcode.com/gh_mirrors/so/source-han-serif-ttf Source Han Serif CN(思源宋体)是Google与Adobe…...

Qwen2.5-VL-7B-Instruct详细步骤:GPTQ量化模型加载与推理加速技巧

Qwen2.5-VL-7B-Instruct详细步骤:GPTQ量化模型加载与推理加速技巧 1. 项目概述 Qwen2.5-VL-7B-Instruct是一款强大的多模态视觉-语言模型,能够同时处理图像和文本输入,生成高质量的响应。本指南将详细介绍如何通过GPTQ量化技术来优化模型加…...

5V低压开环FOC驱动器:低成本实现微型电机流畅控制

1. 5V低压开环FOC驱动器的核心价值 对于很多电子爱好者和小型项目开发者来说,控制微型电机常常会遇到两个难题:要么控制方案太贵,要么效果不够理想。我自己在开发桌面旋转展示台时就深有体会——市面上的驱动器要么价格高昂,要么体…...

NVIDIA GPU监控效能深度解析:nvitop如何破解多用户环境资源管理难题

NVIDIA GPU监控效能深度解析:nvitop如何破解多用户环境资源管理难题 【免费下载链接】nvitop An interactive NVIDIA-GPU process viewer and beyond, the one-stop solution for GPU process management. 项目地址: https://gitcode.com/gh_mirrors/nv/nvitop …...

从PID控制器到语义分割:手把手教你复现PIDNet(附PyTorch代码与Cityscapes实战)

从PID控制器到语义分割:手把手教你复现PIDNet(附PyTorch代码与Cityscapes实战) 在计算机视觉领域,实时语义分割一直是个极具挑战性的任务。想象一下自动驾驶汽车需要在毫秒级时间内准确识别道路上的每个像素属于车辆、行人还是交通…...

【Android Framework 实战】记一次 SurfaceFlinger 黑屏死机惨案:一个 static 解决的性能血案

【Android Framework 实战】记一次 SurfaceFlinger 黑屏死机惨案:一个 static 解决的性能血案 在 Android 系统的深度定制中,多设备兼容和屏幕旋转往往是深水区。最近在某 AOSP 平台的项目开发中,我遭遇了一个因为一行代码拖死整个 SurfaceFlinger 渲染线程导致的黑屏惨案。…...

VisualGGPK2:《流放之路》MOD制作的高效解决方案

VisualGGPK2:《流放之路》MOD制作的高效解决方案 【免费下载链接】VisualGGPK2 Library for Content.ggpk of PathOfExile (Rewrite of libggpk) 项目地址: https://gitcode.com/gh_mirrors/vi/VisualGGPK2 你是否曾因复杂的资源提取流程而放弃MOD创作&#…...

抖音无水印下载工具:高效批量下载解决方案

抖音无水印下载工具:高效批量下载解决方案 【免费下载链接】douyin-downloader 项目地址: https://gitcode.com/GitHub_Trending/do/douyin-downloader 在短视频内容创作与数字资产管理领域,抖音平台的海量内容为创作者提供了丰富的素材来源。然…...

硬件工程师眼中的“省心”麦克风:MP421A-AT01E如何解决射频干扰与声音漂移

从“喂,听得到吗?”到“你说,我听着”:MP421A-AT01E如何让蓝牙耳机回归通话本质你有没有这样的经历?戴上刚买的蓝牙耳机,兴冲冲地给朋友打电话,结果对方第一句就是:“你那边好吵&…...

告别切换烦恼!Ubuntu双输入法配置指南(IBus+Fcitx五笔)

Ubuntu双输入法高效配置指南:IBus拼音与Fcitx五笔的完美共存方案 对于需要同时使用拼音和五笔输入的开发者来说,Ubuntu系统下的输入法配置往往令人头疼。本文将详细介绍如何实现IBus智能拼音与Fcitx五笔输入法的和谐共存,解决框架冲突、优先级…...

终极指南:如何用开源工具Meshroom实现照片转3D模型

终极指南:如何用开源工具Meshroom实现照片转3D模型 【免费下载链接】Meshroom 3D Reconstruction Software 项目地址: https://gitcode.com/gh_mirrors/me/Meshroom 想要将普通照片变成惊艳的3D模型?过去这需要昂贵的专业软件和复杂的技术训练&am…...

告别手动切图:用快马ai生成脚本,自动化ps设计稿导出与标注

作为一名长期与PS打交道的设计师,我深知重复性切图标注的痛苦。每次设计稿调整后,手动导出图层、记录样式、测量间距的过程不仅枯燥,还容易出错。最近尝试用InsCode(快马)平台的AI辅助生成自动化脚本,意外发现效率提升显著。以下是…...

Navicat密码解密工具:专业恢复数据库连接密码的技术方案

Navicat密码解密工具:专业恢复数据库连接密码的技术方案 【免费下载链接】navicat_password_decrypt 忘记navicat密码时,此工具可以帮您查看密码 项目地址: https://gitcode.com/gh_mirrors/na/navicat_password_decrypt Navicat密码解密工具是一个专门用于解…...

3大技巧:如何让旧Mac免费升级到最新macOS系统的完整方案

3大技巧:如何让旧Mac免费升级到最新macOS系统的完整方案 【免费下载链接】OpenCore-Legacy-Patcher 体验与之前一样的macOS 项目地址: https://gitcode.com/GitHub_Trending/op/OpenCore-Legacy-Patcher 你是否有一台2012-2015年的旧款Mac,看着朋…...

藏在滴滴里的AI神器,轻松叫到“梦中情车”

【潮汐商业评论/文】在一线城市上班的00后小杨是个重度打车用户,从她滴滴会员常年v8就可见对打车的依赖程度。她住在城市远郊,工作日的通勤或是周末的聚会,她总习惯提前叫好车,对于车型她也有着自己的“小偏好”,总结就…...

WorkshopDL:打破平台壁垒,让非Steam用户也能畅享创意工坊模组

WorkshopDL:打破平台壁垒,让非Steam用户也能畅享创意工坊模组 【免费下载链接】WorkshopDL WorkshopDL - The Best Steam Workshop Downloader 项目地址: https://gitcode.com/gh_mirrors/wo/WorkshopDL 在当今数字游戏时代,模组&…...

GDPR、数据出境、合规审计:2026年调用IP查询接口必须知道的三个红线

2026年数据安全领域最显著的变化,莫过于监管从”发文警示”转向”实质执法”。公开数据显示,仅2026年2月就有14家银行因网络安全/数据安全问题收到罚单,其中最高单笔罚款超过300万元,相关科技部门负责人也面临个人追责。值得注意的…...

思源宋体TTF:5个高效技巧提升你的中文排版专业度

思源宋体TTF:5个高效技巧提升你的中文排版专业度 【免费下载链接】source-han-serif-ttf Source Han Serif TTF 项目地址: https://gitcode.com/gh_mirrors/so/source-han-serif-ttf 还在为中文排版效果不佳而烦恼吗?思源宋体TTF字体库为你提供了…...

告别重复造轮子:用快马平台一键生成高效yolov11开发模板

告别重复造轮子:用快马平台一键生成高效yolov11开发模板 最近在做一个基于yolov11的目标检测项目,发现从零开始搭建开发环境特别费时间。光是配环境、写基础代码、整合工具链这些重复性工作,就占用了将近一半的开发周期。后来尝试用InsCode(…...

智能车PID调参实战:从电机到舵机的完整调试指南(附C代码)

智能车PID调参实战:从电机到舵机的完整调试指南(附C代码) 在智能车竞赛和自动化项目中,PID控制算法的调参往往是决定车辆性能的关键环节。无论是电机的转速控制还是舵机的转向精度,都需要通过精细的参数调整来实现快速…...