Система сбора и анализа информации по производительности работы баз данных, работающих  под связкой «кластер 1С 8.2/8.3 - Microsoft SQL server»

Публикация № 712722

Администрирование - Производительность и оптимизация (HighLoad)

анализ производительности узкие места sql-сервер тяжелые запросы

Инструмент в помощь специалисту по производительности sql-серверов с базами 1С. Программа (c#) собирает наиболее заметные (по времени исполнения, физическим / логическим чтениям / загрузке CPU ) запросы, группирует по обобщенным текстам запросов и контекстам исполнения 1С (если есть), предоставляет информацию в виде отчетов по наиболее заметным запросам и прочей информации (длительные запросы по данным техжурналов, содержимое буферпула в динамике, содержимое клерков памяти, ожидания сервера в разрезе бд, статистика ввода-вывода по файлам баз).

    Идея довольно проста. Берем парсер файлов техжурнала, настраиваем ТЖ на ловлю запросов долее N секунд, данные из парсера заливаем в sql-табличку. Рядом с парсером настраиваем трассировку длительных запросов (долее M секунд) уже со стороны sql-сервера (либо server-side trace sp_trace_create, либо используем eXtended Events) - результат тоже в sql-табличку. Делаем это непрерывно, данные старше 2 недель удаляем.  Две таблички вполне можно связать друг с другом - получим с одной стороны статистику из трасс (Duration, cpu_time, logical_reads, physical_reads, writes), а с другой - контекст исполнения, пользователя в 1С, имя клиентского компа и т.д.  Текст запроса огрубляем.

    Теперь можно анализировать загрузку sql-сервера за период - выявление самых длительных запросов, нагружающих CPU, читающих и т.д.  При этом, выявив "тяжелый" запрос - сразу видим и контекст исполнения, и историю исполнения, а при желании - и текст запроса в терминах конфигурации.

    Далее, к получившейся программе (парсер + трасировщик) добавляем еще и периодический опрос sys.dm_exec_query_stats - и складываем статистику исполнения в третью sql-табличку. Теперь дополнительно добавляется еще и возможность поймать быстрые (быстрее M секунд), но очень массовые запросы, пожирающие время сессий, CPU, генерящие физические и логические чтения.  Также, теперь при просмотре "тяжелых" запросов из предыдущего пункта - можно исхитриться и подсмотреть план исполнения запроса (и в терминах конфигурации тоже).

  Используется все это, как правило, в двух режимах:

1. Анализ активности сервера за длительный период. За две недели, например, последовательно выявляем top 5 наиболее длительных запросов, каждый отдельно рассматриваем - нет ли грубых ошибок (сканы крупных таблиц в планах и т.п.), тормозят ли они живых людей или роботов, можно ли их ускорить, нужно ли их вообще трогать. Если нужно и можно - создаем задачу разработчикам - с детальным описанием проблемы, указанием проблемного контекста и еще прилагаем планы исполнения. Если есть проблемы с загрузкой sql-сервера по CPU - смотрим top 5 наиболее потребляющих CPU запросов (и частенько видим "знакомые все лица" из top 5 длительных) - и обрабатываем их аналогичным образом. Если есть проблемы с памятью на сервере (низкое значение Page Life Expectancy) - есть смысл отработать top 5 по physical reads. Top 5 по logical reads частенько может показать какие-то ошибки разработчиков в запросах (впрочем - может и НЕ показать). Top 5 по записям, бывает, может намекнуть на какую-то лишнюю активность в базах.

2. Расследование проблем. Если известно, что "в пятницу с трех до пяти тормозили базы А, Б и В на сервере С" и выявлено, что "в пятницу с трех до пяти загрузка sql-сервера С по CPU была ~100% " - можно посмотреть первую пятерку запросов по CPU в указанный период. Работает не всегда. Если запрос убил админ - он не попадет в трассу. Тем не менее, данный способ расследования много раз выручал. Само-собой, только данной системы здесь недостаточно - как минимум дополнительно должен быть настроен сбор счетчиков производительности. 

    Также, можно отдельно смотреть таблицу событий техжурнала - выводить top 5 контекстов по времени (тут, увы - только по времени), если были жалобы от МарьИванны - смотреть события от МарьИванны (или от ее компа GLAVBUH001), и т.д. Это ж sql-табличка, какой хотим запрос - такой и напишем..

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

    Также будем ловить блокировки, как на уровне MS Sql Server, так и управляемые.
 
    Также реализован сбор информации о сеансах базы 1С и ее увязка с трассами длительных запросов.
 

    ВАЖНО. Выдержка из мануала про возможные проблемы:

Посему первым делом предупреждения:
1. Включение технологического журнала 1С на сбор данных по dbmssql  (а также по tlock / tdeadlock / ttimeout )  может привести к тем же переполнениям дисков. А т.к. нынче популярны SSD, размеры которых не поражают величиной – требуется отслеживать свободное место на дисках под сбор данных техжурнала и менять пороги времени (<gt property="duration" value="XXX" />) при необходимости. Вручную.
2. Сбор данных на sql-сервере происходит с помощью Extended Events. Расширенные события, конечно, позиционируются как «легковесные, не требующие много ресурсов», и эксперименты подтверждают, что старым добрым SQL Server Profiler-ом свалить сервер не в пример легче.. Но! У всего есть где-то свой предел, не удивлюсь, что и расширенными событиями можно отправить сервер в нокаут. Значит, обращаться следует как с трассировками: ничего лишнего, ненужное выключаем, пороги по времени задаем разумные, отслеживаем зависшие сессии.
3. Сама бд, которая хранит данные о производительности – получается весьма объемной.  Т.к. хранит тексты запросов и планов исполнения. Изначальная идея «чтоб все влезло в 10 Gb и шло на ноутбуке с ms sql enterprise» почти не работает.. если только задрать настройки. Т.е. придется следить за объемом базы для сбора данных, и корректировать параметры глубины хранения истории (закладка «вспомогательные настройки»)
    Протестированы релизы 8.2.19.80 и 8.3.9.2033 + SQL server 2012 (SP1 и SP3) + SQL server 2016. Теоретически должно работать с любыми релизами 1С, с SQL server 2008, и с SQL server 2017.
 
    Мануал вышел на полсотни страниц.. вообще-то мысль была сделать "кратко на пару листов", но получилось внезапно вот так. Выкинуть чего-либо не поднимается рука. Запускать сборщик без прочтения сего талмуда - категорически не рекомендую.
Так же, рискнувшему запустить требуется знать:
 - как в SQL Server Management Studio выглядят сессии eXtended Events и как их останавливать;
 - что такое техжурнал, и зачем оно надо.
 
--------------------------
Текущая версия сборщика и комплекта отчетов - 1.2.5.0.
 

Гарантия возврата денег

ООО "Инфостарт" гарантирует Вам 100% возврат оплаты, если программа не соответствует заявленному функционалу из описания. Деньги можно вернуть в полном объеме, если вы заявите об этом в течение 14-ти дней со дня поступления денег на наш счет.

Программа настолько проверена в работе, что мы с полной уверенностью можем дать такую гарантию. Мы хотим, чтобы все наши покупатели оставались довольны покупкой.

Для возврата оплаты просто свяжитесь с нами.

Скачать файлы

Наименование Файл Версия Размер
31.07.2019

10000 руб.
1.2.5.0 0
Цена до 06.04.2020
9000 руб.
10000 руб.

Моментальная
доставка

11.07.2019

500 руб.
0
Цена до 06.04.2020
450 руб.
500 руб.

Специальные предложения

Комментарии
Избранное Подписка Сортировка: Древо развёрнутое
Свернуть все
1. Darklight 22 12.12.17 14:27 Сейчас в теме
Хорошая вещь. Сам давно уже хотел сделать нечто подобное. Но, несколько более универсальное с чуть большими возможностями по сбору данных (в т.ч. счётчиков, в т.ч. генерирующее свои собственные счётчики), с компактной упаковкой а таблицы SQL и с WEB-доступом. На кросплатформенном .NET Core. В Качестве локального сервиса/демона. Без отправки чего-либо куда-либо (кроме почтовых рассылок отчётов и инфорормирования в месенджер об авариях).
4. Техподдержка 26.12.17 10:07
(1) Как показывает практика - главное начать :)
3. DarkAn 927 25.12.17 11:02 Сейчас в теме
Word 2010 мануал открывает с проблемами :( - картинки не видит
а 6 картинок - есть (слайд 2)
Прикрепленные файлы:
5. Техподдержка 26.12.17 10:09
(3) Попробую чуть позже выложить копию мануала в формате Word-а.
6. palsergeich 05.02.18 14:10 Сейчас в теме
7. VVi3ard 49 07.02.18 15:07 Сейчас в теме
На мой взгляд хватило бы контекста 1С и актуальных планов исполнения, там уже есть текст запроса, есть данные как по Estimated так и по Actual. При этом схема отлично ложится в колонку с типом XML.
Информация о контексте позволит найти сам текст запроса на языке 1С что бы понять откуда запрос.

Основная проблема для меня это понять как собирать актуальные планы только для тех запросов которые выполняются больше N секунд.
т.к. вариант "Собирать все планы" и отсеивать из собранных не нужные - значительно нагружает SQL сервер.

Интересно было бы почитать именно про:
"Также, теоретически имеется возможность ловить реальные (действительные, actual) планы исполнения запросов, длившихся долее N секунд."
Хотя бы на уровне идеи.
8. astratek 2 13.03.19 16:59 Сейчас в теме
>>Текущая версия работоспособна до 01.01.2019, потом прекратит работать. К этому моменту или появится новая версия, или .. или не появится.
На дворе 2019 год, как обстоят дела с обновлением ?
9. Техподдержка 16.03.19 15:12
Новая версия, с ловлей блокировок управляемых и автоматических, и со сбором показаний консоли серверов - готова.
Хотел написать пару новых статей, да начать продавать.
Неясно, однако: какую цену назначать, как защищать от распространения и защищать ли, как обеспечить техподдержку.
И вообще - стоит ли оно усилий.
Посему пребываю пока в некоем творческом ступоре.
Оставьте свое сообщение

См. также

DevOps для 1С. Онлайн-курс проходит с 16 апреля по 11 июня 2020 года. Промо

Данный онлайн-курс предусматривает изучение процессов DevOps, их применение при разработке на платформе 1С. В результате прохождения онлайн-курса вы сможете: настроить ПО необходимое для проведения проверок и тестирования, создавать сценарии тестирования и объединять их в комплексные процессы, создавать скрипты для автоматизации процессов DevOps.

12000 рублей

SALE! 10%

Мониторинг баз и серверов 1С

Инструменты и обработки Системный администратор Программист Бизнес-аналитик Руководитель проекта Конфигурация (md, cf) v8 Windows Платные (руб) Журнал регистрации Статистика базы данных Производительность и оптимизация (HighLoad) Администрирование СУБД Технологический журнал

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

7500 руб.

28.08.2019    5791    40    2       

Ловля блокировок на связке "Microsoft SQL server - 1С"

Статья Системный администратор Программист Нет файла v8 v8::blocking MS SQL Бесплатно (free) Производительность и оптимизация (HighLoad)

Материал относится к базам данных на связке «1С - MS SQL Server». Один из способов отлова блокировок в бд 1С . Переход к управляемым блокировкам через режим "Автоматический и управляемый".

16.07.2019    6934    fhqhelp    0       

1C:Предприятие для программистов: Расчетные задачи (зарплата). Онлайн-интенсив с 01 по 17 июня 2020 г. Промо

Данный онлайн-курс предусматривает изучение механизмов платформы “1С:Предприятие”, которые предназначены для автоматизации периодических расчетов, а именно - для расчета зарплаты. Курс предназначен для тех, кто уже имеет определенные навыки конфигурирования и программирования в системе “1С:Предприятие”, а также для опытных пользователей прикладного решения “1С:Зарплата и управление персоналом” и прочих прикладных решений, в которых реализован функционал расчета зарплаты.

4900 рублей

Онлайн-курс "Подготовка к экзамену 1С:Эксперт и 1С:Профессионал по технологическим вопросам" с 7 по 24 апреля 2020 г.

Курс Системный администратор Программист Курс v8 Платные (руб) Производительность и оптимизация (HighLoad) Решение задач на 1С:Специалист

На курсе вы получите практические навыки решения задач производительности 1С, в том числе характерных для высоконагруженных информационных систем (более 1000 пользователей). Подготовка к экзамену – только одна из составляющих курса. 70% слушателей приходят за знаниями, которые позволят расти и зарабатывать, делать сложные задачи на крупных проектах.

16450 руб.

30.05.2018    51563    10       

Онлайн-курс "Подготовка к экзамену 1С:Эксперт и 1С:Профессионал по технологическим вопросам" с 7 по 24 апреля 2020 г. Промо

На курсе вы получите практические навыки решения задач производительности 1С, в том числе характерных для высоконагруженных информационных систем (более 1000 пользователей). Подготовка к экзамену – только одна из составляющих курса. 70% слушателей приходят за знаниями, которые позволят расти и зарабатывать, делать сложные задачи на крупных проектах.

16450 рублей

SALE! 10%

Многопоточность. Универсальный «Менеджер потоков» 2.1

Инструменты и обработки Программист Конфигурация (md, cf) v8 1cv8.cf Россия Платные (руб) Производительность и оптимизация (HighLoad) Инструментарий разработчика Математика и алгоритмы Универсальные функции

Восстановление партий или взаиморасчетов, расчет зарплаты, пакетное формирование документов или отчетов - теперь все это стало доступнее. * Есть желание повысить скорость работы медленных алгоритмов! Но... * Нет времени думать о реализации многопоточности? * о запуске и остановке потоков? * о поддержании потоков в рабочем состоянии? * о передаче данных в потоки и как получить ответ из потока? * об организации последовательности? Тогда ЭТО - то что надо!!!

3000 руб.

07.02.2018    70550    251    52       

Подборка решений для взаимодействия со ФГИС «Меркурий» Промо

С 1 июля 2019 года все компании, участвующие в обороте товаров животного происхождения, должны перейти на электронную ветеринарную сертификацию (ЭВС) через ФГИС «Меркурий». Инфостарт предлагает подборку программ, связанных с этим изменением.

Неоптимальности вида «план исполнения запроса "испортился"» - поиск и исправление

Статья Системный администратор Программист Нет файла v8 Windows Бесплатно (free) Производительность и оптимизация (HighLoad)

Рассматривается один из частых типов проблем в рабочих базах (второй после блокировок, пожалуй... впрочем, часто и тесно с ними связанный). Материал относится к базам данных на связке «1С - MS SQL Server».

05.02.2018    15437    fhqhelp    20       

Пример поиска неоптимальности при загрузке SQL-сервера по CPU на 100%

Статья Системный администратор Программист Нет файла v8 1cv8.cf Россия Windows Бесплатно (free) Производительность и оптимизация (HighLoad)

Вечер пятницы, ничто не предвещало.. Звонок из техподдержки: "центральная база розничной сети лежит". Далее расследование причин.

23.12.2017    17598    fhqhelp    32       

Программы для исполнения 488-ФЗ: Маркировка товаров Промо

1 января 2019 года вступил в силу ФЗ от 25.12.2018 № 488-ФЗ о единой информационной системе маркировки товаров с использованием контрольных (идентификационных) знаков, который позволяет проследить движение товара от производителя до конечного потребителя. Инфостарт предлагает подборку программ, связанных с применением 488-ФЗ и маркировкой товаров.

SALE! 10%

Оптимизация запросов 1С - от теории к практике

Инструменты и обработки Программист Курс v8 1cv8.cf Платные (руб) Производительность и оптимизация (HighLoad) Практика программирования Математика и алгоритмы

Желаете повысить свой уровень разработки? Не знаете, как оптимизировать работу тяжелых запросов 1С? Или знаете методы оптимизации, но на практике не получаете результат? Тогда эта интерактивная обучающая программа для Вас! Оптимизация запросов прямо в программе 1С:Предприятие 8. Несколько десятков практических заданий, рассматривающих методы оптимизации на практике. От Вас требуются реальные решения - оптимизация представленных запросов. Автоматизированная система оценит Ваш запрос и представит результат проверки.

1500 руб.

06.07.2015    54097    343    4       

SALE! 10%

Свертка базы SQL + Альтернативный контроль удаления помеченных

Инструменты и обработки Системный администратор Программист Внешняя обработка (ert,epf) v8 1cv8.cf Платные (руб) Свертка базы Чистка базы Производительность и оптимизация (HighLoad)

Свертка базы 1с 8.1, 8.2, 8.3 (может использовать прямые запросы к MSSQL, PostgreSQL). Сворачивает документы, регистры накопления, сведений, бухгалтерии (но не регистры расчета). Универсальна, подойдет к любой конфигурации (обратите внимание на известные ограничения). Включает в себя нестандартный быстрый контроль удаления помеченных объектов и удаление помеченных объектов прямыми запросами. Поставляется с исходными кодами.

6500 руб.

13.06.2012    69790    1200    97       

Модуль обмена товарами со страницей ВКонтакте. Промо

Выгрузка сведений о товарах из информационной базы 1С на страницу ВКонтакте в раздел "Товары" для конфигураций Розница, УТ, КА и ERP.

SALE! 10%

Подсистема "Настройка контроля заполнения объектов в момент записи 3.1.3" для 1С: Предприятия 8.1 / 8.2

Инструменты и обработки Системный администратор Программист Конфигурация (md, cf) v8 1cv8.cf Россия Платные (руб) Производительность и оптимизация (HighLoad)

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

1000 руб.

24.10.2009    23336    681    98