Springboot內(nèi)置Tomcat配置參數(shù)調(diào)優(yōu)方式
Springboot內(nèi)置Tomcat配置參數(shù)調(diào)優(yōu)
Springboot內(nèi)置Tomcat配置參數(shù)調(diào)優(yōu),首先,線程數(shù)是一個(gè)重點(diǎn),每一次HTTP請(qǐng)求到達(dá)Web服務(wù)器,Web服務(wù)器都會(huì)創(chuàng)建一個(gè)線程來(lái)處理該請(qǐng)求,該參數(shù)決定了應(yīng)用服務(wù)同時(shí)可以處理多少個(gè)HTTP請(qǐng)求。
比較重要的有兩個(gè):初始線程數(shù)和最大線程數(shù)。
- 初始線程數(shù):
保障啟動(dòng)的時(shí)候,如果有大量用戶訪問(wèn),能夠很穩(wěn)定的接受請(qǐng)求。最大線程數(shù):用來(lái)保證系統(tǒng)的穩(wěn)定性。
- 超時(shí)時(shí)間:
用來(lái)保障連接數(shù)不容易被壓垮。如果大批量的請(qǐng)求過(guò)來(lái),延遲比較高,很容易把線程數(shù)用光,這時(shí)就需要提高超時(shí)時(shí)間。這種情況在生產(chǎn)中是比較常見(jiàn)的 ,一旦網(wǎng)絡(luò)不穩(wěn)定,寧愿丟包也不能把服務(wù)器壓垮。
min-spare-threads
:最小備用線程數(shù),tomcat啟動(dòng)時(shí)的初始化的線程數(shù),默認(rèn)10。(適當(dāng)增大一些,以便應(yīng)對(duì)突然增長(zhǎng)的訪問(wèn)量)max-threads
:Tomcat可創(chuàng)建的最大的線程數(shù),每一個(gè)線程處理一個(gè)請(qǐng)求,超過(guò)這個(gè)請(qǐng)求數(shù)后,客戶端請(qǐng)求只能排隊(duì),等有線程釋放才能處理。最大工作線程數(shù),默認(rèn)200。(4核8g內(nèi)存,線程數(shù)800,一般是核數(shù)*200。操作系統(tǒng)做線程之間的切換調(diào)度是有系統(tǒng)開(kāi)銷的,所以不是越多越好。)accept-count
:當(dāng)調(diào)用Web服務(wù)的HTTP請(qǐng)求數(shù)達(dá)到tomcat的最大線程數(shù)時(shí),還有新的HTTP請(qǐng)求到來(lái),這時(shí)tomcat會(huì)將該請(qǐng)求放在等待隊(duì)列中,這個(gè)acceptCount就是指能夠接受的最大等待數(shù),默認(rèn)100。如果等待隊(duì)列也被放滿了,這個(gè)時(shí)候再來(lái)新的請(qǐng)求就會(huì)被tomcat拒絕(connection refused),隊(duì)列也做緩沖池用,但也不能無(wú)限長(zhǎng),不但消耗內(nèi)存,而且出隊(duì)入隊(duì)也消耗CPU。max-connections
:這個(gè)參數(shù)是指在同一時(shí)間,tomcat能夠接受的最大連接數(shù)。一般這個(gè)值要大于(max-threads)+(accept-count)。connection-timeout
:最長(zhǎng)等待時(shí)間,如果沒(méi)有數(shù)據(jù)進(jìn)來(lái),等待一段時(shí)間后斷開(kāi)連接,釋放線程。
在spring boot配置文件中application.yml,添加以下配置:
server: tomcat: uri-encoding: UTF-8 #最小線程數(shù) min-spare-threads: 100 #最大線程數(shù) max-threads: 800 #最大鏈接數(shù) max-connections: 10000 #最大等待隊(duì)列長(zhǎng)度 accept-count: 500
Tomcat調(diào)優(yōu)常見(jiàn)參數(shù)配置
Tomcat 是一個(gè)流行的 Web 應(yīng)用服務(wù)器,以下是一些常見(jiàn)的 Tomcat 配置參數(shù):
1.端口配置
- HTTP 端口:tomcat 默認(rèn)使用 8080 端口,可以通過(guò)修改 server.xml 文件中的 Connector 配置來(lái)更改端口號(hào)。
- HTTPS 端口:如果需要啟用 HTTPS 協(xié)議,需要在 server.xml 中添加 Connector 配置,并指定證書(shū)等相關(guān)參數(shù)。
- AJP 端口:如果需要與 Apache 或其他 Web 服務(wù)器進(jìn)行集成,可以使用 AJP 協(xié)議,在 server.xml 中添加 Connector 配置,并指定 AJP 端口號(hào)和協(xié)議版本。
2.日志配置
- AccessLog:Tomcat 的 AccessLog 組件可以記錄每個(gè)請(qǐng)求的詳細(xì)信息,包括請(qǐng)求 URL、響應(yīng)狀態(tài)碼、訪問(wèn)時(shí)間等,可以在 server.xml 中進(jìn)行配置。
- Logging:Tomcat 的 Logging 組件可以記錄 Tomcat 自身的運(yùn)行日志,可以在 conf/logging.properties 中進(jìn)行配置。
3.連接池配置
- 最大連接數(shù)(maxConnections):指定連接池中的最大連接數(shù)。
- 最小空閑連接數(shù)(minIdle):指定連接池中保留的最小空閑連接數(shù)。
- 連接等待超時(shí)時(shí)間(maxWait):當(dāng)連接池中的連接數(shù)已達(dá)最大值時(shí),請(qǐng)求新連接的等待時(shí)間。
4.內(nèi)存配置
- JVM 內(nèi)存參數(shù):指定 Tomcat 使用的 JVM 內(nèi)存大小,包括初始內(nèi)存大?。╔ms)、最大內(nèi)存大?。╔mx)、新生代內(nèi)存大?。╔X:NewSize)、Eden 區(qū)大小(XX:MaxNewSize)等。
- PermGen 參數(shù):PermGen 是 JVM 中用于存放類信息、字符串常量等的區(qū)域,可以通過(guò) -XX:PermSize 和 -XX:MaxPermSize 參數(shù)來(lái)指定 PermGen 的大小。
5.虛擬主機(jī)配置
- Host 配置:在 server.xml 中配置多個(gè) Host 可以實(shí)現(xiàn)虛擬主機(jī)的配置,每個(gè) Host 對(duì)應(yīng)一個(gè)獨(dú)立的 Web 應(yīng)用,可以擁有自己的域名、文檔根目錄等屬性。
- Context 配置:在每個(gè) Host 中可以配置多個(gè) Context,每個(gè) Context 對(duì)應(yīng)一個(gè)獨(dú)立的 Web 應(yīng)用,可以擁有自己的 Web 應(yīng)用名稱、上下文路徑、文檔根目錄等屬性。
6.安全配置
- 用戶認(rèn)證(Authentication):Tomcat 支持多種用戶認(rèn)證方式,包括基于表單、基于 LDAP、基于 JASPI 等。
- SSL 配置:通過(guò)在 server.xml 中配置 SSL 相關(guān)參數(shù),可以啟用 HTTPS 協(xié)議,并配置證書(shū)等相關(guān)信息。
- 訪問(wèn)控制(Access Control):Tomcat 提供了基于 IP、基于 URL 等多種訪問(wèn)控制方式,可以在 web.xml 中進(jìn)行配置。
7.JSP/Servlet 配置
- JSP 編譯參數(shù):可以在 web.xml 中配置 JSP 編譯參數(shù),包括是否開(kāi)啟 JSP 編譯緩存、是否開(kāi)啟 JSP 自動(dòng)重新編譯等。
- Servlet 配置:可以在 web.xml 中配置 Servlet 相關(guān)參數(shù),包括 Servlet 類名、URL 映射、初始化參數(shù)等。
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
- SpringBoot內(nèi)置tomcat參數(shù)調(diào)優(yōu)的實(shí)現(xiàn)
- springboot內(nèi)置的tomcat支持最大的并發(fā)量問(wèn)題
- springboot內(nèi)置tomcat調(diào)優(yōu)并發(fā)線程數(shù)解析
- SpringBoot內(nèi)置tomcat調(diào)優(yōu)測(cè)試優(yōu)化
- SpringBoot內(nèi)置tomcat啟動(dòng)原理詳解
- Springboot內(nèi)置tomcat配置虛擬路徑過(guò)程解析
- springboot查看和修改內(nèi)置tomcat版本的方法步驟
相關(guān)文章
springboot 如何使用jedis連接Redis數(shù)據(jù)庫(kù)
這篇文章主要介紹了springboot 使用jedis連接Redis數(shù)據(jù)庫(kù)的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-07-07最簡(jiǎn)單的Spring Cloud教程第一篇:服務(wù)的注冊(cè)與發(fā)現(xiàn)(Eureka)
這篇文章主要給大家介紹了關(guān)于Spring Cloud服務(wù)的注冊(cè)與發(fā)現(xiàn)(Eureka)的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用spring cloud具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起看看吧。2017-08-08Java實(shí)現(xiàn)簡(jiǎn)單班級(jí)管理系統(tǒng)
這篇文章主要為大家詳細(xì)介紹了Java實(shí)現(xiàn)簡(jiǎn)單班級(jí)管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-02-02Java:不支持發(fā)行版本5的超詳細(xì)簡(jiǎn)單解決方案
發(fā)行版本5是Java5,已經(jīng)是十多年前的版本了,現(xiàn)在已經(jīng)不再被支持,如果您使用的是舊版的Java開(kāi)發(fā)工具,可能會(huì)出現(xiàn)這樣的錯(cuò)誤,這篇文章主要給大家介紹了關(guān)于Java:不支持發(fā)行版本5的超詳細(xì)簡(jiǎn)單解決方案,需要的朋友可以參考下2024-01-01SpringBoot?項(xiàng)目打成?jar后加載外部配置文件的操作方法
這篇文章主要介紹了SpringBoot?項(xiàng)目打成?jar后加載外部配置文件的操作方法,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-03-03Java中Word與PDF轉(zhuǎn)換為圖片的方法詳解
這篇文章主要為大家詳細(xì)介紹了如何使用Java實(shí)現(xiàn)將Word與PDF轉(zhuǎn)換為圖片,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2024-10-10