網(wǎng)站建設(shè)南京關(guān)鍵詞seo價格
什么是QPS?
是Queries Per?Second 的縮寫,是指服務(wù)器每秒查詢數(shù),比如定義一個a接口,該接口是10QPS,那么就是指該接口每秒可以處理10個請求
springboot默認(rèn)并發(fā)處理數(shù)是多少?
springboot并發(fā)處理要看servlet容器,而servlet容器默認(rèn)是Tomcat,而Tomcat容器可以處理的并發(fā)請求數(shù)主要受到最大線程數(shù)(max-threads)的限制,Tomcat的默認(rèn)最大線程數(shù)通常是200,這意味著在默認(rèn)情況下,SpringBoot應(yīng)用可以同時處理200個并發(fā)請求。
Tomcat主要配置參數(shù)
最大連接數(shù)(max-connections):Tomcat可以處理的最大請求數(shù)量。超過這個數(shù)量的請求會被放入到等待隊列中。在SpringBoot的某些版本中,這個默認(rèn)值可能是10000或8192,具體取決于SpringBoot和Tomcat的版本。
等待隊列長度(accept-count):當(dāng)所有可能的請求處理線程都在使用中時,傳入連接請求的最大隊列長度。在默認(rèn)情況下,這個值通常是100。當(dāng)?shù)却犃幸矟M了之后,新的請求會被拒絕。
最小工作線程數(shù)(min-spare-threads):Tomcat啟動時創(chuàng)建的線程數(shù),也是線程池中最小的線程數(shù)。這個值通常設(shè)置為較小的數(shù)字,以確保在并發(fā)請求較少時不會浪費(fèi)資源。在默認(rèn)情況下,這個值可能是10或更小。
最大工作線程數(shù)(max-spare-threads):剛才已經(jīng)說了。默認(rèn)200,具體默認(rèn)多少,可能版本不同 ,本文只是作為幫助快速大概對Tomcat的調(diào)優(yōu)相關(guān)理解。
從上文得出疑問
最大工作線程數(shù)和最大連接數(shù)什么關(guān)系?
可以根據(jù)Tomcat的不同IO模型來理解:
在BIO模型下
最大線程數(shù)和最大請求數(shù)量是相等的,因為每個連接都需要一個線程來處理。 在
NIO和NIO2模型下
最大線程數(shù)和最大請求數(shù)量可以不同。最大線程數(shù)仍然表示Tomcat能夠同時處理的最大請求線程數(shù)量,而最大請求數(shù)量則表示Tomcat能夠同時接受的網(wǎng)絡(luò)連接的最大數(shù)量。由于NIO和NIO2模型采用了更高效的I/O處理方式,因此最大請求數(shù)量可以遠(yuǎn)大于最大線程數(shù)。
?
關(guān)于等待隊列和最大請求數(shù)量的關(guān)系?
1、等待隊列的長度和最大請求數(shù)量是兩個不同的配置參數(shù),它們之間沒有直接的依賴關(guān)系。
2、等待隊列的長度限制了當(dāng)所有線程都在忙碌時,Tomcat能夠暫時存儲的額外請求數(shù)量。
3、最大請求數(shù)量則限制了Tomcat能夠同時接受的網(wǎng)絡(luò)連接的最大數(shù)量。
4、因此,即使最大請求數(shù)量設(shè)置為10000,當(dāng)所有線程都在忙碌且等待隊列也滿了之后,新的請求仍然會被拒絕,并返回一個錯誤響應(yīng)給客戶端。這個錯誤通常是一個HTTP 503狀態(tài)碼。
5、當(dāng)前活躍的連接數(shù)已經(jīng)達(dá)到了最大請求數(shù)限制,那么即使線程池和等待隊列還有空間,Tomcat也會拒絕新的連接嘗試。
Tomcat線程池的工作機(jī)制
Tomcat的線程池在處理并發(fā)請求時,首先會使用核心線程數(shù)(即最小工作線程數(shù))來處理請求。當(dāng)核心線程數(shù)都在忙碌時,如果有新的請求到來,Tomcat會嘗試將請求放入到等待隊列中。如果等待隊列也滿了,并且達(dá)到了最大線程數(shù)的限制,那么新的請求就會被拒絕。除此外,如果最大請求數(shù)超出限制,就算線程池和等待隊列有空間也會拒絕請求。
==========后續(xù)還會對本文進(jìn)行完善或修改部分內(nèi)容===========