Мышление дельта-индексация Сфинкса не работает - PullRequest
2 голосов
/ 26 октября 2009

Вот что я определил:

  1. Дельта-индексация отлично работает в разработке
  2. Дельта-индексация не работает при отправке на рабочий сервер, и в searchd.log
  3. Я использую Phusion Passenger и, как рекомендовано в базовом руководстве по устранению неполадок , подтвердил, что
    1. www-data имеет разрешение на запуск задач индексирования граблей (запускал их из командной строки вручную)
    2. правильный путь к indexer и searchd (/ usr / local / bin)
    3. нет ошибок в production.log

Чего мне не хватать? Я использую Ruby Enterprise 1.8.6, Rails 2.3.4, Sphinx 0.9.8.1 и Thinking Sphinx 1.2.11.

Спасибо!

Ответы [ 6 ]

1 голос
/ 26 октября 2009

Прошлой ночью, когда я спал, меня поразило. Неудивительно, что это была глупая проблема, связанная с плохой конфигурацией, хотя я довольно удивлен тем, что она дала свои результаты. Наверное, я мало что знаю о внутренностях Thinking Sphinx.

Недавно я мигрировал серверы. sphinx.yml выглядел так:

production:
  bin_path: '/usr/local/bin'
  host: mysql.mysite.com

На новом сервере MySQL был просто локальной службой, но я забыл удалить эту строку. Интересно, что ручная переиндексация граблей по-прежнему работала просто отлично. Я заинтригован тем, что Thinking Sphinx не выдавал ошибку при попытке перезагрузить дельты, поскольку mysql.mysite.com больше не существует, хотя это и было источником проблемы.

Спасибо за вашу помощь, и извините, что поднял такую ​​глупую проблему.

0 голосов
/ 23 июля 2011

Как и выше, с такой же проблемой столкнулись наши стороны на двух машинах. Первым у нас была проблема с mysql, показанная в журнале apache2. Только казалось, что влияет на локальную машину OSX ..

Во второй раз, когда мы развернули на сервере Ubuntu, у нас была та же проблема. Рельсы c производительностью были в порядке, ошибок нет, бла бла бла.

Закончилось проблемой с разрешениями. Не могу понять это, поскольку не было никаких проблем с запуском, хотя я полагаю, что делал это с правами root.

Используя capistrano и пассажира, мы сделали это:

  1. Создать пользователя-пассажира и добавить в группу www-data
  2. Изменен пользователь в deploy.rb, чтобы быть пассажиром
  3. Вручную изменили все / текущие файлы, которые будут принадлежать выше
  4. Вы вошли как пассажир.
  5. Ran rake ts: rebuild RAILS_ENV = "production"

Подарило нам удовольствие ...

Удачи

0 голосов
/ 14 апреля 2010

У меня была такая же проблема. Работает в командной строке, а не в приложении.

Оказывается, у нас все еще была ведомая база данных, которую мы использовали для индексации, но ведомое не обновлялось.

0 голосов
/ 03 марта 2010

У меня была эта проблема, и я нашел решение "bin_path", упомянутое выше. Когда это не сработало, мне потребовалось некоторое время, чтобы понять, что я вставил пример кода для «производства», когда я тестировал в «промежуточной» среде. Проблема решена!

Это произошло после того, как вы убедились, что все грабли, которые конфигурируют, индексируют и запускают sphinx, выполняются от имени того же пользователя, что и ваш экземпляр пассажира. Если вы войдете на сервер как пользователь root для выполнения этих задач, они будут работать в консоли, но не через пассажира.

0 голосов
/ 26 октября 2009

Вот следующий шаг по устранению неполадок, который я предприму. Откройте файл для используемой стратегии дельта-индексации (предположительно lib/thinking_sphinx/deltas/default_delta.rb). Найдите строку, где она фактически генерирует команду индексации. В моем (v1.1.6) это строка 20:

output = `#{config.bin_path}indexer --config #{config.config_file} #{rotate} #{delta_index_name model}`

Измените это, чтобы вы могли регистрировать саму команду, и, возможно, также записывать вывод:

command = `#{config.bin_path}indexer --config #{config.config_file} #{rotate} #{delta_index_name model}`
RAILS_DEFAULT_LOGGER.info(command)
output = `#{command}`
RAILS_DEFAULT_LOGGER.info(output)

Внедрите его в производство и добавьте в журнал, модифицируя модель с индексами дельты Надеюсь, это действительно покажет вам проблему. Конечно, возможно, проблема в другом месте кода, и вы даже не дойдете до этого, но я бы начал с этого.

0 голосов
/ 26 октября 2009

Есть ли какие-либо подсказки в журнале ошибок Apache / Nginx?

...