在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

SpringCloud組件性能優(yōu)化技巧分享

jf_ro2CN3Fa ? 來源:CSDN ? 作者:柚幾哥哥 ? 2023-08-16 09:47 ? 次閱讀

Springcloud的性能問題

應(yīng)用服務(wù)組件調(diào)優(yōu)

Servlet 容器 優(yōu)化

Feign 配置優(yōu)化

Gateway組件調(diào)優(yōu)

Zuul配置 優(yōu)化

hystrix配置 優(yōu)化

ribbon 優(yōu)化

Springcloud的性能問題

Springcloud 原始的配置,性能是很低的,大家可以使用Jmeter測試一下,QPS不會到50。要做到高并發(fā),需要做不少的配置優(yōu)化,主要的配置優(yōu)化有以下幾點(diǎn):

Feign 配置優(yōu)化

hystrix配置 優(yōu)化

ribbon 優(yōu)化

Servlet 容器 優(yōu)化

Zuul配置 優(yōu)化

應(yīng)用服務(wù)組件調(diào)優(yōu)

Servlet 容器 優(yōu)化

默認(rèn)情況下,Spring Boot 使用 Tomcat 來作為內(nèi)嵌的 Servlet 容器,可以將 Web 服務(wù)器切換到 Undertow 來提高應(yīng)用性能,Undertow 是紅帽公司開發(fā)的一款基于 NIO 的高性能 Web 嵌入式

Zuul使用的內(nèi)置容器默認(rèn)是Tomcat,可以將其換成undertow,可以顯著減少線程的數(shù)量,替換方式即在pom中添加以下內(nèi)容:

第一步,移除Tomcat 依賴


org.springframework.boot
spring-boot-starter-web


org.springframework.boot
spring-boot-starter-tomcat

第二步,增加Untertow 依賴


org.springframework.boot
spring-boot-starter-undertow

第三步,Undertow 的屬性配置

server:
undertow:
io-threads:16
worker-threads:256
buffer-size:1024
buffers-per-region:1024
direct-buffers:true

server.undertow.io-threads: 設(shè)置IO線程數(shù), 它主要執(zhí)行非阻塞的任務(wù),它們會負(fù)責(zé)多個連接, 默認(rèn)設(shè)置每個CPU核心一個線程,不要設(shè)置過大,如果過大,啟動項(xiàng)目會報錯:打開文件數(shù)過多

server.undertow.worker-threads`:阻塞任務(wù)線程池,當(dāng)執(zhí)行類似servlet請求阻塞IO操作,undertow會從這個線程池中取得線程,它的值設(shè)置取決于系統(tǒng)線程執(zhí)行任務(wù)的阻塞系數(shù),默認(rèn)值是`IO線程數(shù)*8

server.undertow.buffer-size: 以下的配置會影響buffer,這些buffer會用于服務(wù)器連接的IO操作,有點(diǎn)類似netty的池化內(nèi)存管理,每塊buffer的空間大小,越小的空間被利用越充分,不要設(shè)置太大,以免影響其他應(yīng)用,合適即可

server.undertow.buffers-per-region`:每個區(qū)分配的buffer數(shù)量,所以pool的大小是`buffer-size*buffers-per-region

server.undertow.direct-buffers: 是否分配的直接內(nèi)存(NIO直接分配的堆外內(nèi)存)

07dfe8c0-3bd5-11ee-9e74-dac502259ad0.png

Feign 配置優(yōu)化

feign 默認(rèn)不啟用hystrix,需要手動指定 feign.hystrix.enabled=true 開啟熔斷

feign 啟用壓縮也是一種有效的性能優(yōu)化方式,具體的配置如下

feign:
compression:
request:
enabled:true
mime-types:text/xml,application/xml,application/json
response:
enabled:true

feign HTTP請求方式選擇

feign默認(rèn)使用的是基于JDK提供的URLConnection調(diào)用HTTP接口,不具備連接池,所以資源開銷上有點(diǎn)影響,經(jīng)測試JDK的URLConnection比Apache HttpClient快很多倍。Apache HttpClient和okhttp都支持配置連接池功能,也可以使用okhttp請求方式。

