最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

springboot中undertow容器的使用及說明

 更新時(shí)間:2025年11月28日 08:56:43   作者:趕路人兒  
Undertow是一個(gè)輕量級、高性能的Java?Web服務(wù)器,支持HTTP/2、WebSocket等,Spring?Boot中使用Undertow需要排除Tomcat依賴并添加Undertow依賴,Undertow的配置項(xiàng)包括訪問日志、緩沖區(qū)大小、解碼URL等,性能方面

1、undertow介紹

官網(wǎng):https://undertow.io/

Undertow 是一個(gè)輕量級的、高性能的 Java Web 服務(wù)器,由 JBoss 開發(fā)并開源。它是基于非阻塞(non-blocking)的I/O模型,具有低資源消耗和高并發(fā)處理能力。

Undertown 的優(yōu)勢如下:

  • 支持 HTTP/2:Undertow 開箱即支持 HTTP/2,無需重寫啟動類路徑。
  • 支持 HTTP Upgrade:允許通過 HTTP 端口復(fù)用多種協(xié)議。
  • 支持 Web Socket:Undertow 提供對 Web Sockets 的全面支持,包括 JSR-356 支持。
  • Servlet 4.0:Undertow 支持 Servlet 4.0,包括對嵌入式 Servlet 的支持。還可以在同一部署中混合使用 Servlet 和原生 undertow 非阻塞 handler。
  • 可嵌入式:只需幾行代碼,即可將 Undertow 嵌入應(yīng)用程序或獨(dú)立運(yùn)行。
  • 靈活性:Undertow 通過鏈?zhǔn)?handler 進(jìn)行配置,可以根據(jù)需求靈活地添加功能。
  • 在很多場景的測試下, Undertow 的性能都高于 Tomcat。天生適合作為 Spring Boot 應(yīng)用的嵌入式服務(wù)器!

說明:tomcat主要支持以下幾種IO 模型:

  1. BIO(Blocking I/O):傳統(tǒng)的同步阻塞IO,每個(gè)請求都對應(yīng)一個(gè)線程,在處理速度慢的情況下容易造成線程堆積。
  2. NIO(Non-blocking I/O):使用JDK 1.4 和 java.nio 包,支持非阻塞I/O,能夠通過少量線程處理大量并發(fā)連接,提高了服務(wù)器的吞吐量和并發(fā)能力。Tomcat 8 及以上版本默認(rèn)就運(yùn)行在NIO 模式下。
  3. APR(Apache Portable Runtime):通過JNI 調(diào)用Apache HTTP 服務(wù)器的核心動態(tài)鏈接庫,利用操作系統(tǒng)的非阻塞IO 能力,可以大幅提升處理靜態(tài)文件和高并發(fā)的性能。
  4. AIO(Asynchronous I/O,也稱NIO.2):從JDK 7 開始支持的異步非阻塞IO,是目前最先進(jìn)的IO 模型。

2、springboot中使用undertow

Spring Boot 默認(rèn)使用 Tomcat 作為嵌入式 Servlet 服務(wù)器,所以 spring-boot-starter-web 默認(rèn)依賴了 spring-boot-starter-tomcat。

要使用 Undertow 首先要從 spring-boot-starter-web 排除 spring-boot-starter-tomcat,再添加 spring-boot-starter-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>
        <exclusions>
            <!-- 排除 undertow-websockets-jsr 依賴 -->
            <exclusion>
              <groupId>io.undertow</groupId>
              <artifactId>undertow-websockets-jsr</artifactId>
            </exclusion>
        </exclusions>
</dependency>

在springboot中指定端口:(同tomcat)

server.port=8081
server.servlet.session.timeout=2M

undertow配置:

配置項(xiàng)說明示例
server.undertow.accesslog.dirUndertow 訪問日志目錄。
server.undertow.accesslog.enabled是否啟用訪問日志。false
server.undertow.accesslog.pattern訪問日志的格式。common
server.undertow.accesslog.prefix日志文件前綴。access_log.
server.undertow.accesslog.rotate是否開啟日志滾動。true
server.undertow.accesslog.suffix日志文件后綴。log
server.undertow.always-set-keep-alive是否應(yīng)在所有響應(yīng)中添加 Connection: keep-alive Header,即使 HTTP 規(guī)范沒有要求。true
server.undertow.buffer-size每個(gè) buffer 的大小。默認(rèn)大小是根據(jù) JVM 可用的最大內(nèi)存確定的。
server.undertow.decode-slash是否應(yīng)解碼已編碼的斜線字符(%2F)。如果前端代理不執(zhí)行相同的解碼,解碼可能會導(dǎo)致安全問題。只有在傳統(tǒng)應(yīng)用程序需要時(shí)才啟用。設(shè)置后,server.undertow.allow-encoded-slash 無效。
server.undertow.decode-url是否對 URL 進(jìn)行解碼。禁用時(shí),URL 中的百分比編碼字符將保持原樣。true
server.undertow.direct-buffers是否在 Java 堆外分配 buffer。默認(rèn)大小是根據(jù) JVM 可用的最大內(nèi)存確定的。
server.undertow.eager-filter-init是否應(yīng)在啟動時(shí)初始化 servlet Filtertrue
server.undertow.max-cookies允許的最大 cookie 數(shù)量。這一限制是為了防止基于哈希碰撞的 DOS 攻擊。200
server.undertow.max-headers允許的最大 header 數(shù)量。這一限制是為了防止基于哈希碰撞的 DOS 攻擊。
server.undertow.max-http-post-sizeHTTP post content 的最大大小。當(dāng)值為-1(默認(rèn)值)時(shí),大小為無限。-1B
server.undertow.max-parameters允許查詢或路徑參數(shù)的最大數(shù)量。這一限制是為了防止基于哈希碰撞的 DOS 攻擊。
server.undertow.no-request-timeout在服務(wù)器關(guān)閉連接之前,連接在不處理請求的情況下閑置的時(shí)間。
server.undertow.options.server.*在 io.undertow.UndertowOptions 中定義的服務(wù)器選項(xiàng)。
server.undertow.options.socket.*在 org.xnio.Options 中定義的 socket 選項(xiàng)。
server.undertow.preserve-path-on-forward轉(zhuǎn)發(fā)請求時(shí)是否保留請求路徑。false
server.undertow.threads.ioI/O 線程數(shù)。默認(rèn)值為可用的處理器數(shù)量。
server.undertow.threads.workerWorker 線程數(shù)。默認(rèn)為 I/O 線程數(shù)的 8 倍。
server.undertow.url-charset用于解碼 URL 的字符集。UTF-8

3、性能對比

1)吞吐量和響應(yīng)時(shí)間

2)cpu使用率:Undertow < Jetty < Tomcat

3)內(nèi)存使用率:Undertow < Jetty < Tomcat

4)線程數(shù):Undertow < Jetty < Tomcat

總結(jié)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Java輸入流Scanner/BufferedReader使用方法示例

    Java輸入流Scanner/BufferedReader使用方法示例

    這篇文章主要介紹了Java輸入流Scanner/BufferedReader使用方法,大家看示例吧
    2013-11-11
  • 使用Feign配置請求頭以及支持Https協(xié)議

    使用Feign配置請求頭以及支持Https協(xié)議

    這篇文章主要介紹了使用Feign配置請求頭以及支持Https協(xié)議,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-03-03
  • Java中JSON處理工具類使用詳解

    Java中JSON處理工具類使用詳解

    這篇文章主要為大家詳細(xì)介紹了Java中JSON處理工具類的使用,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-01-01
  • java利用遞歸調(diào)用實(shí)現(xiàn)樹形菜單的樣式

    java利用遞歸調(diào)用實(shí)現(xiàn)樹形菜單的樣式

    這篇文章主要給大家介紹了關(guān)于java利用遞歸調(diào)用實(shí)現(xiàn)樹形菜單樣式的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2018-09-09
  • Java多線程之Park和Unpark原理

    Java多線程之Park和Unpark原理

    這篇文章主要介紹了Java多線程之Park和Unpark原理,需文中有非常詳細(xì)的代碼示例,對正在學(xué)習(xí)java的小伙伴們有非常好的幫助,要的朋友可以參考下
    2021-04-04
  • ES模糊查詢失效的坑以及解決方案

    ES模糊查詢失效的坑以及解決方案

    ES的查詢原理是按分詞建立索引,根據(jù)要保存的內(nèi)容先分詞,然后按照分詞的結(jié)果建立索引,這篇文章主要給大家介紹了關(guān)于ES模糊查詢失效的坑及解決方案的相關(guān)資料,需要的朋友可以參考下
    2023-09-09
  • idea啟動項(xiàng)目報(bào)端口號沖突或被占用的解決方法

    idea啟動項(xiàng)目報(bào)端口號沖突或被占用的解決方法

    這篇文章主要介紹了idea啟動項(xiàng)目報(bào)端口號沖突或被占用的解決方法,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-10-10
  • java讀取圖片并顯示方式

    java讀取圖片并顯示方式

    這篇文章主要介紹了java讀取圖片并顯示方式,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-11-11
  • Java學(xué)習(xí)筆記之異常處理

    Java學(xué)習(xí)筆記之異常處理

    這篇文章主要為大家詳細(xì)介紹了Java學(xué)習(xí)筆記之異常處理,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-10-10
  • java基于jdbc連接mysql數(shù)據(jù)庫功能實(shí)例詳解

    java基于jdbc連接mysql數(shù)據(jù)庫功能實(shí)例詳解

    這篇文章主要介紹了java基于jdbc連接mysql數(shù)據(jù)庫功能,結(jié)合實(shí)例形式詳細(xì)分析了jdbc連接mysql數(shù)據(jù)庫的原理、步驟、實(shí)現(xiàn)方法及相關(guān)操作技巧,需要的朋友可以參考下
    2017-10-10

最新評論

呈贡县| 繁昌县| 固安县| 丰顺县| 湖口县| 光泽县| 安徽省| 乌审旗| 高清| 清丰县| 仁化县| 邛崃市| 张家口市| 金秀| 临沂市| 长治市| 祁东县| 德州市| 陵水| 安新县| 泾川县| 临颍县| 宁河县| 德格县| 曲靖市| 灵璧县| 河西区| 文化| 合山市| 清流县| 永年县| 陕西省| 朝阳区| 闽清县| 轮台县| 兴海县| 延安市| 奈曼旗| 宝应县| 浮梁县| 银川市|