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

推薦する

Linux での screen コマンドの使用方法の詳細な説明

GUNスクリーン:公式サイト: http://www.gnu.org/software/screen...

react-color を使用してフロントエンドのカラーピッカーを実装する方法

背景次の図に示すように、 react-color を使用してフロントエンド インターフェースのカラー...

Linux プラットフォームでの Zabbix エージェントのインストールと設定方法

ここでは、Linux プラットフォームでの Zabbix エージェントのインストールと構成について簡...

純粋な CSS ドロップダウン メニュー

成果を達成する実装コードhtml <div id="コンテナ"> &...

Windows 2016 Server セキュリティ設定

目次システムアップデート構成Windows Update サーバーの変更自動更新を有効にして許可する...

エコー後に要素編集フォームel-radioが選択できない問題を解決します

目次序文質問オンラインソリューション序文この記事の内容は私がこの業界に入ったときのメモを元にしている...

Vue から React への変換入門ガイド

目次デザインコンポーネント通信ライフサイクルイベント処理品格とスタイルクラススタイル条件付きレンダリ...

CSS3 で六角形の境界線を実装するサンプルコード

一番外側の boxF は 120 度回転し、2 番目の boxS は -60 度回転し、3 番目の ...

LinuxデバッガGDBの基本的な使い方の詳細な説明

目次1. 概要2. gdbデバッグ2.1. ブレークポイントを設定する2.1.1. ブレークポイント...

mysql8.0 Windows x64 zip パッケージのインストールと構成のチュートリアル

MySQL 8 Windows版 zipインストール手順(ダウンロードアドレス) 1. ZIPファイ...

MySQL カーソルの原理と使用例の分析

この記事では、例を使用して MySQL カーソルの原理と使用方法を説明します。ご参考までに、詳細は以...

antd+reactプロジェクトをviteに移行するためのソリューションの詳細な説明

Antd+react+webpackは、多くの場合、Reactテクノロジースタックに基づくフロントエ...

VMware15 centos7 ブリッジモード ssh に突然アクセスできなくなる問題を解決する

仮想マシンに独自の LAN IP を持たせたいので、テストを容易にするためにブリッジを使用します。 ...

停止したすべてのDockerコンテナを1つのコマンドで再起動する

停止したすべてのDockerコンテナを1つのコマンドで再起動するdocker ps -a | gre...

Reactでファイルパスエイリアスを素早く設定する方法

React は、ユーザー インターフェイスを構築するための JavaScript ライブラリです。F...