パフォーマンス テスト - Tomcat の監視とチューニング: Tomcat 構造システム

Tomcat は元々、Sun のソフトウェア アーキテクトである James Duncan Davidson によって開発されました。彼は後にそれをオープンソース プロジェクトにするのに貢献し、Sun から Apache Software Foundation に寄付されました。Tomcat サーバーは、無料のオープン ソース Web アプリケーション サーバーです。軽量のアプリケーション サーバーであり、中小規模のシステムや同時アクセス ユーザーがそれほど多くない状況でよく使用されます。JSP の開発とデバッグには最初の選択肢です。プログラム。初心者向けに、これを次のように考えることができます。Apache サーバーがマシン上に構成されている場合、Tomcat は Apache サーバーの拡張機能ですが、実行時には独立して実行されるため、Tomcat を実行すると、実際には Apache サーバーの拡張機能として機能します。 Apache サーバー Apache は別のプロセスとして独立して実行されます。

この章では主に次の部分を紹介します。

  • Tomcat 構造システム。
  • Tomcat の監視。
  • Tomcat のチューニング
  • JVMのチューニング
  • ログファイルの分析

【Tomcatの構造体系】

Tomcat の監視とチューニングを紹介する前に、まず Tomcat の構造システムを紹介します。Tomcat の構造には通常、コンテキスト、コネクタ、ホスト、エンジン、サービス、サーバーリスナーが含まれます。図 11-1 に示すように。

図 11-1 Tomcat の構造システム

これらのコンポーネントは主に、server.xml ファイルを使用して構成されます。デフォルトでは、server.xml ファイルには主に次の構成コンテンツが含まれています。

<?xml version='1.0' encoding='utf-8'?>
<Server port="8005" shutdown="SHUTDOWN">
<Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="on" />
<Listener className="org.apache.catalina.core.JasperListener" />
<Listener className="org.apache.catalina.core.JreMemoryLeakPreventionListener" />
<Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener" />
<Listener className="org.apache.catalina.core.ThreadLocalLeakPreventionListener" />
<GlobalNamingResources>
<Resource name="UserDatabase" auth="Container"
type="org.apache.catalina.UserDatabase"
description="User database that can be updated and saved"
factory="org.apache.catalina.users.MemoryUserDatabaseFactory"
pathname="conf/tomcat-users.xml" />
</GlobalNamingResources>
<Service name="Catalina">
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
<Engine name="Catalina" defaultHost="localhost">
<Realm className="org.apache.catalina.realm.LockOutRealm">
<Realm className="org.apache.catalina.realm.UserDatabaseRealm"
resourceName="UserDatabase"/>
</Realm>
<Host name="localhost"? appBase="webapps"
unpackWARs="true" autoDeploy="true">
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
prefix="localhost_access_log." suffix=".txt"
pattern="%h %l %u %t "%r" %s %b" />
</Host>
</Engine>
</Service>
</Server>

1) コンテキスト

コンテキストは、コンテナと呼ばれる内部要素のセットです。Tomcat は単一の Web アプリケーションを表し、アプリケーションのロード時にいくつかの標準化された情報を自動的にインスタンス化し、構成します。\WEB-INF\web.xml ファイルで定義されたプロパティも処理され、構成の一部としてアプリケーションで使用されます。

现在我也找了很多测试的朋友,做了一个分享技术的交流群,共享了很多我们收集的技术文档和视频教程。
如果你不想再体验自学时找不到资源,没人解答问题,坚持几天便放弃的感受
可以加入我们一起交流。而且还有很多在自动化,性能,安全,测试开发等等方面有一定建树的技术大牛
分享他们的经验,还会分享很多直播讲座和技术沙龙
可以免费学习!划重点!开源的!!!
qq群号:110685036

 

2) コネクタ

コネクタは、クライアントとの通信を処理するために使用されます。Tomcat は、最もよく使用される HTTP コネクタや AJP コネクタなど、さまざまなコネクタをサポートしています。

デフォルトでは、Tomcat は HTTP コネクタを使用して構成されており、ポート番号は 8080 で、デフォルトの URL アドレス http://localhost:8080 です。すべてのアプリケーションはこの接続の単一インスタンスを通じて完了することに注意してください。リクエストを送信すると、スレッドがインスタンス化され、このスレッドはリクエストの間コネクタ内でアクティブなままになります。

