Метрики производительности веб сервера
Вопрос:
Время выполнения некоторых действий в веб-приложении Business Studio занимает слишком много времени. В чём может быть причина?
Ответ:
Если веб-приложение работает медленно при выполнении фоновых задач, основное внимание следует уделить мониторингу потребления ресурсов (CPU, память) и корректной настройке конфигурации приложения. Ниже приведена универсальная процедура диагностики и оптимизации.
Диагностика
- Сбор и анализ метрик производительности
- Убедитесь, что в приложении включён сбор метрик процессорной нагрузки и потребления памяти (например, через Prometheus или аналогичные средства мониторинга).
- Проверьте метрики за период времени, в который наблюдается замедление работы:
- Загрузка центрального процессора (CPU %) процессами приложения: метрика process_cpu_percent - процент потребления CPU процессом за всё время его работы;
- Объём оперативной памяти, используемой процессами.
- Количество процессов.
- Просмотр загрузки процессора и памяти сервера
- Используйте инструменты мониторинга (например, Grafana, htop, Glances) для визуализации потребления CPU и RAM.
- Обратите внимание на процессы, которые показывают высокую нагрузку (CPU > 80% или значительное использование памяти).
- Зафиксируйте временные интервалы пиковой нагрузки для определения наиболее загруженных часов работы.
- Анализ активности Hangfire
- В представлении Hangfire (например, в Web-UI) проверьте количество активных и отложенных задач - убедитесь, что нет бесконечных или повторяющихся задач, которые могут перегружать систему.
Оптимизация
Направление оптимизации зависит от результатов диагностики:
- При высоком уровне загрузки CPU существуют следующие пути решения:
- Уменьшение количества preload-процессов (предзагруженных процессов) в конфигурации приложения appsettings.json:
- «DefaultClientProcessPreloadCount» – количество предзагруженных клиентских процессов по умолчанию;
- «ClientProcessPreloadCount» – количество предзагруженных клиентских процессов для группы (база данных + ветка + редакция + очередь);
- «DefaultJobsProcessPreloadCount» – количество предзагруженных процессов фоновых задач по умолчанию;
- «JobsProcessPreloadCount» – количество предзагруженных процессов фоновых задач для группы (база данных + ветка + редакция + очередь).
- Уменьшение максимального числа процессов (общее количество процессов, которые могут выполняться одновременно) в конфигурации приложения appsettings.json:
- «DefaultJobsProcessMaxCount» – максимальное количество процессов по умолчанию;
- «JobsProcessMaxCount» – максимальное количество процессов для группы.
- При высоком потреблении оперативной памяти, используемой процессами:
- Установка ограничений потребления ресурсов в конфигурации приложения appsettings.json:
- «TotalMemoryLimit» - максимальный размер оперативной памяти, при достижении которого дополнительные процессы перестанут запускаться;
- «ProcessMemoryLimit» - максимальный размер оперативной памяти, которую может использовать процесс; при превышении процесс будет остановлен.
Масштабирование инфраструктуры
Если конфигурация приложения уже оптимизирована, но текущие ресурсы физически не справляются с потоком пользователей и фоновых задач, необходимо масштабировать серверы.
- Вертикальное масштабирование.
- Увеличение тарифного плана вашего виртуального сервера или добавление физических компонентов: выделите приложению больше ядер CPU и дополнительный объем RAM.
- Горизонтальное масштабирование.
- Распределение компонентов приложения по разным серверам.
Мониторинг и повторная проверка
- После внесения изменений в конфигурацию выполните мягкий перезапуск приложения (см. Мягкий перезапуск), чтобы новые настройки вступили в силу.
- Повторный мониторинг метрик.
- Повторно проверьте CPU и потребление памяти через инструменты мониторинга.
- Убедитесь, что нагрузка снизилась и приложение работает стабильно.
- По мере стабилизации работы можно постепенно увеличивать количество процессов, если требуется повысить производительность.
Техподдержка
Если после выполнения инструкции приложение продолжает работать медленно, обратитесь по адресу техподдержки support@businessstudio.ru, предоставив:
- Скриншоты метрик CPU и памяти.
- Ошибки из логов (см. Сбор логов для техподдержки) в период пиковой загрузки при наличии.
- Текущую конфигурацию приложения (файл appsettings.json).
- Характеристики сервера.