Sunspot Solr среда сложная - PullRequest
       2

Sunspot Solr среда сложная

0 голосов
/ 05 февраля 2012

Я использую удивительный камень солнечных пятен (github.com/outoftime/sunspot) в приложении rails, но у меня такая огромная проблема.Признаюсь, что я до сих пор не знаю, как правильно настроить его в соответствии с моей средой, но на моих локальных и промежуточных серверах все настроено и работает нормально.

Итак, моя проблема в том, чтоВ производстве у меня есть модель, которая в настоящее время обновляется - каждый список, который включает в себя эту модель, атрибут увеличивается.И главная проблема заключается в том, что когда я пытаюсь выполнить сложный поиск по этой модели (не контекстуальный), у меня появляется ошибка Connection Refused, но solr запускается и выполняет все другие поиски.

My solrconfig.xmlэто как установка солнечных пятен, я ничего не менял.Является ли раздел AutoCommit решением для этого или не имеет к этому никакого отношения?

Извините за последнее обновление, я не сделал ошибку новичка, результат "ps aux | grep java" насервер:

Ubuntu 4039 0,0 1,8 2278060 144084?Ssl Jan21 8:10 java -Djetty.port = 8983 -Dsolr.data.dir = / home / ubuntu / mallguide / mallguide-rails / solr / data / production -Dsolr.solr.home = / home / ubuntu / mallguide / mallguide-rails / solr -Djava.util.logging.config.file = / tmp / logging.properties20120121-4039-co662r-0 -jar start.jar ubuntu 23125 0,0 0,0 7628 1004 пункта / 1 S + 10:47 0:00 grep --color = auto java

И мой файл sunspot.yml:

production:
  solr:
    hostname: localhost
    port: 8983
    log_level: WARNING

development:
  solr:
    hostname: localhost
    port: 8982
    log_level: INFO

test:
  solr:
    hostname: localhost
    port: 8981
    log_level: WARNING

auto_commit_after_request: false

Извините за плохой английский, надеюсь, что кто-то может мне помочь.


Iдо сих пор не знаю, что делать, чтобы исправить эту проблему, дело в том, что у меня есть только одна модель, которая обновляется (не индексируемые поля для поиска) все время, и solr просто терпит неудачу для этой модели, а не для других.Любая помощь?

1 Ответ

2 голосов
/ 13 марта 2013

Я исправил подобную ошибку раньше.Это может быть связано, если симптомы вашей ошибки совпадают:

Тип сообщений об ошибках, с которыми я столкнулся, выглядит следующим образом:

Отказ в соединении - соединение (2)

с обратным следом:

/home/john/.rvm/rubies/ruby-1.9.3-p194/lib/ruby/1.9.1/net/http.rb:762:in `initialize'
...
rest-client (1.6.7) lib/restclient/net_http_ext.rb:51:in `request'
rsolr (1.0.8) lib/rsolr/connection.rb:15:in `execute'

После перезапуска сервера sunspot solr ошибки прекратятся.В течение этого времени я могу читать индексы, но не записывать их.


Решение

Причина моей ошибки заключается в следующем: я вручную вызвал RAILS_ENV=production rake sunspot:solr:start onрабочий сервер, и я также использую capistrano для развертывания, так что у него есть каталог current и общий каталог.

Когда я запускаю эту команду запуска в каталоге current, по какой-то причине файл индексавсе еще ссылается на путь выпуска (например, release/2012xxxxxxxx/...).Capistrano удалит старые выпуски, поэтому время от времени solr не сможет ссылаться на папку, если она будет удалена.

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

RAILS_ENV=production rake sunspot:solr:start --port=8983 --data-directory=#{current_path}/solr/data/#{rails_env} --pid-dir=#{current_path}/solr/pids/#{rails_env}"
...