女人自慰AV免费观看内涵网,日韩国产剧情在线观看网址,神马电影网特片网,最新一级电影欧美,在线观看亚洲欧美日韩,黄色视频在线播放免费观看,ABO涨奶期羡澄,第一导航fulione,美女主播操b

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

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

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

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

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

Springcloud的性能問(wèn)題

應(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的性能問(wèn)題

Springcloud 原始的配置,性能是很低的,大家可以使用Jmeter測(cè)試一下,QPS不會(huì)到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 來(lái)作為內(nèi)嵌的 Servlet 容器,可以將 Web 服務(wù)器切換到 Undertow 來(lái)提高應(yīng)用性能,Undertow 是紅帽公司開(kāi)發(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ù),它們會(huì)負(fù)責(zé)多個(gè)連接, 默認(rèn)設(shè)置每個(gè)CPU核心一個(gè)線程,不要設(shè)置過(guò)大,如果過(guò)大,啟動(dòng)項(xiàng)目會(huì)報(bào)錯(cuò):打開(kāi)文件數(shù)過(guò)多

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

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

server.undertow.buffers-per-region`:每個(gè)區(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,需要手動(dòng)指定 feign.hystrix.enabled=true 開(kāi)啟熔斷

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

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

feign HTTP請(qǐng)求方式選擇

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

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

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

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

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

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

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ái)管理系統(tǒng) + 用戶小程序,支持 RBAC 動(dòng)態(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)是使用信號(hào)量隔離,并且信號(hào)量的大小是100,請(qǐng)求的并發(fā)線程超過(guò)100就會(huì)報(bào)錯(cuò),可以調(diào)大該信號(hào)量的最大值來(lái)提高性能,配置如下:

zuul:
semaphore:
max-semaphores:5000

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

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

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

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

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

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

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

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

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

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

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

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

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

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

hystrix配置 優(yōu)化

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

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

參考的hystrix配置如下:

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

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

hystrix.command.default.fallback.enabled 是否開(kāi)啟回退方法

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

hystrix.threadpool.default.coreSize 核心線程池?cái)?shù)量

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

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

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

ribbon 優(yōu)化

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

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

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

參數(shù)說(shuō)明:

ribbon.eager-load.enabled : 開(kāi)啟Ribbon的饑餓加載模式

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

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

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

關(guān)于Zuul 的默認(rèn)路由,這里詳細(xì)介紹一下。假設(shè)你的注冊(cè)服務(wù)中心有三個(gè)已經(jīng)注冊(cè)的服務(wù)名稱(chēng)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

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




審核編輯:劉清

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

    關(guān)注

    0

    文章

    139

    瀏覽量

    15780
  • JAVA語(yǔ)言
    +關(guān)注

    關(guān)注

    0

    文章

    138

    瀏覽量

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

    關(guān)注

    0

    文章

    24

    瀏覽量

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

    關(guān)注

    0

    文章

    21

    瀏覽量

    1945

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

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

收藏 人收藏

    評(píng)論

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

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

    在電源設(shè)計(jì)中,確保電源轉(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開(kāi)發(fā)性能優(yōu)化指導(dǎo)

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

    HarmonyOS應(yīng)用閃屏問(wèn)題性能優(yōu)化

    ({ space: 12, scroller: this.scroller }) { // 使用懶加載組件渲染數(shù)據(jù) ForEach(this.newsData, (item: NewsData) =&
    發(fā)表于 05-19 14:36

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

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

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

    ,不同系統(tǒng)的閾值不同)時(shí),系統(tǒng)可能會(huì)認(rèn)為應(yīng)用存在嚴(yán)重的內(nèi)存問(wèn)題,并可能會(huì)強(qiáng)制殺死該應(yīng)用進(jìn)程,以保證設(shè)備系統(tǒng)的穩(wěn)定性和性能。為了避免應(yīng)用被系統(tǒng)殺死,開(kāi)發(fā)者可以考慮以下兩點(diǎn): 優(yōu)化資源使用:通過(guò)合理設(shè)置圖片
    發(fā)表于 05-24 17:20

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

    HBase是Hadoop生態(tài)系統(tǒng)中的一個(gè)組件,是一個(gè)分布式、面向列的開(kāi)源數(shù)據(jù)庫(kù),可以支持?jǐn)?shù)百萬(wàn)列、超過(guò)10億行的數(shù)據(jù)存儲(chǔ),因此,對(duì)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)化常見(jiàn)方式
    發(fā)表于 03-27 11:42

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

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

    AN0004—AT32 性能優(yōu)化

    本帖最后由 貪玩 于 2022-2-16 21:42 編輯 AN0004—AT32 性能優(yōu)化這篇應(yīng)用筆記描述了如何通過(guò)軟件方法提高AT32的運(yùn)行效能。AT32 性能優(yōu)化概述
    發(fā)表于 08-15 14:38

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

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

    springcloud五大組件

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

    springcloud alibaba 五大組件

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

    組件測(cè)試儀如何提高太陽(yáng)能組件性能?

      JD-EL4太陽(yáng)能組件測(cè)試儀在太陽(yáng)能行業(yè)中扮演著至關(guān)重要的角色,不僅可以檢測(cè)組件的缺陷和問(wèn)題,還可以幫助提高太陽(yáng)能組件性能。以下是太陽(yáng)能組件
    的頭像 發(fā)表于 05-21 17:13 ?1044次閱讀

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

    總線系統(tǒng)是計(jì)算機(jī)和其他電子設(shè)備中用于傳輸數(shù)據(jù)的關(guān)鍵組件。性能優(yōu)化可以提高數(shù)據(jù)傳輸速率、降低延遲,并增強(qiáng)系統(tǒng)的可靠性和擴(kuò)展性。 1. 理解總線系統(tǒng) 總線類(lèi)型 :介紹不同類(lèi)型的總線,如PCIe、USB
    的頭像 發(fā)表于 12-31 09:54 ?531次閱讀