亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

springboot內置的tomcat支持最大的并發(fā)量問題

 更新時間:2023年03月12日 16:29:50   作者:Joe world  
這篇文章主要介紹了springboot內置的tomcat支持最大的并發(fā)量問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教

springboot內置的tomcat支持最大的并發(fā)量

SpringBoot內置Tomcat,在默認設置中,Tomcat的最大線程數(shù)是200,最大連接數(shù)是10000。支持的并發(fā)量是指連接數(shù),也就是說 支持最大并發(fā)量是一萬(默認)

Tomcat有兩種處理連接的模式

1,是BIO,一個線程只處理一個Socket連接,

2,是NIO,一個線程處理多個Socket連接。

由于HTTP請求不會太耗時,而且多個連接一般不會同時來消息,所以一個線程處理多個連接沒有太大問題。一個線程處理多個連接數(shù)會很慢 有可能會超時

默認內嵌Tomcat配置

  • server.tomcat.accept-count:等待隊列長度,當可分配的線程數(shù)全部用完之后,后續(xù)的請求將進入等待隊列等待,等待隊列滿后則拒絕處理,默認100。
  • server.tomcat.max-connections:最大可被連接數(shù),默認10000
  • server.tomcat.max-threads:最大工作線程數(shù),默認200,
  • server.tomcat.min-spare-threads:最小工作線程數(shù),初始化分配線程數(shù),默認10

默認配置下,連接超過10000后會出現(xiàn)拒絕連接情況

默認配置下,觸發(fā)的請求超過200+100后拒絕處理(最大工作線程數(shù)+等待隊列長度)

如果默認配置無法滿足當前需求 可以自己調優(yōu) 可以手動修改配置來進行處理并發(fā)

修改pro文件

server.port=7001

server.tomcat.accept-count=1000

server.tomcat.max-connections=10000

server.tomcat.max-threads=500

server.tomcat.min-spare-threads=100

然后 打包重啟項目

kill -9 9545   //殺死進程

ps -ef | grep java   //查看項目啟動的端口

pstree -p 7968 | wc -l    //查看進程數(shù)

我們也可以使用配置文件, 可以新增WebServerConfiguration.java文件

import org.apache.catalina.connector.Connector;

import org.apache.coyote.http11.Http11NioProtocol;

import org.springframework.boot.web.embedded.tomcat.TomcatConnectorCustomizer;

import org.springframework.boot.web.embedded.tomcat.TomcatServletWebServerFactory;

import org.springframework.boot.web.server.ConfigurableWebServerFactory;

import org.springframework.boot.web.server.WebServerFactoryCustomizer;

import org.springframework.stereotype.Component;


//當Spring容器內沒有TomcatEmbeddedServletContainerFactory這個bean時,會吧此bean加載進spring容器中

@Component

public class WebServerConfiguration implements WebServerFactoryCustomizer<ConfigurableWebServerFactory> {

? ? @Override

? ? public void customize(ConfigurableWebServerFactory configurableWebServerFactory) {

? ? ? ? ? ? //使用對應工廠類提供給我們的接口定制化我們的tomcat connector

? ? ? ? ((TomcatServletWebServerFactory)configurableWebServerFactory).addConnectorCustomizers(new TomcatConnectorCustomizer() {

? ? ? ? ? ? @Override

? ? ? ? ? ? public void customize(Connector connector) {

? ? ? ? ? ? ? ? Http11NioProtocol protocol = (Http11NioProtocol) connector.getProtocolHandler();

? ? ? ? ? ? ? ? //定制化keepalivetimeout,設置30秒內沒有請求則服務端自動斷開keepalive鏈接

? ? ? ? ? ? ? ? protocol.setKeepAliveTimeout(30000);

? ? ? ? ? ? ? ? //當客戶端發(fā)送超過10000個請求則自動斷開keepalive鏈接

? ? ? ? ? ? ? ? protocol.setMaxKeepAliveRequests(10000);

? ? ? ? ? ? }

? ? ? ? });

? ? }

}

備注:

MySQL 數(shù)據(jù)庫 QPS 容量問題:

  • 主鍵查詢: 千萬級別數(shù)據(jù) == 1-10 ms
  • 唯一索引查詢: 千萬級別數(shù)據(jù) == 10-100 ms
  • 非唯一索引查詢: 千萬級別數(shù)據(jù) == 100-1000ms
  • 無索引數(shù)據(jù): 百萬級別數(shù)據(jù) == 1000ms+

MySQL 數(shù)據(jù)庫 TPS 容量問題:

  • 非插入的更新刪除操作: 同查詢
  • 插入操作: 1w~10w tps(依賴配置優(yōu)化)

提高tomcat并發(fā)量的幾種方法

1、Apache + Tomcat 結合起來用Apache負責靜態(tài)頁面,Tomcat負責動態(tài)頁面,同時減少connectionTimeout的時間,以應對并發(fā)量大線程回收來不及的情況。

2、壓力過大的問題,可以做負載均衡,一個TOMCAT無論如何也不可能擔當如此多的線程負載,而且JVM過大,其內存管理成本將顯著加大。2G的內存,做3-4個TOMCAT實例(512RAM*4),更為科學合理。

