Устранение неполадок: ошибка поиска 502
При использовании расширенного поиска в HTML-файлах, экспортированных из Dr.Explain, вместо результатов поиска вы можете столкнуться с сообщениями об ошибках с кодом 502.
Ошибка 502 означает, что веб-сервер не может подключиться к службе бэкенда. Обычно это происходит потому, что бэкенд не запущен или конфигурация неверна.
Наиболее вероятные причины
-
Бэкенд аварийно завершил работу: обычно из-за нехватки памяти. Увеличьте лимиты памяти.
-
Бэкенд не запущен: запустите службы с помощью команды docker compose up -d.
-
Неправильная конфигурация: веб-сервер пытается подключиться к неправильному адресу или порту.
-
Конфликт портов: другой сервис использует порт 8082.
Этот шаг требует доступа к вашему серверу через SSH и Docker.
Проверьте состояние ваших служб:
docker compose ps
Что вы должны увидеть: служба drexplain-search-backend-controller должна показывать статус "Up" в столбце STATUS.
Если вы видите "Restarting" или код ошибки: бэкенд аварийно завершил работу. Часто это происходит из-за нехватки памяти. Перейдите к Шагу 2.
Если вы видите "Up": бэкенд запущен. Перейдите к Шагу 3.
Этот шаг требует доступа к вашему серверу по SSH и к Docker.
Проверьте, не закончилась ли у бэкенда память:
docker inspect $(docker compose ps -q) --format='{{.Name}}: {{.State.OOMKilled}}'
Если вы видите "true" для какой-либо службы: у службы закончилась память, и она аварийно завершила работу.
Чтобы исправить проблемы с памятью:
Остановите службы:
docker compose down
Проверьте доступную память:
free
Увеличьте лимиты памяти в вашем файле docker-compose.yaml:
-
Для службы solr увеличьте SOLR_HEAP.
-
Для службы drexplain-search-backend-controller настройте переменную окружения, отвечающую за внутренние лимиты памяти приложения (если необходимо, увеличьте значения, приведенные ниже):
environment:
- >-
JAVA_TOOL_OPTIONS=-XX:MaxHeapSize=128m
-XX:MaxMetaspaceSize=10m
-XX:MaxDirectMemorySize=2m
-XX:ReservedCodeCacheSize=8m
-XX:+DisableAttachMechanism
-XX:ThreadStackSize=512k
-XX:+UseSerialGC
Перезапустите службы:
docker compose up -d
Подождите несколько минут и повторите проверку.
Этот шаг требует доступа к вашему серверу через SSH.
Попробуйте подключиться к бэкенду напрямую:
curl http://127.0.0.1:8082/ping
Что вы должны увидеть: сообщение "If you see this text, Dr.Explain Search Backend is working..." (Если вы видите этот текст, бэкенд Dr.Explain Search работает...)
Если вы видите это сообщение: бэкенд работает, но конфигурация вашего веб-сервера может быть неверной. Перейдите к Шагу 4.
Если вы видите ошибку: возможно, бэкенд работает не на том порту. Проверьте ваш файл docker-compose.yaml, чтобы убедиться, что бэкенд настроен на использование порта 8082.
Этот шаг требует доступа к конфигурационным файлам вашего сервера.
Для серверов nginx:
Убедитесь, что ваша конфигурация включает:
location ~ /drexsearch/(.*)$ {
proxy_pass http://127.0.0.1:8082/$1$is_args$args;
}
Для серверов Apache:
Убедитесь, что ваша конфигурация включает:
RewriteEngine On
RewriteRule ^(?:.*/)?drexsearch/(.*)$ http://127.0.0.1:8082/$1 [P,L]
Наиболее вероятные ошибки:
-
Неправильный номер порта (должен быть 8082).
-
Неправильный адрес (должен быть 127.0.0.1).
-
Опечатка в шаблоне пути.
Если вы нашли ошибку: исправьте конфигурацию и перезапустите веб-сервер.
Этот шаг требует доступа к файлам логов вашего сервера.
Для nginx:
sudo tail -f /var/log/nginx/error.log
Для Apache:
sudo tail -f /var/log/apache2/error.log
Обратите внимание на сообщения:
-
"Connection refused" — бэкенд не запущен или недоступен.
-
"Connection timed out" — бэкенд отвечает слишком медленно (возможно, проблема с ресурсами).
-
"No live upstreams" — все экземпляры бэкенда не работают.