[SpringCloud] 组件性能优化技巧
- Feign 配置优化
- hystrix配置 优化
- ribbon 优化
- Servlet 容器 优化
- Zuul配置 优化
文章目录
- 1.Servlet 容器 优化
- 2.Feign 配置优化
- 3.Zuul配置 优化
- 4.hystrix配置 优化
- 5.ribbon 优化
1.Servlet 容器 优化
默认情况下, Spring Boot 使用 Tomcat 来作为内嵌的 Servlet 容器, 可以将 Web 服务器切换到 Undertow 来提高应用性能, Undertow 是红帽公司开发的一款基于 NIO 的高性能 Web 嵌入式。
Zuul使用的内置容器默认是Tomcat, 可以将其换成undertow, 可以显著减少线程的数量。
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId><exclusions><exclusion><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-tomcat</artifactId></exclusion></exclusions>
</dependency>
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-undertow</artifactId>
</dependency>
server:undertow:io-threads: 16worker-threads: 256buffer-size: 1024buffers-per-region: 1024direct-buffers: true
- server.undertow.io-threads: 设置IO线程数, 主要执行非阻塞的任务。
- server.undertow.worker-threads: 阻塞任务线程池 。
- server.undertow.buffer-size: 类似netty的池化内存管理, buffer的大小, 小的空间被利用更充分。
- server.undertow.buffers-per-region: 每个区分配的buffer数量。
- server.undertow.direct-buffers: 是否分配的直接内存(NIO直接分配的堆外内存)。
2.Feign 配置优化
feign 默认不启用hystrix, feign.hystrix.enabled=true 开启熔断。
feign 启用压缩也是一种有效的性能优化方式。
feign:compression:request:enabled: truemime-types: text/xml,application/xml,application/jsonresponse:enabled: true
feign HTTP请求方式选择。
feign默认使用的是基于JDK提供的URLConnection调用HTTP接口, 无线程池, Apache HttpClient和okhttp都支持配置连接池功能, 也可以使用okhttp请求方式。
HttpClient:
feign:httpclient:enabled: truemax-connections:1000max-connections-per-route: 200
okHttp:
feign:okhttp:enabled: truehttpclient:max-connections: 1000max-connections-per-route: 200
- max-connections: 设置整个连接池最大连接数。
- max-connections-per-route: 设置路由的默认最大连接。
3.Zuul配置 优化
Hystrix有隔离策略: THREAD 以及SEMAPHORE, 默认是 SEMAPHORE 。
Zuul默认是使用信号量隔离, 信号量数量为100, 请求的并发线程超过100就会报错。
zuul:semaphore:max-semaphores: 5000
为了方便ThreadLocal的使用, 可以改变隔离策略, 需要调大hystrix的线程池大小。
zuul:ribbonIsolationStrategy: THREAD
hystrix:threadpool:default:coreSize: 100maximumSize: 400allowMaximumSizeToDivergeFromCoreSize: truemaxQueueSize: -1
- hystrix.threadpool.default.allowMaximumSizeToDivergeFromCoreSize: 是否让maximumSize生效, false为只有coreSize会生效。
- hystrix.threadpool.default.maxQueueSize: 线程池的队列大小。
- hystrix.threadpool.default.maximumSize: 最大线程数。
- zuul.ribbon-isolation-strategy: 线程隔离策略。
4.hystrix配置 优化
需要设置参数hystrix.threadpool.default.coreSize 来指定熔断隔离的线程数, 这个数需要调优。
hystrix:threadpool:default:coreSize: 500command:default:circuitBreaker: requestVolumeThreshold: 1000fallback:enabled: trueexecution:isolation:thread:timeoutInMilliseconds: 100000
- hystrix.command.default: 全局作用域, 作用的所有的hystrix的客户端, 如果需要对某个微服务, 可以写serviceId。
- hystrix.command.default.fallback.enabled: 是否开启回退方法。
- hystrix.command.default.execution.isolation.thread.timeoutInMilliseconds: 请求处理的超时时间, 缺省为1000,表示默认的超时时间为1S。
- hystrix.threadpool.default.coreSize 核心线程池数量。
- hystrix.command.default.fallback.isolation.semaphore.maxConcurrentRequests 回退最大线程数。
- hystrix.command.default.circuitBreaker.requestVolumeThreshold: 熔断器失败的个数
5.ribbon 优化
Ribbon进行客户端负载均衡的Client并不是在服务启动的时候就初始化好的, 而是在调用的时候才会去创建相应的Client, 所有第一次调用的耗时不仅仅包含发送HTTP请求的时间, 还包括了创建RibbonClient的时间。
ribbon:eager-load:enabled:trueclients:service-1,service-2,service-n
- ribbon.eager-load.enabled: 开启Ribbon的饥饿模式。
- ribbon.eager-load.clients: 指定需要饥饿加载的服务名。
相关文章:
[SpringCloud] 组件性能优化技巧
Feign 配置优化hystrix配置 优化ribbon 优化Servlet 容器 优化Zuul配置 优化 文章目录 1.Servlet 容器 优化2.Feign 配置优化3.Zuul配置 优化4.hystrix配置 优化5.ribbon 优化 1.Servlet 容器 优化 默认情况下, Spring Boot 使用 Tomcat 来作为内嵌的 Servlet 容器, 可以将 We…...
okhttp下载文件 Java下载文件 javaokhttp下载文件 下载文件 java下载 okhttp下载 okhttp
okhttp下载文件 Java下载文件 javaokhttp下载文件 下载文件 java下载 okhttp下载 okhttp 1、引入Maven1.1、okhttp发起请求官网Demo 2、下载文件3、扩充,读写 txt文件内容3.1读写内容 示例 http客户端 用的是 okhttp,也可以用 UrlConnetcion或者apache …...
Oracle/PL/SQL奇技淫巧之Json转表
在Oracle中,有些时候我们需要在一个json文档中查数据 这个时候我们可以通过JSON_TABLE函数来把 json文档 提取成一张可以执行正常查询操作的表 先看JSON_TABLE函数的基础用法: JSON_TABLE(json_data, $.json_path COLUMNS (column_definitions))其中&a…...
每日一学——网络安全
网络安全设计、原则、审计等知识点的精讲如下: 网络安全设计与原则: 网络安全设计是指在系统或网络的设计过程中考虑到安全性,并采取相应的安全措施来保护系统或网络不受威胁。安全设计原则包括最小权限原则(Least Privilege Prin…...
python中的lstm:介绍和基本使用方法
python中的lstm:介绍和基本使用方法 未使用插件 LSTM(Long Short-Term Memory)是一种循环神经网络(RNN)的变体,专门用于处理序列数据。LSTM 可以记忆序列中的长期依赖关系,这使得它非常适合于各…...
【Flink】Flink窗口触发器
数据进入到窗口的时候,窗口是否触发后续的计算由窗口触发器决定,每种类型的窗口都有对应的窗口触发机制。WindowAssigner 默认的 Trigger通常可解决大多数的情况。我们通常使用方式如下,调用trigger()方法把我们想执行触发器传递进去: SingleOutputStreamOperator<Produ…...
深度云化时代,什么样的云网络才是企业的“心头好”?
科技云报道原创。 近年来企业上云的快速推进,对云网络提出了更多需求。 最初,云网络只是满足互联网业务公网接入。 随着移动互联网的发展,企业对云上网络安全隔离能力和互访能力、企业数据中心与云上网络互联、构建混合云的能力࿰…...
【快应用】快应用广告学习之激励视频广告
【关键词】 快应用、激励视频广告、广告接入 【介绍】 一、关于激励视频广告 定义:用户通过观看完整的视频广告,获得应用内相关的奖励。适用场景:游戏/快游戏的通关、继续机会、道具获取、积分等场景中,阅读、影音等应用的权益体系…...
国产化系统中遇到的视频花屏、卡顿以及延迟问题的记录与总结
目录 1、国产化系统概述 1.1、国产化操作系统与国产化CPU 1.2、国产化服务器操作系统 1.3、当前国产化系统的主流配置 2、视频解码花屏与卡顿问题 2.1、视频解码花屏 2.2、视频解码卡顿 2.3、关于I帧和P帧的说明 3、国产显卡处理速度慢导致图像卡顿问题 3.1、视频延…...
go内存管理机制
golang内存管理基本是参考tcmalloc来进行的。go内存管理本质上是一个内存池,只不过内部做了很多优化:自动伸缩内存池大小,合理切割内存块。 基本概念: Page:页,一块 8 K大小的内存空间。Go向操作系统申请和…...
【Python】Web学习笔记_flask(5)——会话cookie对象
HTTP是无状态协议,一次请求响应结束后,服务器不会留下对方信息,对于大部分web程序来说,是不方便的,所以有了cookie技术,通过在请求和响应保温中添加cookie数据来保存客户端的状态。 html代码: …...
用友U8+CRM 任意文件上传+读取漏洞复现
0x01 产品简介 用友U8 CRM客户关系管理系统是一款专业的企业级CRM软件,旨在帮助企业高效管理客户关系、提升销售业绩和提供优质的客户服务。 0x02 漏洞概述 用友 U8 CRM客户关系管理系统 getemaildata.php 文件存在任意文件上传和任意文件读取漏洞,攻击…...
【量化课程】08_1.机器学习量化策略基础实战
文章目录 1. 常用机器学习模型1.1 回归模型1.2 分类模型1.2.1 SVC介绍1.2.2 SVC在量化策略中的应用 2. 机器学习量化策略实现的基本步骤3. 策略实现 1. 常用机器学习模型 1.1 回归模型 线性回归多层感知器回归自适应提升树回归随机森林回归 1.2 分类模型 线性分类支持向量机…...
Mongodb 更新集合的方法到底有几种 (中) ?
更新方法 Mongodb 使用以下几种方法来更新文档 , Mongodb V5.0 使用 mongosh 客户端: db.collection.updateOne(<filter>, <update>, <options>) db.collection.updateMany(<filter>, <update>, <options>) db.c…...
预演攻击:谁需要网络靶场,何时需要
"网络演习 "和 "网络靶场 "几乎是当今信息安全领域最流行的词汇。与专业术语不同的是,这些词对于企业和高级管理人员来说早已耳熟能详:法律要求他们进行演习,包括网络演习,而网络射击场也经常在企业界和媒体上…...
【Linux】IO多路转接——poll接口
目录 poll初识 poll函数 poll服务器 poll的优点 poll的缺点 poll初识 poll也是系统提供的一个多路转接接口。 poll系统调用也可以让我们的程序同时监视多个文件描述符上的事件是否就绪,和select的定位是一样的,适用场景也是一样的。 poll函数 po…...
系统架构设计师---OSI七层协议
目录 OSI七层协议 各层主要功能和详细说明 Internet协议的主要协议及其层次关系...
Next.js - Route Groups(路由组)
路由组的作用 在应用程序目录中,嵌套文件夹通常会映射到 URL 路径。不过,您可以将文件夹标记为路由组,以防止该文件夹包含在路由的 URL 路径中。 这样就可以在不影响 URL 路径结构的情况下,将路由段和项目文件组织到逻辑组中。 …...
musl libc ldso 动态加载研究笔记:01
前言 musl 是一个轻量级的标准C库,建立在系统调用之上,可以认为是【用户态】的C 库,与 glibc 或者 uClibc 属于同一类。 基于 musl 的 gcc 工具链包括交叉编译工具链,可以用于编译 Linux 或者其他的操作系统,如当前 L…...
2023 年 4 款适用于安卓手机的最佳 PDF 转 Word 转换器
尝试在 Android 上将 PDF 文档转换为 Word 文件?好吧,您可能会发现要让它发挥作用几乎是不可能的,至少在没有任何额外工具的情况下是这样。Web 上有用于此类转换的选项,但本地不一定会发生任何情况(可能除了一个应用程…...
ESP32S3上电重启问题终极排查指南:从电源纹波到SPI电阻的实战经验
ESP32S3上电重启问题终极排查指南:从电源纹波到SPI电阻的实战经验 当ESP32S3开发板在批量生产中出现上电重启问题时,硬件工程师往往会面临一场与时间赛跑的挑战。最近在调试某款智能家居网关时,我们遇到了典型的RTC_SW_SYS_RST错误ÿ…...
Stash缓存机制终极指南:5个配置技巧大幅提升媒体访问速度
Stash缓存机制终极指南:5个配置技巧大幅提升媒体访问速度 【免费下载链接】stash An organizer for your porn, written in Go. Documentation: https://docs.stashapp.cc 项目地址: https://gitcode.com/gh_mirrors/st/stash Stash是一款用Go语言开发的媒体…...
nli-distilroberta-base零基础上手:非算法工程师也能部署的逻辑推理服务
nli-distilroberta-base零基础上手:非算法工程师也能部署的逻辑推理服务 1. 项目介绍 nli-distilroberta-base是一个基于DistilRoBERTa模型的自然语言推理(NLI)服务,专门为没有算法背景的开发者设计。它能帮你快速判断两个句子之间的逻辑关系ÿ…...
OpenClaw技能开发:用GLM-4.7-Flash打造专属翻译助手
OpenClaw技能开发:用GLM-4.7-Flash打造专属翻译助手 1. 为什么需要本地化翻译助手 作为技术文档的频繁使用者,我经常需要在中英文资料间切换查阅。传统翻译工具存在几个痛点:一是商业API的调用限制和隐私顾虑,二是通用翻译对技术…...
别再用multiprocessing了!:用subinterpreter + shared_memory构建单进程10万QPS无锁API网关(附压测对比图)
第一章:Python 无锁 GIL 环境下的并发模型实战案例Python 的全局解释器锁(GIL)长期被视为 CPU 密集型并发的瓶颈,但现代 Python 生态已通过多进程、协程、外部 C 扩展及子解释器等机制,在特定场景下实现真正意义上的“…...
PCIe配置寄存器详解:从枚举到设备驱动的完整流程(附常见问题排查)
PCIe配置寄存器深度解析:从硬件初始化到驱动加载的全链路实践指南 1. PCIe设备枚举的核心机制 PCIe设备的枚举过程是系统启动时最关键的硬件发现阶段。当主板通电后,CPU首先通过根联合体(Root Complex)发起总线扫描,这…...
Xcode设备兼容性难题的高效破解方案:跨版本调试支持工具(含自动化部署功能)
Xcode设备兼容性难题的高效破解方案:跨版本调试支持工具(含自动化部署功能) 【免费下载链接】iOSDeviceSupport All versions of iOS Device Support 项目地址: https://gitcode.com/gh_mirrors/ios/iOSDeviceSupport 当iOS开发者面对…...
Pixel Dream Workshop详细步骤:日志系统集成与渲染异常诊断方法
Pixel Dream Workshop详细步骤:日志系统集成与渲染异常诊断方法 1. 像素幻梦创意工坊简介 Pixel Dream Workshop(像素幻梦创意工坊)是一款基于FLUX.1-dev扩散模型的下一代像素艺术生成工具。它采用明亮的16-bit像素风格界面设计,…...
如何高效使用Boss-Key老板键:专业窗口隐藏工具的完整使用指南
如何高效使用Boss-Key老板键:专业窗口隐藏工具的完整使用指南 【免费下载链接】Boss-Key 老板来了?快用Boss-Key老板键一键隐藏静音当前窗口!上班摸鱼必备神器 项目地址: https://gitcode.com/gh_mirrors/bo/Boss-Key 在当今快节奏的办…...
Zotero文献管理效率革命:Ethereal Style插件深度应用指南
Zotero文献管理效率革命:Ethereal Style插件深度应用指南 【免费下载链接】zotero-style zotero-style - 一个 Zotero 插件,提供了一系列功能来增强 Zotero 的用户体验,如阅读进度可视化和标签管理,适合研究人员和学者。 项目地…...
