web-dev-qa-db-ja.com

インデックスの再作成後にSphinx検索デーモンを正常に再起動する方法

Sphinx検索のインデックスを_/usr/local/sphinx/bin/indexer --all --rotate_で再インデックス化し、元のインデックス出力ファイルの名前を別のものに変更しました。 $sphinx->Query($query, $index);に渡されたインデックス引数を変更するだけでは結果は返されません。

デーモンが新しいインデックスファイルの存在を知らないのではないかと思いました。だから私は走った

_Sudo /usr/local/sphinx/bin/searchd_

再びそれを再起動しようとします。しかしそれは投げました

FATAL: failed to lock pid file '/usr/local/sphinx/var/log/searchd.pid': Resource temporarily unavailable (searchd already running?)

新しいインデックスファイルから取得するには、検索デーモンの2つのプロセスをkillして再起動する必要がありました。それを再起動するための適切な方法はありますか?

14
David Xia

私はこれが遅い答えであることを知っていますが、あなたが知っているように、Sphinxを「再起動」するには、それを停止してから開始する必要があります(2つの異なるプロセスのように)。

停止するには、searchd --stopを呼び出してから、searchdで再び開始します。

25
Narcissus

新しいインデックスに対してインデクサーを呼び出して作成し、次に--rotateを実行して更新する必要があります。

だからそれは次のようなものになります

indexer --config /path/to/config.conf indexname

そして、インデックスを更新したいだけの場合

indexer --config /path/to/config.conf --rotate --all

これにより、各インデックスの一時的なコピーが作成され、終了時に古いインデックスが置き換えられます。実際に何が起こるかについての詳細は、 http://sphinxsearch.com/docs/manual-0.9.9.html#ref-indexer を参照してください

他のエラーであなたが得ること

ps aux | grep searchd

結果が返されない場合は、/ usr/local/sphinx/var/log/searchd.pidを削除して、再度検索を開始します

9
daxroc

Sphinxの一部のインスタンスで、デーモンを停止できないsearchd --stopコマンドに問題があるようです。

試してください:service sphinxsearch stop

参照: https://bugs.launchpad.net/ubuntu/+source/sphinxsearch/+bug/990395

4
y_s

service searchd start CentOSで私のために働いた

0
d-_-b