#ruby-on-rails #ruby-on-rails-3 #crontab #thinking-sphinx
#ruby-on-rails #ruby-on-rails-3 #кронтаб #мышление-сфинкс
Вопрос:
Итак, у меня есть приложение rails на нашем сервере, и я думаю, что shinx установлен. Каждый день в 12:30 утра я запускаю задание cron, которое усекает таблицы account и contact и повторно вставляет их … вот мои crons
30 0 * * * /bin/bash -l -c 'cd /var/www/active amp;amp; script/rails runner -e production '''Account.db_insert'$
34 0 * * * /bin/bash -l -c 'cd /var/www/active amp;amp; RAILS_ENV=production bundle exec rake ts:index --silent'
34 0 * * * /bin/bash -l -c 'cd /var/www/active amp;amp; RAILS_ENV=production bundle exec rake ts:restart --silent'
Как вы можете видеть, crons выполняет Account.db_insert
, который повторно вставляет контакты и учетные записи, но каждый день я получаю электронное письмо с ошибкой …. вот два, которые я получил недавно….
Вчерашняя ошибка
using config file '/var/www/active/config/production.sphinx.conf'...
indexing index 'contact_core'...
FATAL: failed to lock /var/www/active/db/sphinx/production/contact_core.spl: Resource temporarily unavailable, will not index. Try --rotate option.
Сегодняшняя ошибка
using config file '/var/www/active/config/production.sphinx.conf'...
indexing index 'contact_core'...
collected 403 docs, 0.0 MB
sorted 0.1 Mhits, 100.0% done
ERROR: index 'contact_core': rename /var/www/active/db/sphinx/production/contact_core.tmp.spl to /var/www/active/db/sphinx/production/contact_core.new.spl failed: No such file or directory.
total 403 docs, 25092 bytes
total 0.069 sec, 361571 bytes/sec, 5807.16 docs/sec
distributed index 'contact' can not be directly indexed; skipping.
total 5 reads, 0.001 sec, 133.7 kb/call avg, 0.2 msec/call avg
total 10 writes, 0.012 sec, 177.8 kb/call avg, 1.2 msec/call avg
Есть идеи, что я делаю не так….
Обновить
После предложения запустить
/usr/local/bin/indexer --config /etc/sphinxsearch/sphinx.conf --all --rotate
Я получил эту ошибку
using config file '/etc/sphinxsearch/sphinx.conf'...
ERROR: unknown key name 'client_timeout' in /etc/sphinxsearch/sphinx.conf line 591 col 16.
FATAL: failed to parse config file '/etc/sphinxsearch/sphinx.conf'.
Комментарии:
1. Вы используете неверный путь conf. Используйте свой, а не слепо копируйте то, что предлагают люди.
/usr/local/bin/indexer --config /var/www/active/config/production.sphinx.conf --all --rotate
Ответ №1:
Как указано в сообщении об ошибке, вы можете захотеть запустить индексатор с --rotate
помощью переключателя.
Я тоже использую Thinking Sphinx, но мне было проще просто напрямую использовать индексатор Sphinx. Я думаю, что Sphinx сгенерирует мою конфигурацию для меня, тогда я могу просто вызвать searchd
и indexer
напрямую, в моем cron:
*/30 * * * * /usr/local/bin/indexer --config /etc/sphinxsearch/sphinx.conf --all --rotate
Я обнаружил, что это более полезно, чем выполнение заданий с Граблями. Кроме того, это намного быстрее, так как не нужно загружать весь стек Rails.
Комментарии:
1. Заменяет ли это два 34 0 * * * / bin/bash -l -c ‘cd /var/www/active amp;amp; RAILS_ENV=рабочий пакет exec rake ts:index —silent’ 34 0 * * * / bin/bash -l -c ‘cd /var/www/активный amp;amp; RAILS_ENV= рабочий пакет exec rake ts: перезапуск — молчание ‘
2. так что это было бы похоже */34 * * * * / usr/local/bin/indexer —config /etc/sphinxsearch/sphinx.conf —все —повернуть, поскольку две задачи thinking sphinx rake выполняются в 12:34
3. Ваша конфигурация Sphinx находится в другом месте, чем моя, она выглядит как ваша по адресу:
/var/www/active/config/production.sphinx.conf
. Поэтому обновите--config
свои команды соответствующим образом.