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

SpringBoot內(nèi)置tomcat參數(shù)調(diào)優(yōu)的實(shí)現(xiàn)

 更新時(shí)間:2023年09月12日 08:54:43   作者:風(fēng)情客家__  
springboot內(nèi)置了tomcat, 并給我們設(shè)置了默認(rèn)參數(shù), 我們怎么樣修改springboot內(nèi)置的tomcat參數(shù),本文就詳細(xì)的來介紹一下,感興趣的可以了解一下

1. 默認(rèn)配置

可通過org.springframework.boot.autoconfigure.web.ServerProperties查看,其中包括屬性tomcat、jetty、undertow三種服務(wù)器的設(shè)置,默認(rèn)啟用tomcat。

# tomcat 8
server:
  tomcat:
    max-connections: 10000 #最大連接數(shù),默認(rèn)為10000
    accept-count: 100 # 最大連接等待數(shù),默認(rèn)100 
    max-threads: 200  #最大工作線程數(shù),默認(rèn)200
    min-spare-threads: 10 #最小工作線程數(shù),默認(rèn)10
# tomcat 9
server:
  tomcat:
    max-connections: 8192
    accept-count: 100
    threads:
      max: 200
      min-spare: 10

詳解:maxConnections、maxThreads、acceptCount

每一次HTTP請求到達(dá)Web服務(wù)器,Web服務(wù)器都會(huì)創(chuàng)建一個(gè)線程來處理該請求

min-spare-threads:
最小備用線程數(shù),tomcat啟動(dòng)時(shí)的初始化的線程數(shù),默認(rèn)10。(適當(dāng)增大一些,以便應(yīng)對突然增長的訪問量)

max-threads:
Tomcat可創(chuàng)建的最大工作線程數(shù),默認(rèn)200, 每一個(gè)線程處理一個(gè)請求,超過這個(gè)請求數(shù)后,客戶端請求只能排隊(duì),等有線程釋放才能處理。(4核8g內(nèi)存,線程數(shù)800,一般是 核數(shù)*200 。操作系統(tǒng)做線程之間的切換調(diào)度是有系統(tǒng)開銷的,所以不是越多越好。)

accept-count:
當(dāng)調(diào)用Web服務(wù)的HTTP請求數(shù)達(dá)到tomcat的最大線程數(shù)時(shí),還有新的HTTP請求到來,這時(shí)tomcat會(huì)將該請求放在等待隊(duì)列中,這個(gè)acceptCount就是指能夠接受的最大等待數(shù),默認(rèn)100。
如果等待隊(duì)列也被放滿了,這個(gè)時(shí)候再來新的請求就會(huì)被tomcat拒絕(connection refused),隊(duì)列也做緩沖池用,但也不能無限長,不但消耗內(nèi)存,而且出隊(duì)入隊(duì)也消耗CPU。

max-connections:
這個(gè)參數(shù)是指在同一時(shí)間,tomcat能夠接受的最大連接數(shù)。一般這個(gè)值要大于(max-threads)+(accept-count)。

tomcat的最大線程數(shù),最大排隊(duì)數(shù)多少合適

1、Tomcat默認(rèn)的HTTP實(shí)現(xiàn)是采用阻塞式的Socket通信,每個(gè)請求都需要?jiǎng)?chuàng)建一個(gè)線程處理,當(dāng)一個(gè)進(jìn)程有500個(gè)線程在跑的話,那性能已經(jīng)是很低很低了。Tomcat 默認(rèn)配置的最大請求數(shù)是150,也就是說同時(shí)支持150個(gè)并發(fā)。
2、SpringBoot內(nèi)置Tomcat,在默認(rèn)設(shè)置中,Tomcat的最大線程數(shù)是 200,最大連接數(shù)是 10000。支持的并發(fā)量是指連接數(shù)。Tomcat有兩種處理連接的模式,一種是 BIO,一個(gè)線程只處理一個(gè)連接,另一種就是 NIO,一個(gè)線程處理多個(gè)連接。
3、啟動(dòng)tomcat。進(jìn)入apache-tomcat-0.0.M3下的bin目錄,雙擊startup.bat 在瀏覽器中的輸入10.1:8080,回車。查看tomcat是否啟動(dòng)成功。看到熟悉的小貓,啟動(dòng)成功了!查看tomcat服務(wù)器的最大連接數(shù)。
4、在tomcat配置文件server.xml中的Connector /配置中,和連接數(shù)相關(guān)的參數(shù)有:maxThreads=150 表示最多同時(shí)處理150個(gè)連接,Tomcat使用線程來處理接收的每個(gè)請求。這個(gè)值表示Tomcat可創(chuàng)建的最大的線程數(shù)。默認(rèn)值200。
5、maxSpareThreads:最大空閑線程數(shù),如果超過這個(gè)值,會(huì)關(guān)閉無用的線程。acceptCount:當(dāng)處理請求超過此值時(shí),將后來請求放到隊(duì)列中等待。
6、 最大線程數(shù)設(shè)置多少合適和tomcat的運(yùn)行環(huán)境有關(guān)的,比如硬件,內(nèi)存等等,適當(dāng)可以給tomcat的運(yùn)行最大分配的內(nèi)存加大點(diǎn)。另外,用一些工具: 比較ab, loadrunner做做壓力測試。