3、數(shù)據(jù)庫連接池,不少人,都推薦使用C3P0,能提高訪問數(shù)據(jù)庫的并發(fā)性能好幾倍。

4、采用Tomcat集群可以最大程度的發(fā)揮服務器的性能,可以在配置較高的服務器上部署多個Tomcat,也可以在多臺服務器上分別部署Tomcat,Apache和Tomcat整合的方式還是JK方式。經過驗證,系統(tǒng)對大用戶量使用的響應方面,Apache+3Tomccat集群> Apache+2Tomcat集群 > Apache集成Tomcat > 單個Tomcat。并且采用Apache+多Tomcat集群的部署方式時,如果一個Tomcat出現(xiàn)宕機,系統(tǒng)可以繼續(xù)使用,所以在硬件系統(tǒng)性能足夠優(yōu)越的情況下,需要盡量發(fā)揮軟件的性能,可以采用增加Tomcat集群的方式。

5、1. 設置MPM(Multi Processing Modules多道處理模塊)。ThreadPerChild,這個參數(shù)用于設置每個進程的線程數(shù),在Windows環(huán)境下默認值是64,最大值是1920,建議設置為100-500之間,服務器性能高的話值大一些,反之小一些。MaxRequestPerChild表示每個子進程能夠處理的最大請求數(shù)。這個參數(shù)的值更大程度上取決于服務器的內存,如果內存比較大的話可以設置為很大的參數(shù),否則設置一個較小的值,建議值是3000.

2. 關閉DNS和名字解析 HostnameLookups off

3. 打開UseCanonicalName模塊 UseCanonicalName on

4. 關閉多余模塊 一般來說,不需要加載的模塊有,mod_include.so、mod_autoindex.so、mod_access.so、mod_auth.so.

5. 打開KeepAlive支持

KeepAlive on, KeepAliveTimeout 15 MaxKeepAliveRequests 1000

根據(jù)實際經驗,通過Apache和Tomcat集群的方式提高系統(tǒng)性能的效果十分明顯,這種方式可以最大化的利用硬件資源,通過多個Tomcat的處理來分擔單Tomcat時的壓力。

web server允許的最大連接數(shù)還受制于操作系統(tǒng)的內核參數(shù)設置,通常Windows是2000個左右,Linux是1000個左右。

總結

以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關文章

  • 批量上傳Jar包到Maven私服的工具的方法

    批量上傳Jar包到Maven私服的工具的方法

    這篇文章主要介紹了批量上傳Jar包到Maven私服的工具的方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-12-12
  • MyBatis-Plus通用枚舉自動關聯(lián)注入的實現(xiàn)

    MyBatis-Plus通用枚舉自動關聯(lián)注入的實現(xiàn)

    本文主要介紹了MyBatis-Plus通用枚舉自動關聯(lián)注入的實現(xiàn),解決了繁瑣的配置,讓 mybatis 優(yōu)雅的使用枚舉屬性,感興趣的可以一起來了解一下
    2021-06-06
  • java網上商城項目第1篇之用戶注冊模塊

    java網上商城項目第1篇之用戶注冊模塊

    這篇文章主要為大家詳細介紹了java網上商城項目第1篇之用戶注冊模塊,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-12-12
  • Java中EnvironmentAware 接口的作用

    Java中EnvironmentAware 接口的作用

    本文主要介紹了Java中EnvironmentAware 接口的作用,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2022-06-06
  • 一次因Java應用造成CPU過高的排查實踐過程

    一次因Java應用造成CPU過高的排查實踐過程

    一個應用占用CPU很高,除了確實是計算密集型應用之外,通常原因都是出現(xiàn)了死循環(huán)。下面這篇文章主要給大家介紹了一次因Java應用造成CPU過高的排查實踐過程,文中通過示例代碼介紹的非常詳細,需要的朋友可以參考下
    2018-11-11
  • maven profile動態(tài)選擇配置文件詳解

    maven profile動態(tài)選擇配置文件詳解

    這篇文章主要介紹了maven profile動態(tài)選擇配置文件詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-11-11
  • java基礎javeSE程序邏輯控制語法

    java基礎javeSE程序邏輯控制語法

    主要講解Java中程序的邏輯控制語句包括 Java中的輸入輸出方式 順序結構循環(huán)結構等,有需要的朋友可以借鑒參考下,希望能夠有所幫助
    2021-09-09
  • springboot如何讀取自定義屬性

    springboot如何讀取自定義屬性

    大家好,本篇文章主要講的是springboot如何讀取自定義屬性,感興趣的同學趕快來看一看吧,對你有幫助的話記得收藏一下
    2022-02-02
  • java設計模式之單例模式

    java設計模式之單例模式

    這篇文章主要為大家詳細介紹了java設計模式之單例模式,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-10-10
  • 一篇文章帶你深入了解Java類加載

    一篇文章帶你深入了解Java類加載

    這篇文章主要介紹了Java中類加載過程全面解析,具有一定參考價值,需要的朋友可以了解下,希望能給你帶來幫助
    2021-08-08

最新評論