2009-11-22 5 views
2

Я работаю над созданием производственного сервера с использованием CentOS 5.3, Apache и Phusion Passenger (mod_rails). У меня есть приложение, в котором используется поисковая система Sphinx и драгоценный камень Thinking Sphinx.Как я могу убедиться, что демон Sphinx работает?

Согласно the Thinking Sphinx docs...

Если вы действительно хотите найти на индексированных данных, то вам необходимо Сфинкса Searchd демон должен быть запущен. Это можно управлять с помощью следующие задачи:

rake thinking_sphinx:start 
rake ts:start 
rake thinking_sphinx:stop 
rake ts:stop 

Что было бы лучшим способом гарантировать, что это происходит в производстве? Я могу развернуть мое приложение, а затем вручную запустить rake thinking_sphinx:start, но мне нравится настраивать вещи, чтобы, если мне нужно отскакивать от сервера, все вернется.

Должен ли я позвонить в эту задачу Rake в инициализаторе? Или что-то в rc.local?

ответ

4

rc.local - хорошее начало, но его недостаточно. Я был бы пара с правилом monit, чтобы убедиться, что он работает И что еще важнее ...

Sphinx требует полного переиндекса, чтобы сделать все самое последнее и самое доступное. На сайте мышления sphinx есть несколько статей о delta indexing, но если ваш индекс мал, почасовое переиндексирование позаботится о вещах, и вам не понадобится дельта-индексирование.

Я бегу это ежечасно, чтобы заботиться об этом:

0 * * * * cd /var/rails/my_site/current/ && RAILS_ENV=production /usr/bin/rake ts:rebuild 

Примечание: для развертывания, я буду использовать встроенный в размышлении сфинкс Capistrano задачи:

В вашем Capfile добавить

require 'thinking_sphinx/deploy/capistrano' 

Я использовал цепочку переиндексации в задаче колпачка, но остановился, потому что она очень медленная, когда я делаю изменения схемы, я запомню ее запустить или дождаться почасового задания cron, чтобы его исправить.

+0

Если пользователь выполняет поиск при повторном индексировании, не получат ли они ошибку? – Ethan

+0

yerp, он заставляет поиск умирать, когда вы перестраиваете, я предлагаю вам добавить логику повтора для компенсации (повторите попытку до 20 секунд или покажите пользовательскую страницу, в которой говорится, что поиск будет доступен в ближайшее время). (вероятно, хорошая идея погладить, чтобы добавить это в ts) –

+0

, вам также нужен способ запуска демона, если вам нужно перезагрузить сервер. – holaSenor

1

Я не делал этого раньше со Spinix, поэтому я надеюсь, что кто-то может дать вам лучший ответ, но вы должны взглянуть на monit. Monit предназначен для хранения демонов, как и то, что вам нужно делать.

Быстродействующий Google for spinix monit установил эту ссылку: Capistrano recipes: sphinx:monit. Это было бы хорошим местом для начала.

0

Для чего это стоит, я бегу

thinking_sphinx:index 

... в моей хрон работу, вместо того, чтобы задачи «восстановить». Это не требует, чтобы процесс searchd находился в автономном режиме, но индексы по-прежнему вращаются, когда все сделано, поэтому новые изменения подбираются. Я думаю, что задача «перестроить» нужна только тогда, когда вы действительно меняете свою структуру индекса в своих моделях, что бывает очень редко для меня.

Смежные вопросы