2. Tomcat經(jīng)驗(yàn)值

max-threads線程數(shù)的經(jīng)驗(yàn)值為:

1核2g內(nèi)存,線程數(shù)經(jīng)驗(yàn)值200;
4核8g內(nèi)存,線程數(shù)經(jīng)驗(yàn)值800。

4核8g內(nèi)存,建議值:

server:
  tomcat:
    max-connections: 10000 
    accept-count: 1000
    max-threads: 800 
    min-spare-threads: 100

3. 其它參數(shù)詳解

  • server.tomcat.max-connections: 8192
服務(wù)器在任何給定時(shí)間接受和處理的最大連接數(shù)。 一旦達(dá)到限制,操作系統(tǒng)仍然可以根據(jù)“acceptCount”屬性接受連接。
  • server.tomcat.accept-count: 100
當(dāng)所有可能的請求處理線程都在使用時(shí),傳入連接請求會(huì)被放進(jìn)隊(duì)列中等待,等待隊(duì)列的最大隊(duì)列長度。
  • server.tomcat.threads.max: 200
服務(wù)器在給定時(shí)間能接受的連接數(shù)為server.tomcat.max-connections, 但并不是同時(shí)在工作,最大工作線程數(shù)。
  • server.tomcat.threads.min-spare: 10
有最大的工作線程數(shù), 就有最小工作線程數(shù)。
  • server.tomcat.uri-encoding: UTF-8
用于解碼 URI 的字符編碼。
  • server.tomcat.max-http-form-post-size: 2MB
任何 HTTP POST請求中表單內(nèi)容的最大大小。理論上POST請求的大小是無限制的,但是tomcat設(shè)定了請求大小為兩兆,如要取消限制,則應(yīng)該將值設(shè)為 -1。
  • server.tomcat.max-swallow-size: 2MB
請求正文的大小。
  • server.tomcat.connection-timeout: 60000ms
連接器在接受連接后將等待呈現(xiàn)請求 URI 行的時(shí)間。即socket調(diào)用read()等待讀取的時(shí)間,如果在設(shè)置的時(shí)間內(nèi)沒有請求,則會(huì)主動(dòng)斷開連接
  • server.tomcat.keep-alive-timeout: (Duration)
在連接關(guān)閉之前等待另一個(gè) HTTP 請求的時(shí)間。默認(rèn)和 connectionTimeout的值一樣。 設(shè)置為 -1 時(shí)不會(huì)超時(shí)。
  • server.tomcat.max-keep-alive-requests: 100
Maximum number of HTTP requests that can be pipelined before the connection is closed. When set to 0 or 1, keep-alive and pipelining are disabled. When set to -1, an unlimited number of pipelined or keep-alive requests are allowed.
在連接關(guān)閉之前可以通過管道傳輸?shù)淖畲?HTTP 請求數(shù)。 當(dāng)設(shè)置為 0 或 1 時(shí),長連接和管道被禁用,可以避免tomcat產(chǎn)生大量的TIME_WAIT連接,從而從一定程度上避免tomcat假死。 當(dāng)設(shè)置為 -1 時(shí),允許無限數(shù)量的管道或長連接請求。
即表示該連接最大支持的請求數(shù)。超過該請求數(shù)的連接也將被關(guān)閉(此時(shí)就會(huì)返回一個(gè)Connection: close頭給客戶端)

其他一些不常用的設(shè)置

