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

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

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

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 параллельных запросов на сервер, что плохо).

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

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

           

Страница-источник на сайте falconspace.ru