Устранение неполадок: ошибка поиска 507
При использовании расширенного поиска в HTML-файлах, экспортированных из Dr.Explain, вместо результатов поиска вы можете столкнуться с сообщениями об ошибках с кодом 507.
Ошибка 507 означает, что поисковый движок (Solr) отвечает некорректно. Обычно это происходит, когда Solr аварийно завершил работу или настроен неверно.
Наиболее вероятные причины
-
Solr аварийно завершил работу: обычно такое бывает из-за нехватки памяти. Увеличьте лимиты памяти.
-
Неправильное имя хоста: бэкенд ищет Solr по неверному адресу.
-
Повреждённый индекс: выполните "холодный" перезапуск, чтобы перестроить индекс.
-
Нехватка ресурсов: системе не хватает ресурсов для Solr.
Этот шаг требует доступа к вашему серверу через SSH и Docker.
Проверьте состояние ваших служб:
docker compose ps
Что вы должны увидеть: служба solr должна показывать статус "Up" в столбце STATUS.
Если вы видите "Restarting" или служба отсутствует: Solr аварийно завершил работу. Перейдите к Шагу 2.
Если вы видите "Up": Solr запущен. Перейдите к Шагу 3.
Этот шаг требует доступа к вашему серверу по 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
Подождите несколько минут и повторите проверку.
Этот шаг требует доступа к вашему серверу по SSH и к Docker.
Проверьте, может ли бэкенд подключиться к Solr:
docker compose logs drexplain-search-backend-controller
Обратите внимание на следующие сообщения:
-
"EOF" — Solr неожиданно закрыл соединение (аварийно завершил работу). Перейдите к Шагу 2.
-
"ConnectException" — не удаётся подключиться к Solr. Проверьте, запущен ли Solr.
-
"UnresolvedAddressException" — не удаётся найти имя хоста Solr. Перейдите к Шагу 4.
Этот шаг требует доступа к вашему файлу 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
Если имя хоста указано неверно: исправьте его и перезапустите службы.
Этот шаг требует доступа к вашему серверу через SSH и Docker.
Если Solr аварийно завершил работу во время индексации, индекс может быть повреждён.
Чтобы выполнить "холодный" перезапуск:
docker compose down -v
docker compose up -d
Предупреждение: это приведёт к удалению всех данных поискового индекса. Бэкенд переиндексирует все HTML-файлы, что может занять несколько минут.
Рекомендации к использованию:
-
Solr аварийно завершил работу во время создания индекса.
-
Поисковый индекс повреждён.
-
Вы внесли значительные изменения в конфигурацию.