Tomcat のパフォーマンスを最適化するための N 個の方法を分析する

PHPz
リリース: 2024-06-14 21:10:00
オリジナル
802 人が閲覧しました

Tomcat のパフォーマンスを最適化するための N 個の方法を分析する

Tomcat は多くの場合、JavaWeb 実践者にとってデフォルトの開発環境ですが、実稼働環境としての Tomcat のデフォルト構成、特にメモリとスレッドの構成は、デフォルトでは非常に低く、簡単にパフォーマンスのボトルネックになる可能性があります。まだまだ多くの機能がありますが、改善の余地があります。以下では、メモリ、スレッド、IO に分けて Tomcat の最適化を紹介します。 Tomcat は JavaWeb 実務者にとってデフォルトの開発環境であることがよくありますが、運用環境としての Tomcat のデフォルト構成、特にメモリとスレッドの構成は、デフォルトでは非常に低く、簡単にパフォーマンスのボトルネックになる可能性があります。
幸いなことに、Tomcat にはまだ改善の余地がたくさんあります。以下では、メモリ、スレッド、IO に分けて Tomcat の最適化を紹介します。

1: Tomcat のメモリ最適化。起動時に大きなメモリが必要であることを JVM に伝えます (メモリの調整が最も直接的な方法です)

Windows の catalina.bat Linux での
catalina.sh の例:

リーリー

-Xms

JVM 初期化ヒープ サイズ

-Xmx

JVM ヒープの最大値は、サーバー構成またはプロジェクト固有の設定によって異なります。

2: 次のようなserver.xmlでのTomcatスレッドの最適化:

maxThreads="X" は、同時に最大 X 個の接続を処理することを意味します minSpareThreads="X" X 接続を初期化します

maxSpareThreads="X" は、最大 X 個のスレッドが存在できる場合、X を超えると、不要になったスレッドが閉じられることを意味します

acceptCount="X" 同時に接続する人の数が maxThreads に達してもキューに入れることができます。X を超えると処理されません。

3: Tomcat IO の最適化

1: 同期ブロッキング IO (JAVA BIO) 同期とブロッキング、サーバー実装モードは 1 接続 1 スレッドです (考えると恐ろしいです。スレッドは非常に貴重なリソースです)。もちろん、スレッド プール メカニズムを通じて改善できます。
2: JAVA NIO: 同期非ブロッキング IO、非同期ブロッキング IO、および BIO に分けられます。最大の違いは、1 つのリクエストで 1 つのスレッドを再利用して複数の接続を処理できることです (多重化)。 3: 非同期ノンブロッキング IO (Java NIO2 は AIO とも呼ばれます) NIO との主な違いは、オペレーティング システムの根本的な違いです。NIO は、オンライン ショッピングの後に配達しなければならないことを意味します。公式ウェブサイトにアクセスして、速達便が配達されたかどうかを確認してください。到着したら(おそらく複数回)、自分で速達便を受け取ることができます。AIO とは、宅配業者が商品を自宅まで届けることを意味します(料金を支払う必要はありません)。急行の進行に注意してください)。

BIO 方式は、接続数が比較的少なく固定されているアーキテクチャに適しています。この方式はサーバー リソースの要件が比較的高く、同時実行性はアプリケーションに限定されています。ただし、プログラムは直感的です。 、シンプルでわかりやすい

NIO 方式は、チャット サーバーなど、接続数が多く、接続が比較的短いアーキテクチャに適しており、プログラミングが複雑です。

AIO メソッドは、フォト アルバム サーバーなど、接続数が多く比較的長い接続 (重い操作) を行うアーキテクチャで使用されます。プログラミングは比較的複雑で、JDK7 は、OS を完全に呼び出します。応援してね

server.xml内

TomcatのIO切り替えを実現

4: ビッグキラー APR

リーリー

APR (Apache Portable Runtime) は、Apache HTTP Server 2.x の中核となる移植性の高いライブラリであり、他のローカル Web テクノロジーとより適切に統合でき、一般に、高性能 Web サーバー プラットフォームとして Java をより効率的にします。単に背景コンテナとして機能するのではなく。

実稼働環境では、特に Tomcat を WEB サーバーとして直接使用する場合、パフォーマンスを向上させるために Tomcat Native を使用する必要があります。APR を使用しないと、基本的に 300 スレッドがすぐにいっぱいになり、その後のリクエストは待機する必要があります。同時スレッドの数は、元の 300 からわずか数十に大幅に減少し、新しいリクエストはブロックされることなく受信されます。 LAN 環境でテストした場合、400 の同時リクエストでも瞬時に処理/送信されましたが、実際のインターネット環境では、ページの処理時間は 0.1% 未満に過ぎず、ほとんどの時間はページの送信に使用されます。 APR を使用しない場合、1 つのスレッドは一度に 1 人のユーザーしか処理できないため、必然的にブロックが発生します。したがって、本番環境では apr を使用することが非常に必要です。

Apache Tomcat Native Library をインストールし、直接起動する場合は apr (http://tomcat.apache.org/native-doc/) をサポートします。具体的なインストール方法については、他のブログや記事を参照してください。コードの問題のトラブルシューティングと Tomcat の最適化 このレベルでは、パフォーマンスのほとんどのニーズを満たすことができます。

リーリー

以上がTomcat のパフォーマンスを最適化するための N 個の方法を分析するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:linuxprobe.com
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート