Tomcat のパフォーマンス最適化方法の簡単な概要

Tomcat のパフォーマンス最適化方法の簡単な概要

Tomcat自体の最適化

  • Tomcat メモリ最適化
    • 起動時に大きなメモリ ブロックが必要であることを JVM に伝えます (メモリを調整するのが最も直接的な方法です)
    • Tomcatの起動スクリプトcatalina.shでjava_OPTSパラメータを設定できます。
    • JAVA_OPTSパラメータの説明
      • server jdkのサーバーバージョンを有効にする
      • Xms Java仮想マシンが初期化されるときの最小メモリ
      • Xmx Java仮想マシンで利用可能な最大メモリ
      • XX: PermSize メモリの永続予約領域
      • XX:MaxPermSize メモリ内の最大永続予約領域
    • 設定例:
    • JAVA_OPTS='-Xms1024m -Xmx2048m -XX: PermSize=256M -XX:MaxNewSize=256m -XX:MaxPermSize=256m'
    • 注: メモリ構成は、サーバー (または仮想マシン) の実際のメモリに応じて構成する必要があります。
    • 有効にするにはTomcatを再起動してください
  • Tomcat IO最適化
    • 必要に応じて、APR を使用して、オペレーティング システム レベルで非同期 IO の問題を解決できます。次に、NIO を使用します。
    • server.xml内
  • Tomcat スレッドの最適化
    • maxThreads="600" /// スレッドの最大数
    • minSpareThreads="100" ///初期化中に作成されるスレッドの数
    • maxSpareThreads="500" /// 作成されたスレッドの数がこの値を超えると、Tomcat は不要になったソケット スレッドを閉じます。
    • acceptCount="700" //リクエスト処理に使用可能なスレッドがすべて使用されたときに、処理キューに入れることができるリクエストの数を指定します。この数を超えるリクエストは処理されません。
  • スレッドプールの使用
    • server.xml に executor ノードを追加し、コネクタの executor プロパティを構成します。
    • namePrefix: スレッドプール内のスレッドの命名プレフィックス
    • maxThreads: スレッドプール内のスレッドの最大数
    • minSpareThreads: スレッドプール内のアイドルスレッドの最小数
    • maxIdleTime: アイドル スレッドの最小数を超えると、残りのスレッドはこの時間待機してからシャットダウンします。
    • threadPriority: スレッドの優先度
<Executor name="tomcatThreadPool" namePrefix="req-exec-"maxThreads="1000" minSpareThreads="50"maxIdleTime="60000"/>
<コネクタ ポート="8080" プロトコル="HTTP/1.1" 実行者="tomcatThreadPool"/>
  • DNSルックアップを無効にする
    • Web アプリケーションがクライアント情報をログに記録する場合、クライアントの IP アドレスもログに記録するか、ドメイン ネーム サーバーを介してマシン名を IP アドレスに変換します。 DNS クエリにはネットワークの使用が必要であり、多くの遠隔サーバーまたは動作していないサーバーから対応する IP アドレスを取得する必要があるため、一定の時間がかかることがあります。 DNS クエリがパフォーマンスに与える影響を排除するために、server.xml ファイルの enableLookups パラメータ値を変更して DNS クエリをオフにすることができます。
  • キャッシュの最適化
    • 静的ページを毎回ディスクから読み取らなくても済むように、静的ページをキャッシュするのが最適です。ここでは、画像、CSS、および js ファイルをキャッシュするためのキャッシュ サーバーとして Nginx を使用し、バックエンドの Tomcat へのアクセスを効果的に削減します。
  • Tomcat で GZIP 圧縮を有効にして Web パフォーマンスを向上させる
    • %TOMCAT_HOME%/conf/server.xml を変更し、ノードを次のように修正します。
    • GZIP の欠点。 GZIP を使用しないプロジェクトと比較すると、GZIP を使用すると、サーバーの圧縮 (CPU 消費) とクライアントの解凍の負荷が増加するため、サーバーの構成要件が高くなります。また、圧縮には時間がかかります。より少ないスペースを占有して高い圧縮率を得たい場合は、より長い時間を犠牲にする必要があります。逆に、時間の方が貴重でスピードが求められる場合は、圧縮率を小さくする必要があり、当然より多くのスペースを占有します (圧縮率 = 元のコンテンツのサイズ/圧縮サイズ、圧縮率が大きいほど、圧縮後の圧縮パッケージが占めるサイズは小さくなります)。これが物理的なスペースと時間の矛盾です。
  • nginxを使用してクラスターを作成する
    • JVM仮想マシンのチューニング
    • オペレーティングシステムのチューニング
    • オペレーティングシステムの最適化としては、利用可能なメモリ容量を可能な限り増やし、CPU 周波数を向上させ、ファイルシステムの読み取りおよび書き込み速度を確保することなどが挙げられます。

