×

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

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

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

 
  • Нехватка ресурсов: на сервере недостаточно CPU или памяти. Увеличьте лимиты ресурсов.
  • Слишком короткое время ожидания: бэкенду нужно больше времени для ответа. Увеличьте тайм-аут.
  • Объёмные операции: индексация или поиск по документации с большим количеством разделов требует больше времени. Подождите, пока индексация закончится, или увеличьте тайм-аут на веб-сервере.
  • Медленный Solr: служба Solr работает медленно. Увеличьте выделение CPU или RAM (недостаток RAM может заставлять Solr тратить ресурсы CPU на освобождение ранее выделенной памяти).
 

Шаг 1: Проверьте ресурсы сервера

 
Этот шаг требует доступа к вашему серверу по SSH и к Docker.
 
Проверьте, не использует ли сервер слишком много ресурсов:
 
docker compose stats
 
Обратите внимание на: использование CPU или памяти в контейнерах бэкенда или Solr.
 
Если ресурсы исчерпаны: возможно, сервер работает медленно из-за нехватки ресурсов. Перейдите к Шагу 2.
 
Если с ресурсами все в порядке: возможно, время ожидания слишком короткое. Перейдите к Шагу 3.
 

Шаг 2: Увеличьте ресурсы

 
Этот шаг требует доступа к вашему файлу docker-compose.yaml.
 
Если контейнерам бэкенда или Solr не хватает ресурсов:
 
Увеличьте лимиты CPU или памяти в вашем файле docker-compose.yaml:
 
solr:
  deploy:
    resources:
      limits:
        cpus: '2.0'  # Увеличьте, если слишком мало
        memory: 2G   # Увеличьте при необходимости
 
После внесения изменений:
 
docker compose down
docker compose up -d
 
Подождите несколько минут и повторите проверку.
 

Шаг 3: Проверьте настройки времени ожидания

 
Этот шаг требует доступа к конфигурационным файлам вашего сервера.
 
Для серверов 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
 

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

 
Этот шаг требует доступа к вашему серверу по SSH и к Docker.
 
Проверьте, нет ли проблем с бэкендом:
 
docker compose logs drexplain-search-backend-controller
 
Обратите внимание на: ошибки, исключения или медленные операции.
 
Если вы видите ошибки: устраните конкретные ошибки, указанные в логах.
Справочная система создана в Dr.Explain