tomcatのデフォルトパラメータは開発環境用に作成されていますが、本番環境、特にメモリとスレッドの構成には適していません。デフォルトは非常に低く、パフォーマンスのボトルネックになりやすいです。
tomcatメモリ最適化
LinuxはTOMCAT_HOME / bin / catalina.shを変更し、前に追加します
JAVA_OPTS="-XX:PermSize=64M -XX:MaxPermSize=128m -Xms512m -Xmx1024m -Duser.timezone=Asia/Shanghai"
WindowsはTOMCAT_HOME / bin / catalina.batを変更し、前に追加します
set JAVA_OPTS=-XX:PermSize=64M -XX:MaxPermSize=128m -Xms512m -Xmx1024m
最大ヒープメモリは1024mで、現在のハードウェアではまだ低いですが、実装時には、マシンの特定のハードウェア構成に従って最適化されます。
Tomcatスレッドの最適化
-
< コネクタ ポート = "80" プロトコル = "HTTP / 1.1" maxThreads = "600" minSpareThreads = "100" maxSpareThreads = "500" acceptCount = "700"
-
connectionTimeout
=
"20000"
redirectPort
=
"8443"
/>
maxThreads = "600" ///スレッドの最大数
minSpareThreads = "100" ///初期化中に作成されたスレッドの数
maxSpareThreads = "500" ///作成されたスレッドの数がこの値を超えると、Tomcatは不要になったソケットを閉じるスレッド。
acceptCount = "700" //リクエストの処理に使用可能なすべてのスレッドが使用され、この数を超えるリクエストが処理されない場合に、処理キューに入れることができるリクエストの数を指定します
httpコネクタの最適化は次のとおりです。クラスタの負荷分散にapacheとtomcatを使用し、apacheとtomcatプロトコルの転送にajpプロトコルを使用する場合は、ajpコネクタを最適化する必要があります。
-
< コネクタ ポート = "8009" プロトコル = "AJP / 1.3" maxThreads = "600" minSpareThreads = "100" maxSpareThreads = "500" acceptCount = "700"
-
connectionTimeout
=
"20000"
redirectPort
=
"8443"
/>
tomcatには複数のコネクターがあるため、tomcatスレッドの構成は、スレッド・プールを共有する複数のコネクターもサポートします。
まず第一に。/conf/server.xmlを開いて追加します
<Executor name="tomcatThreadPool" namePrefix="catalina-exec-" maxThreads="500" minSpareThreads="20" maxIdleTime="60000" />
最大スレッドは500(一般的なサーバーで十分です)、アイドルスレッドの最小数は20、スレッドの最大アイドル時間は60秒です。
次に、<Connector ...>ノードを変更し、executor属性を追加します。executorはスレッドプールの名前に設定されます。
<Connector executor="tomcatThreadPool" port="80" protocol="HTTP/1.1" connectionTimeout="60000" keepAliveTimeout="15000" maxKeepAliveRequests="1" redirectPort="443" />
複数のコネクターが1つのスレッドプールを共有できるため、tomcatThreadPoolスレッドプールを使用するようにajpコネクターを設定することもできます。
DNSクエリを無効にする
Webアプリケーションがクライアントの情報を記録する場合は、クライアントのIPアドレスも記録するか、ドメインネームサーバーを介してマシン名を検索してIPアドレスに変換します。
DNSクエリはネットワークを占有する必要があり、非常に遠くにある多くのサーバーまたは機能しないサーバーから対応するIPを取得するプロセスが含まれます。これには、一定の時間がかかります。
server.xmlファイルのConnector要素を変更し、属性enableLookupsパラメータ値を変更します。enableLookups = "false"
trueの場合、DNSクエリに対してrequest.getRemoteHost()を呼び出すことにより、リモートクライアントの実際のホスト名を取得できます。falseの場合、DNSクエリを実行せず、そのIPアドレスを返します
セッションの有効期限を設定する
conf \ web.xmlのパラメーターで指定:
-
< セッション構成 >
-
< セッションタイムアウト >
180
</ セッションタイムアウト >
-
</ セッション構成 >
-
単位は分です。
AprプラグインはTomcatのパフォーマンスを向上させます
Tomcatは、APRを使用して優れたスケーラビリティとパフォーマンスを提供し、ローカルサーバーテクノロジーをより適切に統合できます。
APR(Apache Portable Runtime)は、Apache HTTP Server 2.xの中核となる移植性の高いライブラリです。APRには、高度なIO関数(sendfile、epoll、OpenSSLなど)、OSレベルの関数(乱数生成、システムステータスなど)、ローカルプロセス管理(共有メモリ、NTパイプ、UNIXソケット)へのアクセスなど、多くの用途があります。これらの機能により、Tomcatは通常のフロントエンドWEBサーバーとして機能し、他のローカルWebテクノロジーとの統合が向上し、一般的にJavaを単にバックエンドコンテナーとしてではなく、高性能Webサーバープラットフォームとしてより効率的にすることができます。
本番環境では、特にWebサーバーとしてTomcatを直接使用する場合は、Tomcat Nativeを使用してパフォーマンスを向上させる必要があります。
TomcatのAPRの利点を測定する最良の方法は、低速のネットワーク(インターネットのシミュレーション)を使用し、Tomcatスレッドの数を300を超えて開き、多数の同時要求をシミュレートすることです。
APRがない場合、基本的に300スレッドがすぐに使い果たされ、将来のリクエストは待機する必要があります。しかし、APRを使用すると、並行スレッドの数が大幅に減少し、元の300からすぐに数十にまで減少する可能性があり、ブロックせずに新しい要求が入ります。
LAN環境では400同時でも処理・送信は一瞬で完了しますが、実際のインターネット環境ではページ処理時間は0.1%以下でほとんどの時間をページ送信に費やしています。APRを使用しない場合、スレッドは一度に1人のユーザーしか処理できません。これにより、ブロッキングが発生します。したがって、実稼働環境でaprを使用することは非常に必要です。
(1)APR tomcat-nativeをインストールする apr-1.3.8.tar.gzは/ usr / local / aprにインストールされます #tar zxvf apr-1.3.8.tar.gz #cd apr-1.3.8 #。/ configure; make; make install apr-util-1.3.9.tar.gzが/ usr / local / apr / libにインストールされている #tar zxvf apr-util-1.3.9.tar.gz #cd apr-useful-1.3.9 #。/ configure --with-apr = / usr / local / apr ---- with-java-home = JDK; make; make install #cd apache-tomcat-6.0.20 / bin #tar zxvf tomcat-native.tar.gz #cd tomcat-native / jni / native #。/ configure --with-apr = / usr / local / apr; make; make install (2)APRを統合するためのTomcatのセットアップ Tomcatの起動シェル(startup.sh)を変更し、起動パラメーターをファイルに追加します。 CATALINA_OPTS = "$ CATALINA_OPTS -Djava.library.path = / usr / local / apr / lib"。 (3)成功したインストールを判断します。 次の起動ログが表示されれば、成功です。 2007-4-26 15:34:32 org.apache.coyote.http11.Http11AprProtocol init
http://blog.sina.com.cn/s/blog_417b97470100glmi.htmlを参照してください
http://datadig.blog.163.com/blog/static/171229928201082075946726/
tomcatのデフォルトパラメータは開発環境用に作成されていますが、本番環境、特にメモリとスレッドの構成には適していません。デフォルトは非常に低く、パフォーマンスのボトルネックになりやすいです。