欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

 更新時間: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ù)器都會創(chuàng)建一個線程來處理該請求

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

max-threads:
Tomcat可創(chuàng)建的最大工作線程數(shù),默認(rèn)200, 每一個線程處理一個請求,超過這個請求數(shù)后,客戶端請求只能排隊,等有線程釋放才能處理。(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ù)時,還有新的HTTP請求到來,這時tomcat會將該請求放在等待隊列中,這個acceptCount就是指能夠接受的最大等待數(shù),默認(rèn)100。
如果等待隊列也被放滿了,這個時候再來新的請求就會被tomcat拒絕(connection refused),隊列也做緩沖池用,但也不能無限長,不但消耗內(nèi)存,而且出隊入隊也消耗CPU。

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

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

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

2. Tomcat經(jīng)驗值

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

1核2g內(nèi)存,線程數(shù)經(jīng)驗值200;
4核8g內(nèi)存,線程數(shù)經(jīng)驗值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ù)。 一旦達(dá)到限制,操作系統(tǒng)仍然可以根據(jù)“acceptCount”屬性接受連接。
  • server.tomcat.accept-count: 100
當(dāng)所有可能的請求處理線程都在使用時,傳入連接請求會被放進(jìn)隊列中等待,等待隊列的最大隊列長度。
  • server.tomcat.threads.max: 200
