重負荷時のソフトコミットが遅い?

トピック作成者:ks-solruserml-bot (2024/08/21 22:12 投稿)
9
OpenOpen

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

こんにちは、

最近、ソフトコミットが最大30秒かかるという問題に直面しました。問題のアプリケーションは、各インタラクションごとにドキュメントを作成し、インタラクションの終了時にソフトコミットを行っていました。数十人のクライアントがこのようなインタラクションを連続して送信すると、ソフトコミットがますます遅くなり、遅延の原因がソフトコミットであることがわかりました。

XML設定のコミットタイミングに関する変更はありません。JVMには20GBのヒープスペースが割り当てられており、使用中は常に10GBで安定しているようで、ディスク上には約25Mのドキュメントがあり、データの総量は150GBに達しています。すべてが1シャード上にあり、2つのホストにそれぞれ1インスタンスのコレクションがあります。両方のホストの基盤ディスクはSSDです。

ドキュメントやコードを調査する前に、ソフトコミットがそのような動作を引き起こす可能性のある即時のアイデアがあるかどうか知りたいと思いました。

ソフトコミットが最大30秒かかる原因についての知識をお持ちの方がいれば、ぜひ教えてください。

よろしくお願いします、
Koen De Groote

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

全体の設定ファイルを共有してもらえますか?具体的には、solrconfig.xml、スキーマ、およびそれらによって参照されるファイルすべてです。スキーマファイルは、Solrのバージョンや設定のその他の部分によって、managed-schema.xmlmanaged-schemaschema.xml、あるいは別の名前である可能性があります。

通常、これらのファイルには機密情報は含まれていませんが、もし含まれている場合は、機密データを含むセクション全体を削除するのではなく、できるだけ最小限に編集してください。

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

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

Shawn、

これらのファイルを見た結果、共有することはできません。

私が言えることは、数百のフィールド、dynamicFields、およびcopyFieldsがあるということです。

updatehandlersolr.DirectUpdateHandler2を使用しています(ソースコードで見る限り、通常のupdateHandlerを拡張している唯一のものです)。autoCommitの最大時間は60000ミリ秒、autoSoftCommitの最大時間は1000ミリ秒です。

よろしくお願いします、
Koen

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

ファイルディスクリプタ/オープンファイルハンドルの制限に関連している可能性がありますか?

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

監視によると、システム全体での過負荷期間中にファイルハンドルやファイルディスクリプタの使用量に増加は見られません。

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

問題のアプリケーションは、各インタラクションごとにドキュメントを作成し、インタラクションの終了時にソフトコミットを行っていました。

また、autoSoftCommitのインターバルが1秒であるとも述べています。もしリアルタイム検索(NRT)が本当に必要であれば、クライアントが各挿入ごとにソフトコミットを送信するのはやめることをお勧めします。非常に短いautoSoftCommitのインターバルがすでに書き込みを即座に利用可能にしています。

それが不可能な場合は、solrconfigでautoSoftCommitのインターバルを増やしてみてください。両方は必要ありません。また、autoWarmキャッシュクエリはありますか?

  • Rahul
返信投稿者:ks-solruserml-bot (2024/08/21 22:14 投稿)

了解しました。

コードを確認したところ、設定XML内のいくつかのLRUおよびfastLRUキャッシュ定義の近くで *autowarm*Count="0" が見られますが、XML内に特定のクエリは定義されていないようです。

よろしく、
Koen

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

キャッシュの autoWarm のカウントが 0 であれば、キャッシュのウォームアップは行われていないので、遅延の原因にはならないでしょう。

とりあえず、autoSoftCommit の間隔を 60000(1分)などの高い値に設定して、パフォーマンスに変化があるか確認してみてください。ただし、クライアントの更新呼び出しごとにソフトコミットを停止する(特に書き込み負荷が高い時)ことがより効果的です。

  • Rahul
返信投稿者:ks-solruserml-bot (2024/08/21 22:14 投稿)

アドバイスありがとうございます。試してみます。

よろしく、
Koen

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

その非常に短い autoSoftCommit で多くの問題を引き起こす可能性があります。これは、多くのコミットが同時に発生する原因となることがあります。

まずは、autoCommit の間隔を 30000 または 15000 に短縮し、autoSoftCommit の間隔を大幅に増加させ、少なくとも 30000、場合によっては 120000 まで上げることをお勧めします。

明示的なコミットは送信しないでください。特に、各ドキュメントごとにコミットを行うのは避けるべきです... それは、1 秒ごとの autoSoftCommit よりもさらに悪化する可能性があります。

可能であれば、インデックス作成リクエストごとに複数のドキュメントをインデックス化するようにしてください。

ありがとう、
Shawn

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

KandaSearch

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

投稿の削除

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