Как изящно перезапустить демон поиска 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?)

Я должен kill 2 процесса демона поиска и запустить его снова, чтобы захватить из новые индексные файлы. Есть ли изящный способ перезапустить его?

4 ответов


Я знаю, что это поздний ответ, но просто чтобы вы знали, чтобы "перезапустить" Сфинкса, вам нужно остановить его, а затем запустить его (как в двух разных процессах).

чтобы остановить его, вызвать searchd --stop тогда просто запустите его снова с searchd.


вам нужно вызвать индексатор на новый индекс, чтобы создать его, а затем -- 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

о другой ошибке ваш получать Do

ps aux | grep searchd

если он не возвращает результатов, то удалите /usr/local/sphinx/var/log / searchd.пид-регулятор и снова запустите searchd


Кажется, есть проблема с searchd --stop команда не может остановить демона на некоторых экземплярах Sphinx.

попробуй: service sphinxsearch stop

см.:https://bugs.launchpad.net/ubuntu / + источник / sphinxsearch/ + ошибка/990395


service searchd start работал на меня на CentOS