服務(wù)器在給定時間能接受的連接數(shù)為server.tomcat.max-connections, 但并不是同時在工作,最大工作線程數(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 行的時間。即socket調(diào)用read()等待讀取的時間,如果在設(shè)置的時間內(nèi)沒有請求,則會主動斷開連接
  • server.tomcat.keep-alive-timeout: (Duration)
在連接關(guān)閉之前等待另一個 HTTP 請求的時間。默認(rèn)和 connectionTimeout的值一樣。 設(shè)置為 -1 時不會超時。
  • 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 時,長連接和管道被禁用,可以避免tomcat產(chǎn)生大量的TIME_WAIT連接,從而從一定程度上避免tomcat假死。 當(dāng)設(shè)置為 -1 時,允許無限數(shù)量的管道或長連接請求。
即表示該連接最大支持的請求數(shù)。超過該請求數(shù)的連接也將被關(guān)閉(此時就會返回一個Connection: close頭給客戶端)

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

# 是否緩沖輸出,使其僅定期刷新。
server.tomcat.accesslog.buffered: true
# 是否檢查日志文件是否存在,以便在外部進(jìn)程重命名它時可以重新創(chuàng)建它。
server.tomcat.accesslog.check-exists: false
# 是否僅在“ServletRequest.getAttribute(conditionIf)”不產(chǎn)生 null 時才啟用請求的日志記錄。
server.tomcat.accesslog.condition-if: String
# 是否僅在“ServletRequest.getAttribute(conditionUnless)”產(chǎn)生 null 時才啟用請求記錄。
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
# 用于格式化日志條目和日志文件名后綴中的時間戳的語言環(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
# 是否推遲在文件名中包含日期戳,直到輪換時間。
server.tomcat.accesslog.rename-on-rotate: false
# 為請求使用的 IP 地址、主機名、協(xié)議和端口設(shè)置請求屬性。
server.tomcat.accesslog.request-attributes-enabled: false
# 是否啟用訪問日志輪換。
server.tomcat.accesslog.rotate: true
# 日志文件名后綴。
server.tomcat.accesslog.suffix: .log
# 逗號分隔的附加模式列表,匹配 jar 以忽略 TLD 掃描。 特殊的“?” 和 '*' 字符可以在模式中使用,以分別匹配一個和一個字符以及零個或多個字符。
server.tomcat.additional-tld-skip-patterns: List<String>
# 調(diào)用 backgroundProcess 方法之間的延遲。 如果未指定持續(xù)時間后綴,則將使用秒。
server.tomcat.background-processor-delay: 10s
# Tomcat 基目錄。 如果未指定,則使用臨時目錄。
server.tomcat.basedir: File
# 是否應(yīng)該啟用 Tomcat 的 MBean Registry。
server.tomcat.mbeanregistry.enabled: false
# 將保留在緩存中并在后續(xù)請求中重用的最大空閑處理器數(shù)。 當(dāng)設(shè)置為 -1 時,緩存將不受限制,理論上的最大大小等于最大連接數(shù)。
server.tomcat.processor-cache: 200
# 是否應(yīng)通過將 / 附加到路徑來重定向?qū)ι舷挛母恼埱蟆?使用在代理處終止的 SSL 時,此屬性應(yīng)設(shè)置為 false。
server.tomcat.redirect-context-root: true
# URI 路徑中應(yīng)允許的其他未編碼字符的逗號分隔列表。 只允許使用“< > [ \ ] ^ ` { | }”。
server.tomcat.relaxed-path-chars: List<Character>
# URI 查詢字符串中應(yīng)允許的其他未編碼字符的逗號分隔列表。 只允許使用“< > [ \ ] ^ ` { | }”。
server.tomcat.relaxed-query-chars: List<Character>
# 從中提取遠(yuǎn)程主機的 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)資源緩存的生存時間。
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)的實現(xiàn)的文章就介紹到這了,更多相關(guān)SpringBoot tomcat參數(shù)調(diào)優(yōu)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Java多線程并發(fā)編程(互斥鎖Reentrant Lock)

    Java多線程并發(fā)編程(互斥鎖Reentrant Lock)

    這篇文章主要介紹了ReentrantLock 互斥鎖,在同一時間只能被一個線程所占有,在被持有后并未釋放之前,其他線程若想獲得該鎖只能等待或放棄,需要的朋友可以參考下
    2017-05-05
  • Android開發(fā)中Socket通信的基本實現(xiàn)方法講解

    Android開發(fā)中Socket通信的基本實現(xiàn)方法講解

    這篇文章主要介紹了Android開發(fā)中Socket通信的基本實現(xiàn)方法講解,是安卓上移動互聯(lián)網(wǎng)程序開發(fā)的基礎(chǔ),需要的朋友可以參考下
    2015-12-12
  • Java中的位運算符號解讀(&、|、^、~、<<、>>、>>>)

    Java中的位運算符號解讀(&、|、^、~、<<、>>、>>>)

    這篇文章主要介紹了Java中的位運算符號(&、|、^、~、<<、>>、>>>),具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-08-08
  • 淺談Java幾種文件讀取方式耗時

    淺談Java幾種文件讀取方式耗時

    本文主要介紹了淺談Java幾種文件讀取方式耗時,主要介紹了4種,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-04-04
  • Java?深入理解創(chuàng)建型設(shè)計模式之原型模式

    Java?深入理解創(chuàng)建型設(shè)計模式之原型模式

    原型(Prototype)模式的定義如下:用一個已經(jīng)創(chuàng)建的實例作為原型,通過復(fù)制該原型對象來創(chuàng)建一個和原型相同或相似的新對象。在這里,原型實例指定了要創(chuàng)建的對象的種類。用這種方式創(chuàng)建對象非常高效,根本無須知道對象創(chuàng)建的細(xì)節(jié)
    2022-02-02
  • Java編程中線程池的基本概念和使用

    Java編程中線程池的基本概念和使用

    這篇文章主要介紹了Java編程中線程池的基本概念和使用,多線程編程是使Java程序?qū)崿F(xiàn)并發(fā)的一個重要手段,需要的朋友可以參考下
    2015-11-11
  • Spring?Boot?RestController接口輸出到終端的操作代碼

    Spring?Boot?RestController接口輸出到終端的操作代碼

    這篇文章主要介紹了Spring?Boot?RestController接口如何輸出到終端,使用?HttpServletResponse?類,可以在使用curl執(zhí)行?Spring?Boot?REST接口的同時,在控制臺輸出一些信息,給運維人員知道當(dāng)前命令執(zhí)行的狀態(tài),感興趣的朋友跟隨小編一起看看吧
    2023-09-09
  • spring-Kafka中的@KafkaListener深入源碼解讀

    spring-Kafka中的@KafkaListener深入源碼解讀

    本文主要通過深入了解源碼,梳理從spring啟動到真正監(jiān)聽kafka消息的這套流程,從spring啟動開始處理@KafkaListener,本文結(jié)合實例流程圖給大家講解的非常詳細(xì),需要的朋友參考下
    2023-02-02
  • SpringBoot+JWT實現(xiàn)注冊、登錄、狀態(tài)續(xù)簽流程分析

    SpringBoot+JWT實現(xiàn)注冊、登錄、狀態(tài)續(xù)簽流程分析

    這篇文章主要介紹了SpringBoot+JWT實現(xiàn)注冊、登錄、狀態(tài)續(xù)簽【登錄保持】,本文通過示例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-06-06
  • Java利用反射獲取object的屬性和值代碼示例

    Java利用反射獲取object的屬性和值代碼示例

    這篇文章主要介紹了Java利用反射獲取object的屬性和值代碼示例,具有一定借鑒價值,需要的朋友可以參考下。
    2017-12-12

最新評論