1

MySQL データベースの 1 つの Sphinx インデックスを再構築中に問題が発生しました。インデックスのローテーションと再構築が繰り返し失敗し、システムは引き続き古いインデックスを使用します。データベースのサイズはこの数か月で 2 倍になり、現在では 1,000 万行を超えるテーブルが含まれています。Sphinx インデックスの再構築中

indexer --config our_config.conf --rotate --all

(ここで使用されている UltraSphinx プラグインによって生成されます)、Sphinx デーモン ログ ファイル searchd.log に次のエラーが表示されます。

WARNING: rotating index 'main': preread failed: failed to open 
~/etc/sphinx//sphinx_index_main.new.spi: No such file or directory; 
using old index
WARNING: rotating index 'main': preread failure reported

データベースが大きくなるにつれて、エラー メッセージが頻繁に発生するようになりました。現在、完全なインデックス作成には約 1 時間半かかり、インデックス ファイルを合わせると 1 GB を超えます。この問題を解決するために Sphinx バージョンを 0.9.8.1 から 2.0.4 に更新しましたが、まだ存在しています。サーバーには約 4 GB のメモリがあり、構成ファイルは

indexer {
  mem_limit = 1024M
}

searchd {
  read_timeout = 5
  max_children = 300
  log = ~/etc/sphinx/log/searchd.log
  port = 3313
  max_matches = 100000
  query_log = ~/etc/sphinx/log/query.log
  seamless_rotate = 1
  pid_file = ~/etc/sphinx/log/searchd.pid
  address = 127.0.0.1
}
..

問題を解決する方法を知っている人はいますか? 2 GB の制限に関係するある種のインデックス サイズ制限があるように思われます。これは、符号付き 32 ビット整数の最大値と、特定のファイル システムのファイル サイズの最大値です。Ubuntu/Debian システムで使用している ext3 ファイル システムでは、最大 16 GB のファイルを使用できますが、特定のライブラリでは、実際にはファイル サイズが 2 GB に制限されている場合があります (こちらこちらを参照)。

4

2 に答える 2

1

インデクサー自体の出力を確認してください。インデックス作成中の進行状況が表示され、問題の手がかりが得られる場合があります。

于 2012-04-24T18:58:00.637 に答える
0

データの場所を確認してください。Sphinx が一時インデックス ファイルを作成しようとしているようです (これがインデクサーの機能です) ~/etc/sphinx//sphinx_index_main.new.spi。ここには 2 つのものが表示されます。1 つは ~ です。これが機能するかどうかはわかりません。もう一つは double/です。

IIRC これは、Sphinx 構成ファイルのインデックス部分にあります。

于 2012-04-24T18:28:12.930 に答える