springboot の組み込み Tomcat によってサポートされる最大同時実行性の問題を解決する方法
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
: 最大接続数、デフォルトは 10000server です。 tomcat.max-threads
: 作業スレッドの最大数、デフォルトは 200、
server.tomcat.min-spare-threads
: 作業スレッドの最小数thread 、割り当てられたスレッドの数を初期化します。デフォルトは 10
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 サイトの他の関連記事を参照してください。

ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

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

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

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

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

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

ホットトピック









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

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

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

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

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

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

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

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