База знаний Business Studio 7
Переход на сайт нейросети Perplexity AI для поиска информации о Business Studio. Подробнее о возможности см. по ссылке

Содержание справки

Метрики производительности веб сервера

Вопрос:

Время выполнения некоторых действий в веб-приложении Business Studio занимает слишком много времени. В чём может быть причина?

Ответ:

Если веб-приложение работает медленно при выполнении фоновых задач, основное внимание следует уделить мониторингу потребления ресурсов (CPU, память) и корректной настройке конфигурации приложения. Ниже приведена универсальная процедура диагностики и оптимизации.

Диагностика

  1. Сбор и анализ метрик производительности
    • Убедитесь, что в приложении включён сбор метрик процессорной нагрузки и потребления памяти (например, через Prometheus или аналогичные средства мониторинга).
    • Проверьте метрики за период времени, в который наблюдается замедление работы:
      • Загрузка центрального процессора (CPU %) процессами приложения: метрика process_cpu_percent - процент потребления CPU процессом за всё время его работы;
      • Объём оперативной памяти, используемой процессами.
      • Количество процессов.
  2. Просмотр загрузки процессора и памяти сервера
    • Используйте инструменты мониторинга (например, Grafana, htop, Glances) для визуализации потребления CPU и RAM.
    • Обратите внимание на процессы, которые показывают высокую нагрузку (CPU > 80% или значительное использование памяти).
    • Зафиксируйте временные интервалы пиковой нагрузки для определения наиболее загруженных часов работы.
  3. Анализ активности Hangfire
    • В представлении Hangfire (например, в Web-UI) проверьте количество активных и отложенных задач - убедитесь, что нет бесконечных или повторяющихся задач, которые могут перегружать систему.

Оптимизация

Направление оптимизации зависит от результатов диагностики:

  1. При высоком уровне загрузки CPU существуют следующие пути решения:
    • Уменьшение количества preload-процессов (предзагруженных процессов) в конфигурации приложения appsettings.json:
      • «DefaultClientProcessPreloadCount» – количество предзагруженных клиентских процессов по умолчанию;
      • «ClientProcessPreloadCount» – количество предзагруженных клиентских процессов для группы (база данных + ветка + редакция + очередь);
      • «DefaultJobsProcessPreloadCount» – количество предзагруженных процессов фоновых задач по умолчанию;
      • «JobsProcessPreloadCount» – количество предзагруженных процессов фоновых задач для группы (база данных + ветка + редакция + очередь).
    • Уменьшение максимального числа процессов (общее количество процессов, которые могут выполняться одновременно) в конфигурации приложения appsettings.json:
      • «DefaultJobsProcessMaxCount» – максимальное количество процессов по умолчанию;
      • «JobsProcessMaxCount» – максимальное количество процессов для группы.
  2. При высоком потреблении оперативной памяти, используемой процессами:
    • Установка ограничений потребления ресурсов в конфигурации приложения appsettings.json:
      • «TotalMemoryLimit» - максимальный размер оперативной памяти, при достижении которого дополнительные процессы перестанут запускаться;
      • «ProcessMemoryLimit» - максимальный размер оперативной памяти, которую может использовать процесс; при превышении процесс будет остановлен.

Масштабирование инфраструктуры

Если конфигурация приложения уже оптимизирована, но текущие ресурсы физически не справляются с потоком пользователей и фоновых задач, необходимо масштабировать серверы.

  1. Вертикальное масштабирование.
    • Увеличение тарифного плана вашего виртуального сервера или добавление физических компонентов: выделите приложению больше ядер CPU и дополнительный объем RAM.
  2. Горизонтальное масштабирование.
    • Распределение компонентов приложения по разным серверам.

Мониторинг и повторная проверка

  1. После внесения изменений в конфигурацию выполните мягкий перезапуск приложения (см. Мягкий перезапуск), чтобы новые настройки вступили в силу.
  2. Повторный мониторинг метрик.
    • Повторно проверьте CPU и потребление памяти через инструменты мониторинга.
    • Убедитесь, что нагрузка снизилась и приложение работает стабильно.
  3. По мере стабилизации работы можно постепенно увеличивать количество процессов, если требуется повысить производительность.

Техподдержка

Если после выполнения инструкции приложение продолжает работать медленно, обратитесь по адресу техподдержки support@businessstudio.ru, предоставив:

  • Скриншоты метрик CPU и памяти.
  • Ошибки из логов (см. Сбор логов для техподдержки) в период пиковой загрузки при наличии.
  • Текущую конфигурацию приложения (файл appsettings.json).
  • Характеристики сервера.