Устранение неполадок: ошибка поиска 504
При использовании расширенного поиска в HTML-файлах, экспортированных из Dr.Explain, вместо результатов поиска вы можете столкнуться с сообщениями об ошибках с кодом 504.
Ошибка 504 означает, что бэкенд потратил слишком много времени на обработку запроса. Обычно это происходит, когда сервер работает медленно или настройки времени ожидания слишком низкие.
Наиболее вероятные причины
-
Нехватка ресурсов: на сервере недостаточно CPU или памяти. Увеличьте лимиты ресурсов.
-
Слишком короткое время ожидания: бэкенду нужно больше времени для ответа. Увеличьте тайм-аут.
-
Объёмные операции: индексация или поиск по документации с большим количеством разделов требует больше времени. Подождите, пока индексация закончится, или увеличьте тайм-аут на веб-сервере.
-
Медленный Solr: служба Solr работает медленно. Увеличьте выделение CPU или RAM (недостаток RAM может заставлять Solr тратить ресурсы CPU на освобождение ранее выделенной памяти).
Этот шаг требует доступа к вашему серверу по SSH и к Docker.
Проверьте, не использует ли сервер слишком много ресурсов:
docker compose stats
Обратите внимание на: использование CPU или памяти в контейнерах бэкенда или Solr.
Если ресурсы исчерпаны: возможно, сервер работает медленно из-за нехватки ресурсов. Перейдите к Шагу 2.
Если с ресурсами все в порядке: возможно, время ожидания слишком короткое. Перейдите к Шагу 3.
Этот шаг требует доступа к вашему файлу docker-compose.yaml.
Если контейнерам бэкенда или Solr не хватает ресурсов:
Увеличьте лимиты CPU или памяти в вашем файле docker-compose.yaml:
solr:
deploy:
resources:
limits:
cpus: '2.0' # Увеличьте, если слишком мало
memory: 2G # Увеличьте при необходимости
После внесения изменений:
docker compose down
docker compose up -d
Подождите несколько минут и повторите проверку.
Этот шаг требует доступа к конфигурационным файлам вашего сервера.
Для серверов nginx:
Проверьте настройку proxy_read_timeout:
location ~ /drexsearch/(.*)$ {
proxy_read_timeout 60s;
proxy_pass http://127.0.0.1:8082/$1$is_args$args;
}
Если время ожидания слишком низкое (например, 30s): увеличьте его до 60s или выше.
После внесения изменений: перезапустите nginx.
sudo nginx -t
sudo systemctl reload nginx
Этот шаг требует доступа к вашему серверу по SSH и к Docker.
Проверьте, нет ли проблем с бэкендом:
docker compose logs drexplain-search-backend-controller
Обратите внимание на: ошибки, исключения или медленные операции.
Если вы видите ошибки: устраните конкретные ошибки, указанные в логах.