connectionTimeout は接続タイムアウトを表します。デフォルト値は 20000 で、20000 秒以内にセッションにアクティビティがない場合、接続は終了します。redirectPort はセキュア ソケット SSL 送信用のポート番号 8443 を表します。

通常、構成ファイルには AJP コネクタも表示されます。一部の動的 Web ページを処理し、純粋な HTML サーバーが静的ページのリクエストを処理できるようにすると、リクエストの処理効率が向上しますが、現在はあまり使用されません。 Tomcat サーバー自体は非常に高速なので、このコネクタが必要ない場合は、このコネクタをコメントアウトできます。

3) ホスト

Host は定義されたホストを表し、Tomcat サーバーとの関連付けに使用されます。もちろん、接続方法は主にドメイン名と IP アドレスのマッピング ルールによって決まります。サーバーは複数のホストを定義できます。たとえば、ドメインhttp://chuansinfo.com が登録されている場合、w1. http://chuansinfo.comおよび w2. http://chuansinfo.comなどのホスト名を定義できます。

Tomcat のデフォルトのホスト名は localhost です。localhost とコンピュータ間の関連付けはレコードを通じて行われます。このレコードは C:\\Windows\\System32\\drivers\\etc\\hosts ファイルに書き込まれます。

Host の "appBase" パラメータは、Ixin 公開アプリケーションが配置されているディレクトリの場所を定義します。URL を外部から使用してサーバーにアクセスする場合、実際には appBase に対応するディレクトリに直接アクセスします。上記の server.xml ファイル構成を次のようにします。例: 入力された URL アドレスが http://localhost:8080 の場合、同等のアクセス アドレスは http://localhost:8080/webapps ディレクトリ内のインデックス ファイルです。

Host の "unpackWARs" パラメータは、WAR ファイルの処理方法を示します。 "true" に設定すると、WAR ファイルが appBase ディレクトリに配置されると、Tomcat が自動的に通常のファイルに展開することを意味します。" に設定すると、 false" " の場合、アプリケーションは WAR ファイルから直接実行されますが、Tomcat サーバーはファイルを実行する前に WAR ファイルを解凍する必要があるため、実行速度に影響します。

Host の「autoDeploy」パラメータが「true」に設定されている場合、appBase ディレクトリに配置されたプログラムが自動的にデプロイされることを意味します。

4) エンジン

エンジンはグローバル エンジン コンテナーに属します。これは主に、異なる JVM のグローバル エンジン コンテナ内のすべてのアプリケーションをクラスタに抽象化し、異なる JVM 間で相互に通信できるようにし、セッションの同期とクラスタのデプロイメントを可能にします。エンジンは、コネクタ内のすべてのリクエストを処理し、応答結果をクライアントに返すために使用されます。もちろん、コネクタは複数存在する場合があります。

エンジン コンテナには 1 つ以上のホスト コンポーネントが含まれています。各ホスト コンポーネントの内容は上記のコンテンツで紹介されています。各ホスト コンポーネントは仮想マシンに相当します。Engine エンジンにはコンテナの親インターフェイスである Container もあり、コネクタ リクエストはこの親インターフェイスを通じて渡されます。

エンジン コンテナの主なコンポーネントには、ホスト コンポーネント、AccessLog コンポーネント、パイプライン コンポーネント、クラスタ コンポーネント、レルム コンポーネント、LifecycleLister コンポーネント、およびログ コンポーネントが含まれます。

5) サービス

サービス コンポーネントは、Tomcat のさまざまなサービスの抽象化として見ることができ、1 つ以上のコネクタをエンジンにバインドします。Tomcat のデフォルトの構成サービスは Catalina です。通常の状況では、サービスを変更したり定義したりしません。

サービス コンポーネントには、いくつかのコネクタ コンポーネントとエグゼキュータ コンポーネントの 2 種類のコンポーネントが含まれています。コネクタ コンポーネントは、特定のポート上の顧客リクエストを監視する役割を果たします。異なるポートは異なるコネクタに対応します。Executor コンポーネントはサービス抽象化レベルでスレッド プールを提供し、サービスの下のコンポーネントがスレッド プールを共有できるようにします。

6) サーバー

