2

私は自分のアプリケーション検索エンジンに取り組んでいます。この検索エンジンは、全文検索に sphinx を使用しています。

インデックスの更新を担当する cron ジョブを作成しました。現在、1 日に 1 回実行するように設定されています。

ここで、このcronで何をしていますか。

   indexer --all --rotate > sphinx.log

検索モジュール全体がダウンし、クライアント アプリケーションにこのエラーが表示されることがあります。

Notice (1024): Search query failed: connection to 127.0.0.1:9312 failed (errno=111, msg=Connection refused) [APP/models/behaviors/sphinx.php, line 134]

そしてsphinx.logでこのエラーを見つけました

FATAL: failed to lock /usr/local/sphinxsearch/delta_users/delta_users.spl: Resource temporarily unavailable, will not index. Try --rotate option.

9312 が接続を拒否されたようです。おそらく、リソース ファイルが他のプロセスによって使用されているためです。これはまだランダムな動作です。

環境は Linux (ubuntu) にデプロイし、アプリケーションは Cakephp で作成します。sphinx サービスの再起動が停止する原因を特定しようとしています。これが sphinx 構成の問題なのか、I/O または mysql の問題なのかはわかりません。デルタインデックスが問題を引き起こしているだけだと思います。

前もって感謝します。

4

2 に答える 2

2

問題は、実際にはすべてのインデックス、つまりメイン インデックスとデルタ インデックスを一緒にローテーションすると、デルタ インデックスのリソース ファイルがロックされることです。デルタ インデックスのローテーションを、デルタ インデックスのマージを担当する他の cron ジョブに移動しました。

indexer   delta_users delta_users_type
indexer --merge users  delta_users 
indexer --merge users_type delta_users_type

そして、異なるcronでメインインデックスのみを個別にローテーションします

indexer --rotate -- users  users_type

それ以外の

indexer --rotate -- all 

したがって、デルタとメイン インデックスの個別の回転が解像度です。

ありがとう

于 2013-01-29T12:52:52.097 に答える
0

searchd プロセスと indexer プロセスを実行しているユーザーを確認します。また、インデックス ファイルに対してどのような権限があるかを確認してください。許可の問題が発生しています。

于 2013-01-28T17:47:23.833 に答える