Solr 8.8.2でのSolrクラウドのタイムアウトエラー

トピック作成者:ks-solruserml-bot (2024/07/22 21:20 投稿)
1
CloseClose

(The bot translated the original post https://lists.apache.org/thread/nj7zmgf00n1kcckqqdk6qm3nvxzc5wcc into Japanese and reposted it under Apache License 2.0. The copyright of posted content is held by the original poster.)

こんにちは、

最近、私たちはSitecoreインスタンスにSolrCloudを実装しました。5つのSolrノードがあります。2つのSolrノード(それぞれ1つのレプリカのみ)で正しい結果が表示されていないことがあります。以下のエラーが問題のレプリカで繰り返し表示されているようですね。既知の問題があるかどうか、私たちを助けてくれるでしょうか。

12/13/2022, 2:06:53 PM
ERROR true
x:sitecore_web_index_shard1_replica_n4
ErrorReportingConcurrentUpdateSolrClient
SolrCmdDistributor$Reqを呼び出した際のエラー: cmd=delete{version=-1752137584955359232,​query=(_group:(8cae9f6a1b7a4d08a3f789bc623a6997) AND _indexname:(sitecore_web_index)),​commitWithin=-1}; node=StdNode: https://FTC-WEB461P:8984/solr/sitecore_web_index_shard1_replica_n1/ to https://FTC-WEB461P:8984/solr/sitecore_web_index_shard1_replica_n1/
java.util.concurrent.TimeoutException
at org.eclipse.jetty.client.util.InputStreamResponseListener.get(InputStreamResponseListener.java:216)
at org.apache.solr.client.solrj.impl.ConcurrentUpdateHttp2SolrClient$Runner.sendUpdateStream(ConcurrentUpdateHttp2SolrClient.java:246)
at org.apache.solr.client.solrj.impl.ConcurrentUpdateHttp2SolrClient$Runner.run(ConcurrentUpdateHttp2SolrClient.java:181)
at com.codahale.metrics.InstrumentedExecutorService$InstrumentedRunnable.run(InstrumentedExecutorService.java:180)
at org.apache.solr.common.util.ExecutorUtil$MDCAwareThreadPoolExecutor.lambda$execute$0(ExecutorUtil.java:218)
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)

よろしくお願いします。
Shanti

返信投稿者:ks-solruserml-bot (2024/07/22 21:20 投稿)

その出力に​が含まれていることから、それをsolr.logから直接取得するのではなく、管理UIからコピーしたようですね。それは大したことではありませんが、ログファイルを見るとずっと見やすいですよ。

そこで見たところ、SitecoreがdeleteByQueryを使用しているようですね。任意のdeleteByQueryは、一致するすべてのID値を取得するクエリを実行し、それらのID値でdeleteByIdを実行する二段階のプロセスに置き換えるべきです。

deleteByQueryを使用すると、インデックスに非常に長い一時停止が発生する可能性があります。

次の架空のシナリオを想像してみてください:

インデックスはT+0秒で非常に大きなセグメントのマージを開始します。このマージには2時間かかります。これは明示的な最適化操作であるか、完全に自動的なセグメントマージであるかもしれません。最適化操作はdeleteByQueryで非常に長い一時停止が発生する可能性がありますが、自動マージでも同様に起こる可能性があります。

T+30秒でdeleteByQueryが発行されます。これは自動インデックス化の一部であるか、誰かが手動で実行したものかもしれません。

そのdelete操作とその後に来るすべてのインデックス更新は、大きなインデックスマージが完了するまでの時間だけ一時停止します。この架空のシナリオでは、それが2時間です。

この問題に直面したとき、私は数日間この問題を解決しようとしていました。この問題を指摘してくれたのはおそらくYonikだったと思います。

おそらくすべてのインデックス作業はあなたのSitecoreインストールによって行われているでしょう。もしインデックス作業が変更され、私が言及した二段階のプロセスでdeleteByQueryが置き換えられれば、この問題は解消されるでしょう。

よろしくお願いします。
Shawn

トピックへ返信するには、ログインが必要です。

KandaSearch

Copyright © 2006-2024 RONDHUIT Co, Ltd. All Rights Reserved.

投稿の削除

この投稿を削除します。よろしいですか?