Server コンポーネントは、Tomcat の実行中のインスタンスを抽象化したものとして見ることができ、最上位のコンポーネントであり、1 つ以上のサービスを含めることができます。

Server コンポーネントには、AprLifecycleListener リスナー、JasperListener リスナー、
JreMemoryLeakPreventionListener リスナー、GlobalResourcesLifecycleListener リスナー、ThreadLocalLeakPreventionListener リスナー、および NamingContextListener リスナーの 6 つのリスナー コンポーネントが含まれています。GlobalNamingResources コンポーネント、ServerSocket コンポーネント、Service コンポーネントも含まれます。

7) リスナー


リスナーは org.apache.catalina.LifecycleListener インターフェースの実装によって制御されるJava オブジェクトです。リスナーは主にクライアントから送信されたリクエスト情報をリッスンするために使用され、次の特定のイベントを処理できます。

● AprLifecycleListener

このリスナーは APR (Apahce Portable Runtime) を非常によくリッスンでき、APR ライブラリはオペレーティング システムに対する Tomcat サービスのパフォーマンスを向上させることができます。

●ジャスパーリスター

JSPリスナー JSPエンジンです。このリスナーは、更新された JSP ドキュメントを再コンパイルできます。

● JreMemoryLeakPreventionListener:

このリスナーは主に、メモリ リークにつながる可能性のある状況を処理するために使用されます。

● GlobalResourcesLifecycleListener:

主に、インスタンス化とグローバル Java Naming and Directory Interface (JNDI) の間の関連付けのリッスンと管理を担当します。

● ThreadLocalLeakPreventionListener:


JreMemoryLeakPreventionListener リスナーと同様に、メモリ リークの処理にも使用されます

Tomcat の構造システムについては以上で説明しましたが、Tomcat の動作原理を図 11-2 に示します。

図 12-2 Tomcat の動作原理

Tomcat がどのように動作するかの具体的な手順は次のとおりです。

1. ユーザーが Web ページをクリックすると、クライアントはローカル ポート 8080 にリクエストを送信します。このリクエストは、そこでリッスンしている Coyote HTTP/1.1 コネクタによって取得されます。

2. コネクタは、処理のためにリクエストをサービスのエンジンに渡し、エンジンの応答を待ちます。

3. エンジンは、index.jsp などの要求されたリソースを取得し、すべての仮想ホストと一致します。

4. エンジンは、localhost という名前のホストと一致します (一致できない場合でも、ホストはエンジンのデフォルトのホストとして定義されているため、要求は処理のためにホストに渡されます)。localhost という名前のホストは、 /test/index.jsp などの要求されたリソースは、そのリソースが所有するすべてのコンテキストと一致します。ホストは、パス /test を持つコンテキストと一致します (一致しない場合、リクエストは処理のためにパス名 " " を持つコンテキストに渡されます)。

5. path="/test" のコンテキストは request/index.jsp を取得し、マッピング テーブルで対応するサーブレットを見つけます。コンテキストは、URL PATTERN が *.jsp であるサーブレットと一致し、JspServlet クラスに対応します。

6. HttpServletRequest オブジェクトと HttpServletResponse オブジェクトを構築し、パラメータとして JspServlet の doGet() または doPost() を呼び出します。ビジネス ロジック、データ ストレージ、その他の手順を実行します。

7. コンテキストは、実行後に HttpServletResponse オブジェクトをホストに返します。

8. ホストは HttpServletResponse オブジェクトをエンジンに返します。

9. エンジンは HttpServletResponse オブジェクトをコネクタに返します。

10. コネクタは、HttpServletResponse オブジェクトをクライアントのブラウザに返します。

最後に、私の記事をよく読んでくださった皆様に感謝申し上げます。ファンの増加と注目度を見ると、常に一定の礼儀が存在します。それほど価値のあるものではありませんが、使用できる場合は直接受け取ることができます!

ソフトウェアテスト面接文書

私たちは高給の仕事を見つけるために勉強しなければなりません。以下の面接の質問は、アリババ、テンセント、バイトなどの一流インターネット企業の最新の面接資料からのものであり、バイトの上司の中には権威ある回答をしている人もいます。 set 面接情報に基づいて、誰もが満足のいく仕事を見つけることができると思います。
 

ここに画像の説明を挿入します

おすすめ

転載: blog.csdn.net/jiangjunsss/article/details/133102090
おすすめ