springboot使用Undertow容器

一、簡介

Undertow是一個Java開發的靈活的高性能Web服務器,提供包括阻塞和基於NIO的非阻塞機制。Undertow是紅帽公司的開源產品,是Wildfly默認的Web服務器。
SpringBoot2中可以將Web服務器切換到Undertow來提高應用性能。

Untertow 的特點

Servlet4.0 支持:它提供了對 Servlet4.0 的支持。
WebSocket 支持:對 Web Socket 完全支持,包括JSR-356,用以滿足 Web 應用巨大數量的客戶端。
嵌套性:它不需要容器,只需通過 API 即可快速搭建 Web 服務器。
靈活性:交由鏈式Handler配置和處理請求,可以最小化按需加載模塊,無須加載多餘功能。
輕量級:它是一個 Web 服務器,但不像傳統的 Web 服務器有容器概念,它由兩個核心 Jar 包組成,加載一個 Web 應用可以小於 10MB 內存。

參考博客:https://blog.csdn.net/syx1065001748/article/details/98883727

https://blog.csdn.net/moshowgame/article/details/84985765

二、springboot使用Undertow

1、排除tomcat依賴,添加Undertow

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
             <!-- 排除Tomcat依賴 -->
            <exclusions>
                <exclusion>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-starter-tomcat</artifactId>
                </exclusion>
            </exclusions>
        </dependency>

        <!-- 添加 Undertow依賴 -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-undertow</artifactId>
        </dependency>
2、設置Undertow運行參數(可默認)

# 設置IO線程數, 它主要執行非阻塞的任務,它們會負責多個連接, 默認設置每個CPU核心一個線程
# 不要設置過大,如果過大,啓動項目會報錯:打開文件數過多

server.undertow.io-threads=16

# 阻塞任務線程池, 當執行類似servlet請求阻塞IO操作, undertow會從這個線程池中取得線程
# 它的值設置取決於系統線程執行任務的阻塞係數,默認值是IO線程數*8
server.undertow.worker-threads=256

# 以下的配置會影響buffer,這些buffer會用於服務器連接的IO操作,有點類似netty的池化內存管理
# 每塊buffer的空間大小,越小的空間被利用越充分,不要設置太大,以免影響其他應用,合適即可
server.undertow.buffer-size=1024

# 每個區分配的buffer數量 , 所以pool的大小是buffer-size * buffers-per-region
server.undertow.buffers-per-region=1024

# 是否分配的直接內存(NIO直接分配的堆外內存)
server.undertow.direct-buffers=true

3、運行測試

發佈了91 篇原創文章 · 獲贊 36 · 訪問量 9萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章