×

Устранение неполадок: ошибка поиска 507

 
При использовании расширенного поиска в HTML-файлах, экспортированных из Dr.Explain, вместо результатов поиска вы можете столкнуться с сообщениями об ошибках с кодом 507.
 
Ошибка 507 означает, что поисковый движок (Solr) отвечает некорректно. Обычно это происходит, когда Solr аварийно завершил работу или настроен неверно.
 

Наиболее вероятные причины

 
  • Solr аварийно завершил работу: обычно такое бывает из-за нехватки памяти. Увеличьте лимиты памяти.
  • Неправильное имя хоста: бэкенд ищет Solr по неверному адресу.
  • Повреждённый индекс: выполните "холодный" перезапуск, чтобы перестроить индекс.
  • Нехватка ресурсов: системе не хватает ресурсов для Solr.
 

Шаг 1: Проверьте, запущен ли Solr

 
Этот шаг требует доступа к вашему серверу через SSH и Docker.
 

Проверьте состояние ваших служб:

 
docker compose ps
 
Что вы должны увидеть: служба solr должна показывать статус "Up" в столбце STATUS.
 
Если вы видите "Restarting" или служба отсутствует: Solr аварийно завершил работу. Перейдите к Шагу 2.
 
Если вы видите "Up": Solr запущен. Перейдите к Шагу 3.
 

Шаг 2: Проверьте использование памяти

 
Этот шаг требует доступа к вашему серверу по SSH и к Docker.
 
Solr может аварийно завершить работу из-за нехватки памяти.
 
Проверьте ваш файл docker-compose.yaml:
 
solr:
  environment:
    - SOLR_HEAP=700m  # Должно быть не менее 700m
  deploy:
    resources:
      limits:
        memory: 2G    # Лимит памяти должен быть как минимум на 30% выше, чем SOLR_HEAP
 
Вероятная ошибка: установка SOLR_HEAP выше лимита памяти (например, SOLR_HEAP=700m при memory: 400M).
 

Чтобы исправить проблемы с памятью:

 
Остановите службы:
 
docker compose down
 
Обновите настройки памяти в файле docker-compose.yaml:
 
  • Установите SOLR_HEAP примерно в 70% от лимита памяти.
  • Пример: для лимита 2 ГБ установите SOLR_HEAP=1500m.
 
Примечание: если у вас не установлен лимит памяти в docker-compose.yaml, Solr будет ограничен доступной оперативной памятью вашей системы. Если её всё равно недостаточно, Solr может исчерпать память. В этом случае рассмотрите возможность увеличения ресурсов системы или освобождения оперативной памяти для Solr.
 
Перезапустите службы:
 
docker compose up -d
 
Подождите несколько минут и повторите проверку.
 

Шаг 3: Проверьте журналы ошибок

 
Этот шаг требует доступа к вашему серверу по SSH и к Docker.
 
Проверьте, может ли бэкенд подключиться к Solr:
 
docker compose logs drexplain-search-backend-controller
 
Обратите внимание на следующие сообщения:
 
  • "EOF" — Solr неожиданно закрыл соединение (аварийно завершил работу). Перейдите к Шагу 2.
  • "ConnectException" — не удаётся подключиться к Solr. Проверьте, запущен ли Solr.
  • "UnresolvedAddressException" — не удаётся найти имя хоста Solr. Перейдите к Шагу 4.
 

Шаг 4: Проверьте конфигурацию хоста Solr

 
Этот шаг требует доступа к вашему файлу docker-compose.yaml.
 
Бэкенд должен знать правильное имя хоста Solr:
 
drexplain-search-backend-controller:
  environment:
    - DSBC_SEARCH_SERVER_HOST=solr
 
Распространённая ошибка: переименование службы Solr без обновления имени хоста:
 
# Если вы переименовали службу:
search-engine:
  image: ghcr.io/indigobyte/dsb-solr:latest
 
# то вы должны обновить имя хоста:
drexplain-search-backend-controller:
  environment:
    - DSBC_SEARCH_SERVER_HOST=search-engine
 
Если имя хоста указано неверно: исправьте его и перезапустите службы.
 

Шаг 5: Выполните "холодный" перезапуск

 
Этот шаг требует доступа к вашему серверу через SSH и Docker.
 
Если Solr аварийно завершил работу во время индексации, индекс может быть повреждён.
 
Чтобы выполнить "холодный" перезапуск:
 
docker compose down -v
docker compose up -d
 
Предупреждение: это приведёт к удалению всех данных поискового индекса. Бэкенд переиндексирует все HTML-файлы, что может занять несколько минут.
 
Рекомендации к использованию:
 
  • Solr аварийно завершил работу во время создания индекса.
  • Поисковый индекс повреждён.
  • Вы внесли значительные изменения в конфигурацию.
Справочная система создана в Dr.Explain