以上がこの記事の全内容です。皆様の勉強のお役に立てれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。

以下もご興味があるかもしれません:
  • Tomcat のパフォーマンス最適化のための Apr モジュールの構築方法
  • Tomcatのセキュリティ構成とパフォーマンスの最適化の詳細な説明
  • Tomcat パフォーマンスの最適化 (パフォーマンスの概要)
  • Nginx+Tomcat で高性能な負荷分散クラスターを構築する方法
  • JVM Tomcat パフォーマンス プラクティス (推奨)

<<:  Linux の MySQL でリモート接続を承認する方法

>>:  Javascript における非同期待機の詳細な理解

推薦する

td セルを結合した場合の td 幅の問題

以下の例では、名前が入っている td の幅が 60px のとき、2 行目の文字数が少ない場合は正常に...

Centos7 での NFS サービス構築の紹介

目次1. サーバー2. クライアント3. テストサービス1. サーバー1. YUMソースを使用してN...

MySQLインデックスの基礎となるデータ構造の詳細

目次1. インデックスの種類1. B+ツリー2. MyISAM と InnoDB の B+ ツリー ...

Linux で履歴レコードを表示し、タイムスタンプを追加するためのヒント

Linux で履歴レコードを表示し、タイムスタンプを追加するためのヒントbashに詳しい人なら、hi...

Docker Alibaba Cloud RocketMQ 4.5.1 のデプロイプロセスの詳細な説明

検索ミラー docker 検索 rocketmq画像バージョンを表示他の画像を表示したい場合は、画像...

ウェブサイトのアクセス速度を向上させるための徹底的な最適化に関するヒント

ウェブサイトのアクセス速度を向上させるための徹底的な最適化に関するヒント。ウェブサイトのアクセス速度...

phpstudy から Linux への MySQL の移行に関するチュートリアル

プロジェクトの目的元のWindows環境でphpstudyを使用して構築されたMySQL 5.5.5...

jQueryは広告を上下にスクロールする効果を実現します

この記事では、広告を上下にスクロールする効果を実現するためのjQueryの具体的なコードを参考までに...

Ubuntuのバックアップ方法(4種類)のまとめ

方法1:リスピンを使用するには、次の手順に従ってください。 sudo add-apt-reposit...

JS でオブジェクト プロパティを簡単にトラバースするいくつかの方法

目次1. 自己列挙可能なプロパティ2. Object.values()はプロパティ値を返します3. ...

Docker nginxのインストールと設定方法

DockerでNginxイメージをダウンロードする docker プル nginx Docker イ...

IIS サーバーから apk ファイルをダウンロードする際の 404 エラーの解決策

最近、IIS をサーバーとして使用すると、apk ファイルがサーバーにアップロードされましたが、ダウ...

axiosのシンプルなカプセル化と使用例コード

序文最近、プロジェクトを構築しているときに、リクエストのカプセル化について考え、どのようにカプセル化...

TeamCenter12 にログインする際の 404/503 問題の解決方法

TeamCenter12はアカウントのパスワードを入力し、ログインをクリックすると、404または50...

JavaScriptはランダムコードの生成と検証を実現する

JavaScriptでのランダムコードの生成と検証は参考までに。具体的な内容は以下のとおりです。イベ...