2013-03-04 15 views
5

は問題がSuggestRequestHandlerのため(のRequestHandler名=「/提案」)ということであった私たちの場合はSolrには(JVM)のピーク時間ごと

を解決し、今facelimitが設定されています:10 はまた、それぞれのいくつかの要求がありました単一の提案は、アプリケーションによって行われた提案します。なぜこれが(ちょうど)毎時のピークにつながったのかはまだはっきりしていません...

ありがとうございました。

1時間ごと(12:00、13:00、14:00、...、20:00、21:00、22:00、23:00)、Solr/Javaプロセスにはピークがあります。 Solrが実行されているJavaプロセスで、CPU使用率が3倍になり、応答時間がかかることを意味します。通常、応答には最大9秒かかります。私たちのサイトにトラフィックがある場合にのみ、常に2-3分間(Javaを呼び出すPHPアプリケーションがあります)。 Crondは完全に無効になっていましたが、1時間ごとに問題が残りました。 (?またはそうでないかもしれない)と基本的に私たちは、ほぼすべてのGCとメモリの組み合わせを試したと思う

誰かこれがなぜ起こるか任意のアイデア - ここではいくつかの詳細を:

  • システム:32ギガバイトのRAM、24コアは、(主に共有PHP-FPMと、それでも単離されたばかりのSolr試験と同じ問題として)
  • のSolrバージョン3.6(突堤に - 一時もGlassfishの)
  • OS:RHEL 5.7
  • マルチコア・セットアップ(各2つのコアと4つのインデックス)
件の

使用済みハンドラ(solrconfig.xml):

<requestHandler name="standard" class="solr.SearchHandler" default="true"> 
<requestHandler name="dismax" class="solr.SearchHandler" > 
<requestHandler name="/suggest" class="solr.SearchHandler"> 
<requestHandler name="/update" class="solr.XmlUpdateRequestHandler" /> 
<requestHandler name="/analysis/document" class="solr.DocumentAnalysisRequestHandler" /> 
<requestHandler name="/analysis/field" class="solr.FieldAnalysisRequestHandler" /> 
<requestHandler name="/admin/" class="org.apache.solr.handler.admin.AdminHandlers" /> 
<requestHandler name="/admin/ping" class="PingRequestHandler"> 
<requestHandler name="/debug/dump" class="solr.DumpRequestHandler" > 
<requestHandler name="/replication" class="solr.ReplicationHandler" > 

(も複製およびpingなしテスト)

使用されるフィルタ:

<filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" enablePositionIncrements="true" /> 
<filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" 
<filter class="solr.LowerCaseFilterFactory"/> 
<filter class="solr.PortugueseMinimalStemFilterFactory"/> 
<filter class="solr.ISOLatin1AccentFilterFactory"/> 
<filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" enablePositionIncrements="true"/> 
<filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" 
<filter class="solr.LowerCaseFilterFactory"/> 
<filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="false"/> 
<filter class="solr.PortugueseMinimalStemFilterFactory"/> 
<filter class="solr.LowerCaseFilterFactory" /> 
<filter class="solr.EdgeNGramFilterFactory" maxGramSize="30" minGramSize="1"/> 
<filter class="solr.ASCIIFoldingFilterFactory"/> 
<filter class="solr.LowerCaseFilterFactory" /> 

インデックスサイズ:〜100メガバイト(実際にも、少し下に)

現在のJavaオプション:

JAVA_OPTS="-Xmx4096m -Xms4096m -XX:+UseGCOverheadLimit -XX:+UseConcMarkSweepGC -XX:+UseTLAB -XX:MaxPermSize=128m -XX:+DisableExplicitGC -Dsun.rmi.dgc.server.gcInterval=300000 -Dsun.rmi.dgc.client.gcInterval=300000 -XX:NewRatio=1 -Xloggc:/shop/logs/live/solr/gc.log -verbose:gc -XX:+PrintGCDateStamps" 

1024、2048、8192、および12 GBのオプションは同じですが、まったく役に立ちませんでした。

その他の試み:

JAVA_OPTS="-server -Xmx2048m -XX:MaxPermSize=128m -XX:+UseParNewGC  -XX:+UseConcMarkSweepGC -XX:+UseTLAB -XX:+CMSIncrementalMode -XX:+CMSIncrementalPacing -XX:CMSIncrementalDutyCycleMin=0 -XX:CMSIncrementalDutyCycle=10 -XX:MaxTenuringThreshold=0 -XX:SurvivorRatio=256 -XX:CMSInitiatingOccupancyFraction=60 -XX:+DisableExplicitGC" 

その他の試み:ここ

JAVA_OPTS="-Xmx2048m -Xms2048m -XX:+UseGCOverheadLimit -XX:+UseConcMarkSweepGC -XX:+UseTLAB -XX:MaxPermSize=128m -XX:+DisableExplicitGC -Djava.util.logging.config.file=/opt/solr-jetty/etc/jetty-logging.properties" 

(例えば、完全な時間の問題の)gc.logの抜粋:そこも

2013-03-03T19:59:04.157-0300: 8087.754: [GC 3433559K->1788819K(3914560K), 0.0358190 secs] 
2013-03-03T19:59:12.031-0300: 8095.628: [GC 3437075K->1792088K(3914560K), 0.0365830 secs] 
2013-03-03T19:59:22.419-0300: 8106.016: [GC 3440344K->1803266K(3914560K), 0.0422040 secs] 
2013-03-03T19:59:29.044-0300: 8112.641: [GC 3451522K->1815743K(3914560K), 0.0439870 secs] 
2013-03-03T19:59:37.002-0300: 8120.599: [GC 3463999K->1821601K(3914560K), 0.0378990 secs] 
2013-03-03T19:59:45.468-0300: 8129.065: [GC 3469857K->1822911K(3914560K), 0.0386720 secs] 
2013-03-03T19:59:53.750-0300: 8137.347: [GC 3471167K->1829299K(3914560K), 0.0405040 secs] 
2013-03-03T20:00:01.829-0300: 8145.426: [GC 3477555K->1832046K(3914560K), 0.0383070 secs] 
2013-03-03T20:00:06.327-0300: 8149.924: [GC 3480302K->1831567K(3914560K), 0.0450550 secs] 
2013-03-03T20:00:11.123-0300: 8154.719: [GC 3479823K->1843283K(3914560K), 0.0401710 secs] 
2013-03-03T20:00:14.360-0300: 8157.957: [GC 3491539K->1854079K(3914560K), 0.0368560 secs] 
2013-03-03T20:00:17.419-0300: 8161.015: [GC 3502335K->1855130K(3914560K), 0.0375530 secs] 
2013-03-03T20:00:20.006-0300: 8163.603: [GC 3503386K->1861867K(3914560K), 0.0413470 secs] 
2013-03-03T20:00:22.726-0300: 8166.323: [GC 3510123K->1870292K(3914560K), 0.0360600 secs] 
2013-03-03T20:00:25.420-0300: 8169.017: [GC 3518548K->1872701K(3914560K), 0.0326970 secs] 
2013-03-03T20:00:27.138-0300: 8170.735: [GC 3520957K->1873446K(3914560K), 0.0381430 secs] 
2013-03-03T20:00:28.748-0300: 8172.345: [GC 3521702K->1889189K(3914560K), 0.0379160 secs] 
2013-03-03T20:00:30.404-0300: 8174.001: [GC 3537445K->1887193K(3914560K), 0.0407670 secs] 
2013-03-03T20:00:32.713-0300: 8176.309: [GC 3535449K->1892863K(3914560K), 0.0366880 secs] 
2013-03-03T20:00:34.791-0300: 8178.388: [GC 3541119K->1899095K(3914560K), 0.0398270 secs] 
2013-03-03T20:00:36.533-0300: 8180.129: [GC 3547351K->1910071K(3914560K), 0.0373960 secs] 
2013-03-03T20:00:39.037-0300: 8182.634: [GC 3558327K->1904198K(3914560K), 0.0393020 secs] 
2013-03-03T20:00:41.548-0300: 8185.144: [GC 3552454K->1912352K(3914560K), 0.0444060 secs] 
2013-03-03T20:00:43.771-0300: 8187.368: [GC 3560608K->1919304K(3914560K), 0.0427220 secs] 
2013-03-03T20:00:47.411-0300: 8191.008: [GC 3566354K->1918102K(3914560K), 0.0418150 secs] 
2013-03-03T20:00:50.925-0300: 8194.522: [GC 3564290K->1930888K(3914560K), 0.0414700 secs] 
2013-03-03T20:00:52.991-0300: 8196.588: [GC 3579144K->1933251K(3914560K), 0.0349600 secs] 
2013-03-03T20:00:53.027-0300: 8196.624: [GC 1939697K(3914560K), 0.0256300 secs] 
2013-03-03T20:00:54.208-0300: 8197.804: [GC 2780505K(3914560K), 0.1424860 secs] 
2013-03-03T20:00:55.684-0300: 8199.281: [GC 3029503K->1389766K(3914560K), 0.0370380 secs] 
2013-03-03T20:00:58.289-0300: 8201.886: [GC 2213458K->570843K(3914560K), 0.0413220 secs] 
2013-03-03T20:01:00.672-0300: 8204.268: [GC 1962741K->319619K(3914560K), 0.0410840 secs] 
2013-03-03T20:01:02.906-0300: 8206.503: [GC 1966833K->319605K(3914560K), 0.0453730 secs] 
2013-03-03T20:01:06.861-0300: 8210.458: [GC 1967861K->330864K(3914560K), 0.0425570 secs] 
2013-03-03T20:01:10.067-0300: 8213.664: [GC 1979120K->336541K(3914560K), 0.0479380 secs] 
2013-03-03T20:01:12.587-0300: 8216.184: [GC 1984797K->343203K(3914560K), 0.0376810 secs] 

