中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

springboot內置tomcat支持最大的并發量問題怎么解決

發布時間:2023-03-13 10:12:52 來源:億速云 閱讀:148 作者:iii 欄目:開發技術

這篇文章主要介紹“springboot內置tomcat支持最大的并發量問題怎么解決”的相關知識,小編通過實際案例向大家展示操作過程,操作方法簡單快捷,實用性強,希望這篇“springboot內置tomcat支持最大的并發量問題怎么解決”文章能幫助大家解決問題。

    springboot內置的tomcat支持最大的并發量

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

    Tomcat有兩種處理連接的模式

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

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

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

    默認內嵌Tomcat配置

    • server.tomcat.accept-count:等待隊列長度,當可分配的線程數全部用完之后,后續的請求將進入等待隊列等待,等待隊列滿后則拒絕處理,默認100。

    • server.tomcat.max-connections:最大可被連接數,默認10000

    • server.tomcat.max-threads:最大工作線程數,默認200,

    • server.tomcat.min-spare-threads:最小工作線程數,初始化分配線程數,默認10

    默認配置下,連接超過10000后會出現拒絕連接情況

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

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

    修改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    //查看進程數

    我們也可以使用配置文件, 可以新增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);
    
                    //當客戶端發送超過10000個請求則自動斷開keepalive鏈接
    
                    protocol.setMaxKeepAliveRequests(10000);
    
                }
    
            });
    
        }
    
    }

    備注:

    MySQL 數據庫 QPS 容量問題:

    • 主鍵查詢: 千萬級別數據 == 1-10 ms

    • 唯一索引查詢: 千萬級別數據 == 10-100 ms

    • 非唯一索引查詢: 千萬級別數據 == 100-1000ms

    • 無索引數據: 百萬級別數據 == 1000ms+

    MySQL 數據庫 TPS 容量問題:

    • 非插入的更新刪除操作: 同查詢

    • 插入操作: 1w~10w tps(依賴配置優化)

    提高tomcat并發量的幾種方法

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

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

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

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

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

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

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

    關于“springboot內置tomcat支持最大的并發量問題怎么解決”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識,可以關注億速云行業資訊頻道,小編每天都會為大家更新不同的知識點。

    向AI問一下細節

    免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

    AI

    巴林左旗| 小金县| 葵青区| 保山市| 湖州市| 汉川市| 日照市| 桃园县| 汕尾市| 鲜城| 佛冈县| 抚松县| 冷水江市| 沽源县| 宜丰县| 陆丰市| 临沭县| 南宁市| 象州县| 应城市| 蓝山县| 确山县| 轮台县| 沐川县| 株洲县| 仙游县| 白山市| 桃园市| 北碚区| 阳高县| 吴忠市| 当阳市| 尚义县| 抚州市| 荃湾区| 南汇区| 红桥区| 武鸣县| 云南省| 彩票| 涡阳县|