# 是否緩沖輸出,使其僅定期刷新。
server.tomcat.accesslog.buffered: true
# 是否檢查日志文件是否存在,以便在外部進(jìn)程重命名它時(shí)可以重新創(chuàng)建它。
server.tomcat.accesslog.check-exists: false
# 是否僅在“ServletRequest.getAttribute(conditionIf)”不產(chǎn)生 null 時(shí)才啟用請求的日志記錄。
server.tomcat.accesslog.condition-if: String
# 是否僅在“ServletRequest.getAttribute(conditionUnless)”產(chǎn)生 null 時(shí)才啟用請求記錄。
server.tomcat.accesslog.condition-unless: String
# 創(chuàng)建日志文件的目錄。 可以是絕對的或相對于 Tomcat 基本目錄。
server.tomcat.accesslog.directory: logs
# 啟用訪問日志。
server.tomcat.accesslog.enabled: false
# 日志文件使用的字符集。 默認(rèn)為系統(tǒng)默認(rèn)字符集。
server.tomcat.accesslog.encoding: String
# 放置在日志文件名中的日期格式。
server.tomcat.accesslog.file-date-format: .yyyy-MM-dd
# 是否使用 RFC 5952 定義的 IPv6 規(guī)范表示格式。
server.tomcat.accesslog.ipv6-canonical: false
# 用于格式化日志條目和日志文件名后綴中的時(shí)間戳的語言環(huán)境。 默認(rèn)為 Java 進(jìn)程的默認(rèn)語言環(huán)境。
server.tomcat.accesslog.locale: String
# 刪除訪問日志文件之前保留的天數(shù)。
server.tomcat.accesslog.max-days: -1
# 訪問日志的格式模式。
server.tomcat.accesslog.pattern: common
# 日志文件名前綴。
server.tomcat.accesslog.prefix: access_log
# 是否推遲在文件名中包含日期戳,直到輪換時(shí)間。
server.tomcat.accesslog.rename-on-rotate: false
# 為請求使用的 IP 地址、主機(jī)名、協(xié)議和端口設(shè)置請求屬性。
server.tomcat.accesslog.request-attributes-enabled: false
# 是否啟用訪問日志輪換。
server.tomcat.accesslog.rotate: true
# 日志文件名后綴。
server.tomcat.accesslog.suffix: .log
# 逗號(hào)分隔的附加模式列表,匹配 jar 以忽略 TLD 掃描。 特殊的“?” 和 '*' 字符可以在模式中使用,以分別匹配一個(gè)和一個(gè)字符以及零個(gè)或多個(gè)字符。
server.tomcat.additional-tld-skip-patterns: List<String>
# 調(diào)用 backgroundProcess 方法之間的延遲。 如果未指定持續(xù)時(shí)間后綴,則將使用秒。
server.tomcat.background-processor-delay: 10s
# Tomcat 基目錄。 如果未指定,則使用臨時(shí)目錄。
server.tomcat.basedir: File
# 是否應(yīng)該啟用 Tomcat 的 MBean Registry。
server.tomcat.mbeanregistry.enabled: false
# 將保留在緩存中并在后續(xù)請求中重用的最大空閑處理器數(shù)。 當(dāng)設(shè)置為 -1 時(shí),緩存將不受限制,理論上的最大大小等于最大連接數(shù)。
server.tomcat.processor-cache: 200
# 是否應(yīng)通過將 / 附加到路徑來重定向?qū)ι舷挛母恼埱蟆?使用在代理處終止的 SSL 時(shí),此屬性應(yīng)設(shè)置為 false。
server.tomcat.redirect-context-root: true
# URI 路徑中應(yīng)允許的其他未編碼字符的逗號(hào)分隔列表。 只允許使用“< > [ \ ] ^ ` { | }”。
server.tomcat.relaxed-path-chars: List<Character>
# URI 查詢字符串中應(yīng)允許的其他未編碼字符的逗號(hào)分隔列表。 只允許使用“< > [ \ ] ^ ` { | }”。
server.tomcat.relaxed-query-chars: List<Character>
# 從中提取遠(yuǎn)程主機(jī)的 HTTP 表頭的名稱。
server.tomcat.remoteip.host-header: X-Forwarded-Host
# 匹配要信任的代理的正則表達(dá)式。
server.tomcat.remoteip.internal-proxies: 10\.\d{1,3}\.\d{1,3}\.\d{1,3}|192\.168\.\d{1,3}\.\d{1,3}|169\.254\.\d{1,3}\.\d{1,3}|127\.\d{1,3}\.\d{1,3}\.\d{1,3}|172\.1[6-9]{1}\.\d{1,3}\.\d{1,3}|172\.2[0-9]{1}\.\d{1,3}\.\d{1,3}|172\.3[0-1]{1}\.\d{1,3}\.\d{1,3}|0:0:0:0:0:0:0:1|::1
# 用于覆蓋原始端口值的 HTTP 標(biāo)頭的名稱。
server.tomcat.remoteip.port-header: X-Forwarded-Port
# 包含傳入?yún)f(xié)議的標(biāo)頭,通常命名為“X-Forwarded-Proto”。
server.tomcat.remoteip.protocol-header: X-Forwarded-Proto
# 指示傳入請求是否使用 SSL 的協(xié)議頭的值.
server.tomcat.remoteip.protocol-header-https-value: https
# 從中提取遠(yuǎn)程 IP 的 HTTP 表頭的名稱。 例如,`X-FORWARDED-FOR`。
server.tomcat.remoteip.remote-ip-header: X-FORWARDED-FOR
# 此 Web 應(yīng)用程序是否允許靜態(tài)資源緩存。
server.tomcat.resource.allow-caching: true
# 靜態(tài)資源緩存的生存時(shí)間。
server.tomcat.resource.cache-ttl: Duration
# 通過調(diào)用 sendRedirect 生成的 HTTP 1.1 和更高版本的位置標(biāo)頭將使用相對重定向還是絕對重定向。
server.tomcat.use-relative-redirects: false