當(dāng)使用HttpClient時,可如下設(shè)置:

feign:
httpclient:
enabled:true
max-connections:1000
max-connections-per-route:200

當(dāng)使用OKHttp時,可如下設(shè)置:

feign:
okhttp:
enabled:true
httpclient:
max-connections:1000
max-connections-per-route:200

max-connections 設(shè)置整個連接池最大連接數(shù)(該值默認(rèn)為200), 根據(jù)自己的場景決定

max-connections-per-route 設(shè)置路由的默認(rèn)最大連接(該值默認(rèn)為50),限制數(shù)量實(shí)際使用

07fde3a2-3bd5-11ee-9e74-dac502259ad0.png

基于 Spring Cloud Alibaba + Gateway + Nacos + RocketMQ + Vue & Element 實(shí)現(xiàn)的后臺管理系統(tǒng) + 用戶小程序,支持 RBAC 動態(tài)權(quán)限、多租戶、數(shù)據(jù)權(quán)限、工作流、三方登錄、支付、短信、商城等功能

項(xiàng)目地址:https://github.com/YunaiV/yudao-cloud

視頻教程:https://doc.iocoder.cn/video/

Gateway組件調(diào)優(yōu)

Zuul配置 優(yōu)化

我們知道Hystrix有隔離策略:THREAD 以及SEMAPHORE ,默認(rèn)是 SEMAPHORE 。

Zuul默認(rèn)是使用信號量隔離,并且信號量的大小是100,請求的并發(fā)線程超過100就會報錯,可以調(diào)大該信號量的最大值來提高性能,配置如下:

zuul:
semaphore:
max-semaphores:5000

表示,當(dāng)Zuul的隔離策略為SEMAPHORE時,設(shè)置指定服務(wù)的最大信號量為5000。對于特定的微服務(wù),可以通過下面的方式,設(shè)置最大信號量

設(shè)置默認(rèn)最大信號量:

zuul:
semaphore:
max-semaphores:5000#默認(rèn)值

設(shè)置指定服務(wù)的最大信號量:

zuul:
eureka:
:
semaphore:
max-semaphores:5000
08221ae2-3bd5-11ee-9e74-dac502259ad0.png

為了方便ThreadLocal的使用,也可以改為使用線程隔離的策略,這種場景下,就需要調(diào)大hystrix線程池線程大小,該線程池默認(rèn)10個線程,調(diào)整的配置示例如下:

zuul:
ribbonIsolationStrategy:THREAD
hystrix:
threadpool:
default:
coreSize:100
maximumSize:400
allowMaximumSizeToDivergeFromCoreSize:true
maxQueueSize:-1

hystrix.threadpool.default.allowMaximumSizeToDivergeFromCoreSize:是否讓maximumSize生效,false的話則只有coreSize會生效

hystrix.threadpool.default.maxQueueSize:線程池的隊(duì)列大小,-1代表使用SynchronousQueue隊(duì)列

hystrix.threadpool.default.maximumSize:最大線程數(shù)量

hystrix.threadpool.default.allowMaximumSizeToDivergeFromCoreSize:是否讓maximumSize生效,false的話則只有coreSize會生效

hystrix.threadpool.default.maxQueueSize:線程池的隊(duì)列大小,-1代表使用SynchronousQueue隊(duì)列

zuul.ribbon-isolation-strategy:設(shè)置線程隔離,thread 線程隔離,SEMAPHORE 表示信號量隔離

默認(rèn)配置都可以去HystrixThreadPoolProperties和ZuulProperties這兩個java文件中查找

hystrix配置 優(yōu)化

首先需要設(shè)置參數(shù)hystrix.threadpool.default.coreSize 來指定熔斷隔離的線程數(shù),這個數(shù)需要調(diào)優(yōu),經(jīng)測試線程數(shù)我們設(shè)置為和提供方的容器線程差不多,吞吐量高許多。

