目次
springboot の組み込み Tomcat は最大同時実行性をサポートします
Tomcat には、接続を処理するための 2 つのモードがあります。
デフォルトの組み込み Tomcat 構成
2. 過剰な負荷の問題については、負荷分散を行うことができますが、TOMCAT はいずれにせよそれほど多くのスレッド負荷を処理できず、JVM が大きすぎる場合、メモリ管理コストが大幅に増加します。より合理的で科学的なアプローチは、2 GB のメモリを使用し、それぞれが 512 MB のメモリを持つ 3 ~ 4 つの TOMCAT インスタンスを構成することです。
ホームページ Java &#&チュートリアル springboot の組み込み Tomcat によってサポートされる最大同時実行性の問題を解決する方法

springboot の組み込み Tomcat によってサポートされる最大同時実行性の問題を解決する方法

May 22, 2023 pm 08:21 PM
tomcat springboot

    springboot の組み込み Tomcat は最大同時実行性をサポートします

    SpringBoot の組み込み Tomcat、デフォルト設定では、Tomcat の最大スレッド数は 200 です、最大接続数は 10,000 です。デフォルトでは、サポートされる最大同時実行数は 10,000 です。これは、サポートされる接続の数を意味します。

    Tomcat には、接続を処理するための 2 つのモードがあります。

    1 (BIO)、1 つのスレッドは 1 つのソケット接続のみを処理します。 ,

    2 は NIO で、1 つのスレッドが複数のソケット接続を処理します。

    HTTP リクエストはそれほど時間がかからず、複数の接続は通常同時にメッセージを送信しないため、複数の接続を処理する単一のスレッドは通常、それほど大きな問題を引き起こしません。複数の接続を処理するスレッドは非常に遅くなり、タイムアウトになる可能性があります

    デフォルトの組み込み Tomcat 構成

    • server.tomcat.accept-count : 待機中キューの長さ。割り当て可能なスレッドの数が使い果たされると、後続のリクエストは待機キューに入って待機します。待機キューがいっぱいになると、処理は拒否されます。デフォルトは 100 です。

    • server.tomcat.max-connections: 最大接続数、デフォルトは 10000

    • server です。 tomcat.max-threads: 作業スレッドの最大数、デフォルトは 200、

    • server.tomcat.min-spare-threads: 作業スレッドの最小数thread 、割り当てられたスレッドの数を初期化します。デフォルトは 10

    デフォルト設定では、接続数が 10,000 を超えると接続は拒否されます

    デフォルト設定では、トリガーされたリクエストの数が 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 //Killプロセス

    ##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 ミリ秒
    • 一意のインデックス クエリ: 千万レベルのデータ == 10 ~ 100 ミリ秒
    • 非一意のインデックス クエリ: 1,000 万レベルのデータ == 100 ~ 1000 ミリ秒
    • インデックス データなし: 100 万レベルのデータ == 1000 ミリ秒
    • #MySQL データベースの TPS 容量の問題:

    非挿入更新および削除操作: 同じクエリ

    • #挿入操作: 1w~10w tps (構成の最適化に依存)

    • Tomcat の同時実行性のいくつかの方法を改善

    • 1. Apache Tomcat を組み合わせて使用​​します。静的ページには Apache、動的ページには Tomcat を使用します。同時に、同時実行性が高く、スレッドのリサイクルが遅すぎる状況に対処するために、connectionTimeout 時間が短縮されます。

    2. 過剰な負荷の問題については、負荷分散を行うことができますが、TOMCAT はいずれにせよそれほど多くのスレッド負荷を処理できず、JVM が大きすぎる場合、メモリ管理コストが大幅に増加します。より合理的で科学的なアプローチは、2 GB のメモリを使用し、それぞれが 512 MB のメモリを持つ 3 ~ 4 つの TOMCAT インスタンスを構成することです。

    3. データベース接続プール: データベース アクセスの同時パフォーマンスを数倍向上させることができる C3P0 の使用を推奨する人が多くいます。

    4. Tomcat クラスターを使用すると、サーバーのパフォーマンスを最大化できます。より高い構成のサーバーに複数の Tomcat をデプロイすることも、複数のサーバーに個別に Tomcat をデプロイして、Apache と Tomcat を統合することもできます。 JK風。多数のユーザーに対するシステムの応答に関しては、Apache 3Tomccat クラスター > Apache 2Tomcat クラスター > Apache 統合 Tomcat > 単一 Tomcat であることが確認されています。また、Apache マルチ Tomcat クラスタ導入方式では、1 台の Tomcat がダウンしてもシステムは継続して利用できるため、ハードウェア システムの性能が十分に優れている場合には、ソフトウェアの性能を最大限に引き出す必要があります。 Tomcat クラスターを追加できます。

    1. MPM (マルチ プロセッシング モジュール) を設定します。 ThreadPerChild, このパラメータは、各プロセスのスレッド数を設定するために使用されます。Windows 環境では、デフォルト値は 64 で、最大値は 1920 です。100 ~ 500 の間で設定することをお勧めします。サーバーのパフォーマンスが高い場合は、値は大きくなり、それ以外の場合は小さくなります。各子プロセスが処理できるリクエストの最大数は、MaxRequestPerChild パラメーターによって決まります。このパラメータの値は、サーバーのメモリに大きく依存します。メモリが比較的大きい場合は、大きなパラメータに設定できます。そうでない場合は、より小さい値を設定します。推奨値は 3000.

    2 DNS と名前解決をオフにする HostnameLookups をオフにする

    3. UseCanonicalName モジュールをオンにする UseCanonicalName on

    4. 冗長モジュールをオフにする 一般的に、ロードする必要のないモジュールには以下のものがあります。 mod_include.so、mod_autoindex.so、および mod_access.so、mod_auth.so.

    5. KeepAlive サポートをオンにする

    KeepAlive をオン、KeepAliveTimeout 15 MaxKeepAliveRequests 1000

    Based on実際の経験では、Apache および Tomcat クラスターによるシステム パフォーマンスの向上効果は非常に明白であり、この方法はハードウェア リソースの使用を最大化し、複数の Tomcat の処理を​​通じて単一の Tomcat の負荷を共有できます。

    Web サーバーで許可される最大接続数は、オペレーティング システムのカーネル パラメーターの設定にも影響されますが、通常、Windows の場合は約 2,000、Linux の場合は約 1,000 です。

    以上がspringboot の組み込み Tomcat によってサポートされる最大同時実行性の問題を解決する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

    このウェブサイトの声明
    この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

    ホットAIツール

    Undresser.AI Undress

    Undresser.AI Undress

    リアルなヌード写真を作成する AI 搭載アプリ

    AI Clothes Remover

    AI Clothes Remover

    写真から衣服を削除するオンライン AI ツール。

    Undress AI Tool

    Undress AI Tool

    脱衣画像を無料で

    Clothoff.io

    Clothoff.io

    AI衣類リムーバー

    AI Hentai Generator

    AI Hentai Generator

    AIヘンタイを無料で生成します。

    ホットツール

    メモ帳++7.3.1

    メモ帳++7.3.1

    使いやすく無料のコードエディター

    SublimeText3 中国語版

    SublimeText3 中国語版

    中国語版、とても使いやすい

    ゼンドスタジオ 13.0.1

    ゼンドスタジオ 13.0.1

    強力な PHP 統合開発環境

    ドリームウィーバー CS6

    ドリームウィーバー CS6

    ビジュアル Web 開発ツール

    SublimeText3 Mac版

    SublimeText3 Mac版

    神レベルのコード編集ソフト(SublimeText3)

    Tomcat に jar プロジェクトをデプロイする方法 Tomcat に jar プロジェクトをデプロイする方法 Apr 21, 2024 am 07:27 AM

    JAR プロジェクトを Tomcat にデプロイするには、次の手順に従います。 Tomcat をダウンロードして解凍します。 server.xml ファイルを構成し、ポートとプロジェクトのデプロイメント・パスを設定します。 JAR ファイルを指定されたデプロイメント パスにコピーします。 Tomcatを起動します。指定された URL を使用して、デプロイされたプロジェクトにアクセスします。

    Tomcat サーバーへの外部ネットワーク アクセスを許可する方法 Tomcat サーバーへの外部ネットワーク アクセスを許可する方法 Apr 21, 2024 am 07:22 AM

    Tomcat サーバーが外部ネットワークにアクセスできるようにするには、以下を行う必要があります。 外部接続を許可するように Tomcat 構成ファイルを変更します。 Tomcat サーバー ポートへのアクセスを許可するファイアウォール ルールを追加します。 Tomcat サーバーのパブリック IP を指すドメイン名を指す DNS レコードを作成します。オプション: リバース プロキシを使用して、セキュリティとパフォーマンスを向上させます。オプション: セキュリティを強化するために HTTPS を設定します。

    Tomcatのインストールディレクトリはどこにありますか? Tomcatのインストールディレクトリはどこにありますか? Apr 21, 2024 am 07:48 AM

    Tomcat インストール ディレクトリ: デフォルト パス: Windows: C:\Program Files\Apache Software Foundation\Tomcat 9.0macOS:/Library/Tomcat/Tomcat 9.0Linux:/opt/tomcat/tomcat9 カスタム パス: インストール中に指定できます。インストール ディレクトリを見つけます。whereis またはlocateコマンドを使用します。

    Tomcat で複数のプロジェクトをデプロイする方法 Tomcat で複数のプロジェクトをデプロイする方法 Apr 21, 2024 am 09:33 AM

    Tomcat を介して複数のプロジェクトをデプロイするには、プロジェクトごとに webapp ディレクトリを作成してから、次の操作を行う必要があります。 自動デプロイ: webapp ディレクトリを Tomcat の webapps ディレクトリに配置します。手動デプロイメント: Tomcat のマネージャー アプリケーションにプロジェクトを手動でデプロイします。プロジェクトがデプロイされると、そのデプロイメント名 (例: http://localhost:8080/project1) でアクセスできるようになります。

    Tomcatでの同時接続数を確認する方法 Tomcatでの同時接続数を確認する方法 Apr 21, 2024 am 08:12 AM

    Tomcat の同時接続数を確認する方法: Tomcat Manager ページ (http://localhost:8080/manager/html) にアクセスし、ユーザー名とパスワードを入力します。左側のナビゲーション バーで [ステータス] -> [セッション] をクリックすると、ページの上部に同時接続数が表示されます。

    Tomcat Web サイトのルート ディレクトリはどこですか? Tomcat Web サイトのルート ディレクトリはどこですか? Apr 21, 2024 am 09:27 AM

    Tomcat Web サイトのルート ディレクトリは Tomcat の webapps サブディレクトリにあり、Web アプリケーション ファイル、静的リソース、および WEB-INF ディレクトリを保存するために使用されます。これは、Tomcat 構成ファイルで docBase 属性を検索することで見つかります。

    Tomcatのポート番号を確認する方法 Tomcatのポート番号を確認する方法 Apr 21, 2024 am 08:00 AM

    Tomcat のポート番号は、server.xml ファイルの <Connector> 要素の port 属性を確認することで確認できます。 Tomcat 管理インターフェイス (http://localhost:8080/manager/html) にアクセスし、[ステータス] タブを表示します。コマンドラインから「catalina.sh version」を実行し、「Port:」行を確認します。

    Tomcat で異なるポート番号を持つ 2 つのプロジェクトを実行する方法 Tomcat で異なるポート番号を持つ 2 つのプロジェクトを実行する方法 Apr 21, 2024 am 09:00 AM

    Tomcat サーバー上で異なるポート番号を使用してプロジェクトを実行するには、次の手順が必要です。server.xml ファイルを変更し、Connector 要素を追加してポート番号を定義します。 Context 要素を追加して、ポート番号に関連付けられたアプリケーションを定義します。 WAR ファイルを作成し、対応するディレクトリ (webapps または webapps/ROOT) にデプロイします。 Tomcat を再起動して変更を適用します。

    See all articles