×

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

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

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

 
  • Бэкенд аварийно завершил работу: обычно из-за нехватки памяти. Увеличьте лимиты памяти.
  • Бэкенд не запущен: запустите службы с помощью команды docker compose up -d.
  • Неправильная конфигурация: веб-сервер пытается подключиться к неправильному адресу или порту.
  • Конфликт портов: другой сервис использует порт 8082.
 

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

 
Этот шаг требует доступа к вашему серверу через SSH и Docker.
 
Проверьте состояние ваших служб:
 
docker compose ps
 
Что вы должны увидеть: служба drexplain-search-backend-controller должна показывать статус "Up" в столбце STATUS.
 
Если вы видите "Restarting" или код ошибки: бэкенд аварийно завершил работу. Часто это происходит из-за нехватки памяти. Перейдите к Шагу 2.
 
Если вы видите "Up": бэкенд запущен. Перейдите к Шагу 3.
 

Шаг 2: Проверьте проблемы с памятью

 
Этот шаг требует доступа к вашему серверу по 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
 
Подождите несколько минут и повторите проверку.
 

Шаг 3: Проверьте подключение к бэкенду

 
Этот шаг требует доступа к вашему серверу через 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.
 

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

 
Этот шаг требует доступа к конфигурационным файлам вашего сервера.
 
Для серверов 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).
  • Опечатка в шаблоне пути.
 
Если вы нашли ошибку: исправьте конфигурацию и перезапустите веб-сервер.
 

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

 
Этот шаг требует доступа к файлам логов вашего сервера.
 
Для 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" — все экземпляры бэкенда не работают.
Справочная система создана в Dr.Explain