其次,啟用Hystrix后,很多服務(wù)當(dāng)?shù)谝淮卧L問的時候都會失敗 是因?yàn)槌跏蓟?fù)載均衡一系列操作已經(jīng)超出了超時時間了,因?yàn)槟J(rèn)的超時時間為1S,需要修改超時時間參數(shù),方可解決這個問題。

參考的hystrix配置如下:

hystrix:
threadpool:
default:
coreSize:500
command:
default:
circuitBreaker:
requestVolumeThreshold:1000
fallback:
enabled:true
execution:
isolation:
thread:
timeoutInMilliseconds:100000

hystrix.command.default: 全局的作用域,作用的所有的hystrix的客戶端,如果需要對某個微服務(wù),可以寫serviceId

hystrix.command.default.fallback.enabled 是否開啟回退方法

hystrix.command.default.execution.isolation.thread.timeoutInMilliseconds 請求處理的超時時間,缺省為1000,表示默認(rèn)的超時時間為1S

hystrix.threadpool.default.coreSize 核心線程池數(shù)量

hystrix.command.default.fallback.isolation.semaphore.maxConcurrentRequests 回退最大線程數(shù)

hystrix.command.default.circuitBreaker.requestVolumeThreshold 熔斷器失敗的個數(shù),進(jìn)入熔斷器的請求達(dá)到1000時服務(wù)降級(之后的請求直接進(jìn)入熔斷器)

083560ca-3bd5-11ee-9e74-dac502259ad0.png

ribbon 優(yōu)化

Ribbon進(jìn)行客戶端負(fù)載均衡的Client并不是在服務(wù)啟動的時候就初始化好的,而是在調(diào)用的時候才會去創(chuàng)建相應(yīng)的Client,所以第一次調(diào)用的耗時不僅僅包含發(fā)送HTTP請求的時間,還包含了創(chuàng)建RibbonClient的時間,這樣一來如果創(chuàng)建時間速度較慢,同時設(shè)置的超時時間又比較短的話,很容易就會出現(xiàn)上面所描述的顯現(xiàn)。

因此我們可以通過設(shè)置:

ribbon:
eager-load:
enabled:true
clients:service-1,service-2,service-n
086635e2-3bd5-11ee-9e74-dac502259ad0.png

參數(shù)說明:

ribbon.eager-load.enabled : 開啟Ribbon的饑餓加載模式

ribbon.eager-load.clients: 指定需要饑餓加載的服務(wù)名,如果不指定服務(wù)名稱,饑餓加載模式無效

Zuul的饑餓加載,沒有設(shè)計專門的參數(shù)來配置,而是直接采用了讀取路由配置來進(jìn)行饑餓加載。所以,如果我們使用默認(rèn)路由,而沒有通過配置的方式指定具體路由規(guī)則,那么 zuul.ribbon.eager-load.enabled=true 的配置就沒有什么作用了。

如果需要真正啟用Zuul 的饑餓加載,需要通過zuul.ignored-services=*來忽略所有的默認(rèn)路由,讓所有路由配置均維護(hù)在配置文件中,以達(dá)到網(wǎng)關(guān)啟動的時候就加載好各個路由的負(fù)載均衡對象。

關(guān)于Zuul 的默認(rèn)路由,這里詳細(xì)介紹一下。假設(shè)你的注冊服務(wù)中心有三個已經(jīng)注冊的服務(wù)名稱service-a,service-b,service-c。但是在zuul配置文件中,只映射了service-a,service-b,如下:

zuul:
ribbon:
eager-load:
enabled:true
ignored-services:‘*’
routes:
a:
path:/a/**
serviceId:service-a
b:
path:/b/**
serviceId:service-b

這里,雖然沒有配置service-c的映射,但是,由于zuul有默認(rèn)的映射機(jī)制,還是可以通過Url,訪問到你的service-c服務(wù),如果不想向外界暴露默認(rèn)的服務(wù)映射,可以加上 zuul.ignored-services:*




審核編輯:劉清

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • URL
    URL
    +關(guān)注

    關(guān)注

    0

    文章

    139

    瀏覽量

    15807
  • JAVA語言
    +關(guān)注

    關(guān)注

    0

    文章

    138

    瀏覽量

    20552
  • QPS
    QPS
    +關(guān)注

    關(guān)注

    0

    文章

    24

    瀏覽量

    8934
  • HTTP接口
    +關(guān)注

    關(guān)注

    0

    文章

    21

    瀏覽量

    1954

原文標(biāo)題:SpringCloud 組件性能優(yōu)化技巧

文章出處:【微信號:芋道源碼,微信公眾號:芋道源碼】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦
    熱點(diǎn)推薦

    一款3605電源芯片的性能優(yōu)化與改進(jìn)思路

    在電源設(shè)計中,確保電源轉(zhuǎn)換器在各種工作條件下都能提供穩(wěn)定和高效的性能至關(guān)重要。 ASP3605是一款高效同步降壓轉(zhuǎn)換器,它提供了多種調(diào)節(jié)選項(xiàng),以優(yōu)化電源的性能。特別是,ITH(Error
    發(fā)表于 08-23 14:34

    HarmonyOS Web開發(fā)性能優(yōu)化指導(dǎo)

    一、概述 在移動互聯(lián)網(wǎng)時代,應(yīng)用的頁面渲染速度對于用戶體驗(yàn)至關(guān)重要。相對于原生頁面,Web頁面的性能存在多方面的技術(shù)挑戰(zhàn)。本文以HarmonyOS的ArkWeb組件為基礎(chǔ),介紹了Web頁面加載中
    發(fā)表于 12-06 08:41

    HarmonyOS優(yōu)化應(yīng)用內(nèi)存占用問題性能優(yōu)化

    應(yīng)用開發(fā)過程中注重內(nèi)存管理,積極采取措施來減少內(nèi)存占用,以優(yōu)化應(yīng)用程序的性能和用戶體驗(yàn)。 HarmonyOS提供了一些內(nèi)存管理的工具和接口,幫助開發(fā)者有效地管理內(nèi)存資源: onMemoryLevel接口
    發(fā)表于 05-21 11:27

    鴻蒙5開發(fā)寶藏案例分享---性能優(yōu)化案例解析

    (true) // 避免子組件溢出繪制 ?結(jié)語 這次挖寶之旅真的太值了!原來鴻蒙早就把性能優(yōu)化的“彈藥”備好了,只是藏得有點(diǎn)深?** 趕緊用上****Code Linter+體檢工具
    發(fā)表于 06-12 16:36

    鴻蒙5開發(fā)寶藏案例分享---應(yīng)用性能優(yōu)化指南

    鴻蒙性能優(yōu)化實(shí)戰(zhàn)指南:讓你的應(yīng)用飛起來 ? 大家好!今天咱們聊聊鴻蒙(HarmonyOS)應(yīng)用性能優(yōu)化的實(shí)戰(zhàn)技巧。結(jié)合官方文檔和最佳實(shí)踐,我整理了8大核心
    發(fā)表于 06-12 17:17

    鴻蒙5開發(fā)寶藏案例分享---長列表性能優(yōu)化解析

    性能暴增 : **組件創(chuàng)建耗時:**10.2ms → 0.97ms **萬條列表滑動丟幀率:**3.7% → 0% ?** 5. **布局優(yōu)化 —— 減少嵌套層級 原理 :扁平化布局減少視圖
    發(fā)表于 06-12 17:40

    鴻蒙5開發(fā)寶藏案例分享---Swiper組件性能優(yōu)化實(shí)戰(zhàn)

    鴻蒙寶藏:Swiper組件性能優(yōu)化實(shí)戰(zhàn),告別卡頓丟幀! 大家好!最近在鴻蒙開發(fā)時,偶然發(fā)現(xiàn)了官方文檔里埋藏的 性能優(yōu)化寶藏案例 ,尤其是&l
    發(fā)表于 06-12 17:53

    HBase性能優(yōu)化方法總結(jié)

    HBase是Hadoop生態(tài)系統(tǒng)中的一個組件,是一個分布式、面向列的開源數(shù)據(jù)庫,可以支持?jǐn)?shù)百萬列、超過10億行的數(shù)據(jù)存儲,因此,對HBase性能提出了一定的要求,那么如何進(jìn)行HBase性能優(yōu)化
    發(fā)表于 04-20 17:16

    css的性能優(yōu)化重點(diǎn)

    網(wǎng)站前端性能優(yōu)化之javascript和css
    發(fā)表于 10-21 09:12

    前端性能怎么優(yōu)化

    前端性能優(yōu)化常見方式
    發(fā)表于 03-27 11:42

    web常用的性能優(yōu)化

    web常用性能優(yōu)化
    發(fā)表于 06-13 10:57

    優(yōu)化揚(yáng)聲器組件的三個例子分享

    無論是用于家庭影院系統(tǒng)、健身房、家庭野餐還是音樂會場地,揚(yáng)聲器都要表現(xiàn)出最佳的性能。為了設(shè)計高性能揚(yáng)聲器,我們可以使用仿真優(yōu)化它的各種組件。例如,我們可以使用 COMSOL Multi
    的頭像 發(fā)表于 04-19 16:44 ?2285次閱讀
    <b class='flag-5'>優(yōu)化</b>揚(yáng)聲器<b class='flag-5'>組件</b>的三個例子分享

    springcloud五大組件

    Spring Cloud是一個基于Spring Boot的開發(fā)工具包,可用于快速構(gòu)建微服務(wù)架構(gòu)的應(yīng)用程序。它將常見的微服務(wù)架構(gòu)模式抽象為五個核心組件:服務(wù)發(fā)現(xiàn)、服務(wù)注冊、負(fù)載均衡、斷路器和配置管理
    的頭像 發(fā)表于 11-16 11:04 ?1808次閱讀

    springcloud alibaba 五大組件

    Spring Cloud Alibaba是Spring Cloud的一個子項(xiàng)目,該項(xiàng)目致力于為構(gòu)建分布式應(yīng)用提供一站式解決方案。它基于阿里巴巴的底層Java開源框架,主要包含以下五大組件: 服務(wù)注冊
    的頭像 發(fā)表于 12-03 16:30 ?2.1w次閱讀

    如何優(yōu)化總線系統(tǒng)的性能

    總線系統(tǒng)是計算機(jī)和其他電子設(shè)備中用于傳輸數(shù)據(jù)的關(guān)鍵組件。性能優(yōu)化可以提高數(shù)據(jù)傳輸速率、降低延遲,并增強(qiáng)系統(tǒng)的可靠性和擴(kuò)展性。 1. 理解總線系統(tǒng) 總線類型 :介紹不同類型的總線,如PCIe、USB
    的頭像 發(fā)表于 12-31 09:54 ?608次閱讀
    主站蜘蛛池模板: 久久99精品福利久久久 | 欧美色爱综合网 | 能看的黄网 | 嫩草网 | 四虎影午夜成年免费精品 | 午夜一级 | 免费 在线播放 | 色avav| 欧美一级一一特黄 | 久久久夜色精品国产噜噜 | 最新在线网址 | 国产成人啪午夜精品网站 | 久久精品国产99精品最新 | 嫩草影院久久国产精品 | 亚洲精品久久久久久婷婷 | 无夜精品久久久久久 | 亚洲色图20p | 久久亚洲aⅴ精品网站婷婷 久久亚洲成人 | 三级完整在线观看高清视频 | 色亚洲视频 | 一级女人毛片人一女人 | 奇米成人影视 | 精品国产成人三级在线观看 | 一级特黄牲大片免费视频 | 西西人体44rt高清午夜 | 尤物久久99热国产综合 | 国产免费糟蹋美女视频 | 最近2018中文字幕免费看在线 | 性xxxxx| 尻老逼| 国内色综合精品视频在线 | 97午夜精品 | 国产图片区| 2018天天干天天射 | 偷窥自拍亚洲色图 | 天天cao在线 | 欧洲人体超大胆露私视频 | 狠狠躁夜夜躁人人爽天天段 | 国产黄色在线视频 | 爱爱帝国亚洲一区二区三区 | 欧美aaaaa性bbbbb小妇 |