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 における非同期待機の詳細な理解

推薦する

MySQL の NULL 値に関する体験談と分析チュートリアルシリーズ

目次1. テストデータ2. ヌル値による不便3. スペース、空の値、null をどのように判断すれば...

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

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

Vmvare 仮想マシンを使用して Ubuntu のルート ディレクトリをパーティション分割する方法の紹介

目次序文根拠手順1. CDから仮想マシンを起動する2. GPartedツールを使用してパーティション...

CentOS 8で自動更新を設定するための手順を完了する

データとコンピューターに対してできる最善のことは、それらを安全に保つことです。アップデートを有効にす...

Dockerfileを使用してDockerイメージを構築する手順

Dockerfile は、命令を含むテキスト ファイルです。各命令はレイヤーを構築するため、各命令の...

Docker コンテナのネットワーク設定によく使われるコマンドの詳しい説明

基本的なネットワーク構成Docker はイメージに基づいて複数のコンテナを「開く」ことができ、各コン...

Linux でテキストを表示するためのヒント (非常に実用的!)

序文日常の開発では、サーバー上でさまざまなテキストやログの表示操作を実行する必要があることがよくあり...

Linux centos7 に phpMyAdmin をインストールするチュートリアル

yum install httpd php mariadb-server –yランプの動作環境を設定...

CentOS 7.4 64 ビット版に MySQL 8.0 をインストールして設定するための詳細な手順

ステップ1: MySQL YUMソースを取得するMySQLの公式サイトにアクセスして、RPMパッケー...

Vue で Alibaba のアイコンフォント ベクター アイコンを使用する方法について

インターネット上には多くのインポート方法があり、公式も3つのインポート方法を提供していますが、インポ...

MySQL データベース シェル import_table データ インポート

目次MySQL Shell import_table データのインポート1. import_tabl...

パフォーマンス負荷診断にMySQLシステムデータベースを使用する方法

ある達人がかつて、自分の妻のことを知るのと同じくらい、自分が管理するデータベースのことを知るべきだと...

jsでの位置計算を徹底的に理解するのに役立つ記事

目次導入スクロール要素.スクロール()要素.scrollHeight/scrollWidth要素.s...

HTMLのテーブルタグの基本学習チュートリアル

表ラベルの構成HTML 内の表は <table> タグで構成されており、ブラウザはタグを...

Docker データボリュームの一般的な操作コードの例

開発者が Dockerfile を使用してイメージをビルドする場合は、イメージをビルドするときにデー...