最近、大規模で需要の高いWebアプリケーションをTomcat4からTomcat5.5に移行しましたが、JVMの一時停止に関連しているように見えるいくつかの特有の速度低下動作に気づきました。アプリケーションを実行し、Tomcat 4で時間の経過とともに増加する負荷をサポートするために、以下のように多くの標準的ではないJVMパラメーターが設定および調整されました。また、Tomcat JVM調整の経験がある人が、有害と思われることについてコメントできることを期待しています。 Tomcat5.5インストールに。これらの一部は以前のバージョンのJavaから引き継がれる可能性があることにも注意してください(これらのパラメーターを使用してJava1.6でTomcat4をしばらくの間正常に実行していましたが、Java1.4でのガベージコレクションを支援するために導入された可能性があります。私たちのTomcat4は長い間インストールされており、今では良いことよりも害を及ぼす可能性があります)。
いくつかのメモ:
- アプリケーションのメモリフットプリントは約1GBで、おそらくわずかに超えています。
- CPUは問題ではありません-アプリを提供するすべてのマシン(負荷分散)は30%未満のCPUです
- マシンの物理メモリに多くのヘッドルームがあります。
- -XX:MaxPermSize = 512mは、5.5アップグレードの一部として追加された唯一のパラメーターであり、メモリ不足のpermgenスペースの問題(解決済み)に対応していました。
- Java 1.6、SolarisOSで実行
-server -Xms1280m -Xmx1280m -XX:MaxPermSize = 512m -XX:ParallelGCThreads = 20 -XX:+ UseConcMarkSweepGC -XX:+ UseParNewGC -XX:SurvivorRatio = 8 -XX:TargetSurvivorRatio = 75 -XX:MaxTenuringThreshold = 0 -XX:+ AggressiveOpts -XX:+ PrintGCDetails -XX:+ PrintGCTimeStamps -XX:-TraceClassUnloading -Dsun.io.useCanonCaches = false -Dsun.net.client.defaultConnectTimeout = 60000 -Dsun.net.client.defaultReadTimeout = 60000