|
Анализ производительности систем на 1С. Трудности и решения ₽ (Волшебник 20.05.2024 16:24) |
☑ | ||
---|---|---|---|---|
0
vod1
20.05.24
✎
16:24
|
По нашему скромному мнению (SOFTPOINT), основной проблемой оптимизации производительности в любой конфигурации 1С является сложность локализации неоптимального функционала/запросов, и дальнейшая возможность воспроизвести его на тестовой среде. А если проблема локализована, то это уже более 50% её решения.
Хочу выделить несколько важных причин тяжести расследования причин просадки производительности 1С и локализации проблемы: 1. Трудность сопоставления сессии SQL и пользовательской сессии 1С. Сервера приложений, как правило, не держат сессию SQL за пользователем, а используют пул подключений. В трассировках СУБД хранится информация об ID сессии и времени, когда запрос выполнялся. В большинстве случае, если сама система при переключении соединений не логирует соответствие, то сопоставить сессию SQL и пользователя 1С весьма не просто, а чаще всего – невозможно. 2. Воспроизведение запроса с временными таблицами на стенде Идентифицированный в трассе неоптимальный запрос в большинстве случаев сложно воспроизвести, т.к. нет состава временных таблиц, использованных в объединениях. А, как мы все знаем и помним, 1С:Предприятие очень активно использует работу с tempDB и создает временные таблицы в огромном количестве. 3.Трудность оценки вклада запроса/группы запросов в общую нагрузку Из одного и того же функционального участка приложения запрос может динамически создаваться во множестве вариантов. Из этого возникают две проблемы. Первая – эти запросы сложно сгруппировать и понять их вклад в общую нагрузку на систему. Вторая – имея информацию о форме вызова, бывает сложно воспроизвести запрос, не обладая детальной информацией о действиях пользователя. Теперь перечислю некоторые основные возможности нашего инструмента (мониторинг Perfexpert - https://softpoint.ru/catalog/monitoring/perfexpert/ ), которым мы пользуемся каждый день для расследования десятков инцидентов и проведения аудитов производительности. Из вступления понятно, что мониторинг решает все эти трудности плюс умеет делать многое другое. 1) Сопоставление сессий SQL и пользователя 1С Мониторинг позволяет очень точно отслеживать и сопоставлять деятельность пользователя 1С (или фоновых процессов) и запросов на уровне SQL. Например, можно отфильтровать все процессы по определенному SPID или пользователю, и не потерять в огромном списке сессий SQL нужные. 2) Автоматическая трассировка запросов Все запросы, поступающие на сервер СУБД, мониторинг PerfExpert, с целью сделать удобным их анализ, распределяет по так называемым трассам – Duration, Reads, Locks, DeadLocks, Exception. Каждая запись трассы содержит полный запрос, который можно открыть, посмотреть его план и оценить методы оптимизации. Более того, информация по запросам обогащается данными из других источников: имена пользователей 1С, форма/модуль 1С, строка кода 1С, потребление ресурсов и прочее. Duration – это трасса тяжелых запросов, длительность которых более 5 секунд. Reads – это трасса тяжелых запросов, выполняющих более 50 000 логических чтений. Locks – трасса, где собраны запросы, возникающие на логических блокировках SQL Server (табличные, страничные, ключевые…). Что касается временных таблиц, то можно достаточно быстро получить их список с полями, используемых в запросе и смоделировать запрос на тестовом стенде ы Management Studio. 3) Группировка запросов по типу и оценка вклада в профиль производительности той или иной группы Как правило проблемный запрос (я имею в виду sql-запрос) не является лишь ОДНИМ запросом, который мешает жить. Один запрос – это один инцидент. Запросов много, от разных пользователей, фоновых заданий и т.д. Просто это могут быть очень похожие запросы, которые можно сгруппировать по сигнатуре, и отличающиеся, например, лишь параметрами. Для объединения запросов в группы необходимо избавиться в тексте запроса от всех строковых литералов, констант, значений параметров, временных таблиц и других незначимых частей, без которых суть и логика запроса не поменяется. В PerfExpert это сделано путем прогона запроса через ряд регулярных выражений, которые по сигнатурам почистят текст и оставляют только каркас. 4) Сбор информации о форме, модуле, процедурах, ошибках платформы 1С Модуль интеграции с 1С позволяет собирать (перехватывать) множество данных от платформы 1С и сразу сопоставлять их с процессами rphost, сессиями 1С. 5) Автоматическое подтягивание данных из ЖР по тем сессиям 1С, которые уже попали в мониторинг (опрос производится 1 раз в 10 сек). Поскольку мониторинг Perfexpert изначально содержит информацию по длительному выполнению сеансами 1С своих операций (фоновые задачи, регламенты, расчеты пользователей) в режиме реального времени, то целесообразно именно для этих ситуаций анализировать ЖР, и дополнять картину происходящего сведениями из ЖР. Таким образом получается огромная экономия времени по анализу происходящего в вашей информационной системе. Собственно, обращаюсь к сообществу и прошу поделиться – как и какими инструментами пользуетесь вы/ваши специалисты для выявления проблемных мест в многопользовательской системе 1С+MS SQL. Чего в инструментарии не хватает, что не устраивает, что бы хотелось получить от него? P.S. Забегая вперед, хочу заранее исключить сценарий типа «Написать оптимальный код 1С (с проверкой, тестированием, в том числе, производительности)». Пост именно про диагностику проблем производительности. |
|||
1
Aleksey
20.05.24
✎
16:47
|
Не хватает большой кнопки "сделать всё".
|
|||
2
d4rkmesa
20.05.24
✎
16:49
|
(0) >>как и какими инструментами пользуетесь вы/ваши специалисты для выявления проблемных мест в многопользовательской системе 1С+MS SQL. Чего в инструментарии не хватает, что не устраивает, что бы хотелось получить от него?
Сам не пользуюсь, мне как то советовали https://1smonitor.ru/ . И, вы пишите про 1С+MS SQL, понятно что до последних пары лет все было заточено под MS SQL, но сейчас то ситуация радикально поменялась. "Эксперта", вроде, уже на PG сдают, НЯП. Многие хотят перейти на PG, но, пока еще лицензии работают, обоснованно боятся переходить. Я к чему, ваш продукт поддерживает ли PG не "для галочки", есть ли отличия в функционале? |
|||
3
vod1
20.05.24
✎
17:11
|
(2) Написал про 1С+MSSQL, т.к. до сих пор - это самая распространенная комбинация платформы и СУБД, а значит обратной связи по ней больше всего. Хотя тренд перехода MSSQL->PostgreSQL очевидный и процесс идет полным ходом, особенно для окологосударственных компаний.
Что касается поддержки PG в Perfexpert, то она полноценная. И эта ветка продукта развивается очень интенсивно. Инсталляции есть (на системах 1000+ пользователей). По функционалу лучше статьи посмотреть: https://softpoint.ru/articles/monitiring-postgresql-1/ https://softpoint.ru/articles/monitiring-postgresql-2/ |
|||
4
vod1
21.05.24
✎
12:03
|
(1) Волшебной кнопки или серебряной пули нет, как бы не хотелось обратного. Но любой системный анализ требует фактуры. Поэтому и интересен вопрос кто чем пользуется для расследования инцидентов?
|
|||
5
ptiz
21.05.24
✎
13:27
|
(4) Иногда через "Инструменты разработчика" поглядываю на техножурнал. Но смотришь на запрос и понимаешь, что оптимизировать тут особо нечего. Или надо переписывать целый блок - с переобучением юзеров. И забиваешь :)
|
|||
6
ptiz
21.05.24
✎
13:31
|
Кстати, хотел попробовать dbforge monitor. Но их сайт пишет "We are down for maintenance". А качать с левых мест побаиваюсь.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |