Как решать проблемы оптимизации быстродействия falcon приложения

Смотреть видео

Как прорабатывать ошибки замедления системы

В случае если ваше приложение работает корректно, но иногда возникают затупы приложения, попробуйте следующий порядок действий

1. смотрим as_perf

Процедура показывает узкие места по памяти, по процессору, по быстродействию, блокировки. Для работы процедуры должны быть права на трассировку. 

2. смотрим as_trace

Смотрим в первую очередь ошибки (code=exception). 

Также смотрим и другие типы записей. Отслеживаем частоту создания записей (может быть так, что, например, код tg из-за ошибки работы с телеграм создает по 5 записей в 1 секунду при обращении к серверу). Смотрим прирост записей за сегодня, вчера и общее количество записей по типам. 

select code, count(*) totalCount,
	(select count(*) from as_trace t3 where t3.code=t1.code and cast(created as date) = cast(dateadd(day, -1, getdate()) as date) ) yesterday,
	(select count(*) from as_trace t2 where t2.code=t1.code and cast(created as date) = cast(getdate() as date) ) today
from as_trace t1
group by code

3. Смотрим Event Viewer на сервере. В нем могут быть системные ошибки, которые не попадают в базу. 

4. Ручная локализация проблемы

Делаем проход по основным страницам кабинета. Наша задача - найти страницу, после которой начинаются замедления. Дело может быть либо в sql самой странице, либо в том, что страница генерирует кучу сниппетов компонентов, которые затем массово инициализируются (например, если в строку таблицы вывести сниппет формы и поставить pagesize=100. В результате будет 100 параллельных запросов на сервер, что плохо).

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

Частые возможные проблемы

  • много однотипных запросов с каждой строки таблицы. Смотрите в консоли браузера какие запросы отправляются - если их очень много и они непрерывным потоком идут долго - вероятно ваша страница допускает множество подгружаемых элементов (форм) на каждую выводимую строку таблицы. Обновление Июнь 2021. Внедрили код отслеживания таких дублей запросов dblreq в as_trace 
  • плохой sql - оптимизируйте плохие запросы. Найти их можно через as_perf или через мониторинг выполняющихся запросов через SQL Profiler Express.
  • проблема с телеграм или другим внешним вызовом (уведомления). Проверьте, что нет ошибок и уберите токен телеграма в web.config
  • тяжелые периодические sync процедуры. Не делайте очень тяжелых процедур каждые N секунд. Это будет постоянно грузить систему.
  • множественная ошибка почты. Проверьте, что при отправке почты не возникает исключений и она корректно отправляется через тестовую форму в панели управления.           
  • плохие запросы select к as_trace (и к другим большим таблицам). Находим самые большие таблицы в БД и анализируем запросы к ним.  

           

Falcon Space - функциональная веб-платформа разработки на узком стеке MS SQL/Bootstrap. Вводная по Falcon Space
Насколько полезной была статья?

Google поиск по нашей документации

Выгода от использования Falcon Space

В 2-3 раза экономнее и быстрее, чем заказная разработка
Более гибкая, чем коробочные решения и облачные сервисы
Используйте готовые решения и изменяйте под свои потребности
Нужна бесплатная консультация?
Получить оценку проекта
Создайте концепцию проекта на основе нашего шаблона и получите оценку проекта в виде КП.
Демо-сайт решений
Базисные решения, которые можно гибко адаптировать под себя: менять внешний вид, бизнес-логику и даже структуру базы данных.
Сайт использует Cookie. Правила конфиденциальности OK