grep -oP "、[1-9] .. *?secs] $"/shop/logs/live/solr/gc(1日以上) .log 、1.1727270秒] 、1.0390840秒]

誰かが何らかのアイデアをしている、またはすでにsolr/jvmでこの現象を起こしていましたか?

+0

リスト内の最後の3つのリクエストハンドラを無効にしようとしたら、どうなるか見てみましょう。また、どのようにドキュメント分析を開始するのですか? –

+0

GCアクティビティを除外しましたか? '-Xloggc:/ shop/logs/live/solr/gc.log'にGC活動を表示していることがわかりました。あなたがそうした場合は、あなたの質問にそれを含めてください。 – ericson

+0

それはおそらくコンピュータ上で毎時実行される何か他のものですか?ボットは1時間ごとに訪問していますか?または、ISPが1時間ごとに調整していますか? – Patashu

答えて

0

インデックスサイズがちょうど100メガバイトで、問題がGCに関連している場合、私はで開始する約256メートルで開始し、それが

  • 十分ですかどうかを確認し、

    1024未満に-Xmxを削減
    1. オプションで+ PrintGCApplicationStoppedTime:あなたは-XXが含まれていない限り、あなたのGCログを信じてはいけない初め
    2. 使用最新のJDK
  • +0

    また、お返事いただきありがとうございます!すべての非常に合理的な:-) –

    5

    で任意の-XXを使用していけません。それらを疑う。あなたがこのフラグを含まない限り、非常に長くなり、報告されない休止部分と休止部分があります。例えば。私は、時折長時間実行されるカウントされたループが、安全なポイントに達するのに15秒かかり、GCが実際に何らかの作業を行った箇所の0.08秒の部分しか報告しなかったために一時停止が発生するのを見ました。 "GC"の一部とはみなされず、GCのログフラグによって報告されなくなる原因もたくさんあります。

    jHiccupをエージェントとして追加して、JVMログの正直さに頼るのではなく、観測された一時停止/グリッチ/ストール/しゃっくりについて報告することができます。マルチ秒のグリッチが表示された場合、JVMが一時停止していることがわかります。スムーズなJVM操作が表示されている場合は、他の構成部分を確認することができます。

    +0

    私はあなたにこれをデバッグするための非常に良い方法(これは次のステップの1つだっただろう)と聞こえるupvoteを与えたいと思います... :-) とにかく、1つの質問jHiccup :Glassfishに一時的に切り替えると、jHiccupをGlassfishの前に置くことは可能ですか?単にbinコマンドにパッチを当てるだけですか? –

    +0

    READMEには、jHiccupを挿入するさまざまな方法についての注意点があります。私は最も簡単なのが、_JAVA_OPTIONSを使ってそれを知らせることです:export _JAVA_OPTIONS = ' - javaagent:/path/to/jHiccup/bin/jHiccup.jar' –

    関連する問題