Sunspot Solr окружающая среда сложная

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

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

Мой 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 pts/1 S+ 10:47 0:00 grep - -color=авто 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

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


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


person mauriciovoto    schedule 04.02.2012    source источник
comment
Вы пытались получить доступ к solr с помощью CURL? Вставьте вывод ps aux | grep java и ваш файл sunspot.yml   -  person Maurício Linhares    schedule 05.02.2012
comment
Я не пользователь Sunspot, но возвращает ли Connection Refused код ошибки (400, 404, 500)? И не могли бы вы включить пример URL-адреса, сгенерированного вашим запросом Sunspot?   -  person Jesvin Jose    schedule 05.02.2012
comment
Похоже, что единственный запущенный Java-процесс — это Jenkings, там нет запущенного экземпляра Solr.   -  person Maurício Linhares    schedule 06.02.2012
comment
Из -Djetty.port=8983 видно, что ваш экземпляр Solr запущен для производственной среды. Можете ли вы curl http://localhost:8983/solr получить ответ? Если вы откроете консоль приложения, каково значение Sunspot.config.solr.url? (Кроме того, последний код Sunspot находится по адресу github.com/sunspot/sunspot. Возможно, это не имеет отношения к этой проблеме.)   -  person Nick Zadrozny    schedule 06.02.2012
comment
Когда curl localhost:8983/solr ничего не возвращает, а Sunspot.config.solr.url возвращает: localhost:8982/solr;. Странно то, что мой датчик солнечных пятен работает для всех остальных моделей. Что мне делать?   -  person mauriciovoto    schedule 10.02.2012
comment
Я до сих пор не знаю, что делать, чтобы исправить эту проблему, дело в том, что у меня есть только одна модель, которая постоянно обновляется (не индексированные поля для поиска), и solr просто терпит неудачу для этой модели, а не для других . Любая помощь ?   -  person mauriciovoto    schedule 16.02.2012


Ответы (1)


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

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

В соединении отказано - подключиться(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 на рабочем сервере, а также использую 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}"
person lulalala    schedule 13.03.2013
comment
--port не является допустимым параметром для рейка - person DGM; 27.08.2016