GCはアプリケーションロジック自体を変更すべきではありません。ヒットのようなメトリックは、GCが実行されるかどうかではなく、Solrのデータストアの内容に依存します。エラーは、GCの動作、主に大規模なGCの一時停止によるタイムアウトの影響を受ける可能性があります。これは、最初に追跡する必要があると言います。
GC時間(新世代と旧世代の両方)に焦点を当てますが、これはアプリケーション(Solr)の大きな障害になるためです。これはJMXを介して行うことができます(広範なドキュメントはhttps://wiki.apache.org/solr/SolrJmx、java.lang:type = GarbageCollectorの下にGC beanがあります)。プロファイラや監視ツールを選択するだけです。時間が累積されることに
YGC: Number of young generation garbage collection events.
YGCT: Young generation garbage collection time.
FGC: Number of full GC events.
FGCT: Full garbage collection time.
注:([1] [ドキュメント])最も関連のメトリックは可能性があり、 "JSTAT -gc $ PID" を使用して、GCメトリックをダンプすることができますコンソールで
。 jstatコマンドに間隔を追加すると、統計情報が連続的に出力されます。
これらの数値に基づいて、GC一時停止スパイクが発生し、それがSolr Errorスパイクと相関する場合、それらを減らすことができます。私たちがそれに取り組んでいる一方で
は、GCの回数を追跡するための別の良い方法は、有効にすることです:
(各一時停止の期間だけでなく、時間を含む各GC、のために、より具体的な詳細を記録します
-XX:+PrintGCApplicationStoppedTime
-XX:+PrintGCDetails
GCによって引き起こされますが他の理由もあります)。
Total time for which application threads were stopped: 0.1135087 seconds
あなたの質問に答えるかどうか教えてください。
https://wiki.apache.org/solr/SolrPerformanceProblemsおよびhttps://wiki.apache.org/solr/ShawnHeisey#GC_Tuning_for_Solrも参照してください。 – Risadinha