0

Sphinx 0.9.9リリース(r2117)を実行しています。

MySQLテーブルからデータを読み取るインデクサーを実行すると、次のエラーが発生します。

indexing index 'main'...
ERROR: index 'main': ., 888.4 MB
total 3629180 docs, 888448551 bytes
total 170.437 sec, 5212749 bytes/sec, 21293.30 docs/sec

ご覧のとおり、インデクサーは実際のエラーメッセージなしで888.4MBで停止します。完全なインデックスを削除して新しいインデックスを作成しようとしても、同じことが起こります。そうすると、新しく作成されたインデックスファイルは空になります。

システムは数か月間機能していましたが、テーブルの行数は約1,100万から約2,400万に増加しました。また、最小IDが1で、最大IDが60億を超えるため、IDギャップが非常に大きくなる必要があります。MySQLに何か問題があるのではないかと思ったので、すべての「ページング」クエリを実行する小さなスクリプトを作成しました。これは、インデックス作成中にSphinxによって実行される必要があります。

SELECT ... FROM ... WHERE id >= $start AND id <= $end

スクリプトは、エラーを返すことなく、すべてのID範囲のすべてのクエリを実行しました。

おそらく関連するSphinx構成の詳細:

sql_query_range         = SELECT MIN(id), MAX(id) FROM offer
sql_range_step          = 10240

SELECT o.id, ....
            FROM offer o \
            LEFT JOIN customer c ON c.id = o.customer_id \
            WHERE ... AND o.id >= $start AND o.id <= $end AND o.last_update <= (SELECT last_full_index FROM index_update WHERE name = 'default')

インデクサーの冗長性を高める方法はありますか?

問題を絞り込む方法はありますか?

4

1 に答える 1

0

0.9.9は本当に古いです。それ以来、多くのバグ修正と改善が行われました。

アップグレードするだけで問題が解決する場合があります。

しかし、それはまたあなたに役に立つかもしれない--print-queriesをもたらします。

または--dump-rows--ですが、一時的に大きな場所に配置するようにしてください。エラーが発生したときにそれをテーリングすると役立つ場合があります。

チェックするもう1つのことは、mysqlサーバーのwait_timeoutです。クエリの間隔が長すぎて、mysqlが接続を切断している可能性があります

于 2012-08-28T11:18:00.610 に答える