到此這篇關(guān)于SpringBoot內(nèi)置tomcat參數(shù)調(diào)優(yōu)的實(shí)現(xiàn)的文章就介紹到這了,更多相關(guān)SpringBoot tomcat參數(shù)調(diào)優(yōu)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 詳解Spring中singleton?bean如何同時(shí)服務(wù)多個(gè)請求

    詳解Spring中singleton?bean如何同時(shí)服務(wù)多個(gè)請求

    這篇文章主要介紹了詳解Spring中singleton?bean如何同時(shí)服務(wù)多個(gè)請求
    2023-02-02
  • Java中Semaphore(信號(hào)量)的使用方法

    Java中Semaphore(信號(hào)量)的使用方法

    這篇文章主要介紹了Java中Semaphore(信號(hào)量)的使用方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-08-08
  • Jackson多態(tài)序列化圖文詳解

    Jackson多態(tài)序列化圖文詳解

    jackson允許配置多態(tài)類型處理,當(dāng)進(jìn)行反序列話時(shí),JSON數(shù)據(jù)匹配的對象可能有多個(gè)子類型,為了正確的讀取對象的類型,我們需要添加一些類型信息,下面這篇文章主要給大家介紹了關(guān)于Jackson多態(tài)序列化的相關(guān)資料,需要的朋友可以參考下
    2022-06-06
  • java獲取類名的方法詳解

    java獲取類名的方法詳解

    這篇文章主要介紹了java獲取類名的問題詳解,文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下
    2022-07-07
  • Springboot實(shí)現(xiàn)從controller中跳轉(zhuǎn)到指定前端頁面

    Springboot實(shí)現(xiàn)從controller中跳轉(zhuǎn)到指定前端頁面

    Springboot實(shí)現(xiàn)從controller中跳轉(zhuǎn)到指定前端頁面方式,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-10-10
  • 如何解決遇到的錯(cuò)誤信息?java:?找不到符號(hào)?符號(hào):?變量?log

    如何解決遇到的錯(cuò)誤信息?java:?找不到符號(hào)?符號(hào):?變量?log

    使用Lombok的@Slf4j注解時(shí)出現(xiàn)log變量找不到問題,這篇文章主要介紹了如何解決遇到的錯(cuò)誤信息?java:?找不到符號(hào)?符號(hào):?變量?log的相關(guān)資料,文中將解決的辦法介紹的非常詳細(xì),需要的朋友可以參考下
    2025-05-05
  • Java 如何優(yōu)雅的拋出業(yè)務(wù)異常

    Java 如何優(yōu)雅的拋出業(yè)務(wù)異常

    這篇文章主要介紹了Java 如何優(yōu)雅的拋出業(yè)務(wù)異常,幫助大家更好的理解和使用Java,感興趣的朋友可以了解下
    2020-12-12
  • Java中final,finally,finalize?有什么區(qū)別

    Java中final,finally,finalize?有什么區(qū)別

    這篇文章主要給大家分享的是?Java中final,finally,finalize?到底有什么區(qū)別,文章圍繞final,finally,finalize的相關(guān)資料展開詳細(xì)內(nèi)容,具有一定的參考的價(jià)值,需要的朋友可以參考一下
    2021-11-11
  • Java Calendar類的使用總結(jié)實(shí)例

    Java Calendar類的使用總結(jié)實(shí)例

    這篇文章主要介紹了Java Calendar類的使用總結(jié)實(shí)例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-03-03
  • Spring之ShutDown?Hook死鎖現(xiàn)象解讀

    Spring之ShutDown?Hook死鎖現(xiàn)象解讀

    這篇文章主要介紹了Spring之ShutDown?Hook死鎖現(xiàn)象解讀,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-04-04

最新評(píng)論

江北区| 内乡县| 赣榆县| 清水河县| 葫芦岛市| 漳州市| 马龙县| 高尔夫| 宁津县| 孝昌县| 象山县| 伊金霍洛旗| 沙河市| 阿合奇县| 永嘉县| SHOW| 延长县| 彭阳县| 通海县| 北海市| 原阳县| 安达市| 密云县| 左贡县| 宜宾县| 河津市| 平凉市| 福泉市| 读书| 厦门市| 精河县| 清新县| 沅江市| 牙克石市| 随州市| 盈江县| 嘉祥县| 藁城市| 资源县| 水城县| 富锦市|