Решение проблем подвисания 1С “в онлайне”. Инструмент - консоль управления блокировками и процессами 1С и SQL

Публикация № 1688576 04.07.22

Администрирование БД - HighLoad оптимизация

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

Обработка-консоль, улучшенная версия консоли администрирования 1С для решения проблем с производительностью, поиска и устранения блокировок и длительных запросов. Тестировалось на платформе 8.3.14, 8.3.17, 8.3.20 УФ.

 

Вводные условия

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

  1. Запрос по TOP текущих выполняющихся запросов PostgreSQL (я работал в основном с этой СУБД последние 10 лет), отсортированных по времени выполнения в обратном порядке. Там же используется функция определения блокирующих процессов. Его приблизительный вид такой (можно запускать с отбором без автовакуума):
    SELECT pg_stat_activity.datname,  
    	NOW() - query_start AS duration,
    	query_start,
    	pg_stat_activity.pid, 
    	pg_blocking_pids(pg_stat_activity.pid) as blocked_by,
    	query,
    	state,
    	wait_event_type,
    	wait_event,
    	pg_stat_activity.backend_start 
    FROM pg_stat_activity 
    	left join pg_stat_progress_vacuum 
    	on pg_stat_activity.pid = pg_stat_progress_vacuum.pid
    where COALESCE(state, '') <> 'idle'
    	--and not query like 'autovacuum%'
    	--and query_start is not null
    ORDER BY duration DESC, query;

     

  2. Консоль администрирования 1С: Предприятия. Главным ее недостатком является неудобство интерфейса: данные не обновляются, ручное обновление крайне неудобно (надо кликать несколько раз мышью, а не горячей клавишей), зависимые данные - а именно блокирующие соединения из сеансов вынуждают переключаться в соединения, что в часы высокой нагрузки могут приводить к зависанию. Есть pid СУБД, но какой запрос выполняется по этому pid не отображается, а чтобы понять необходимо обращаться к запросу TOP из п.1 (см. выше)
  3. Консоль заданий от ИР (ToromzIT - шикарнейшей подсистемы, не нуждающейся здесь в рекламе). При выставленных настройках - отключенные успешные задания и без отбора по методу регламентного список фоновых отображает активные фоновые задания и ошибки, что часто дает понять: происходят какие то проблемы! А иногда понять, кто является причиной
  4. Техно журнал 1С и замечательная обработка от Анализ техножурнала ИР от того же ToromzIT. Тут я смотрю наиболее тяжелые запросы, блокировки и в каких местах программы они происходят с точностью до строки кода (но часто это оказываются довольно очевидные проведения документов и программные блокировки тяжелых объектов, что не дает понять истинную причину замедлений)
  5. Анализ метрик в Zabbix, как общих по нагрузке на диск / процессор /память, так и специфических от Mamonsu именно по PostgreSQL (самые важные на данный момент в моем понимании - это активность автовакуума, а так же попадание в буфер кэша). Но это как правило “посмертный анализ” и на принятие экстренного решения не сильно оказывает влияние
  6.  Также раньше использовал pgBadger  - анализатор логов PostgreSQL на Perl, достаточно красиво предоставляющий отчет о проблемах с БД, а также самые тяжелые запросы. При этом удобно "бить" логи сервера по дням (циклически на 1 неделю). В связи с настройкой Zabbiх на предприятии актуальность немного упала. Также наиболее нагруженные запросы за последнее время можно получить из представления  pg_stat_statements, но здесь я не буду приводить ее описание, так как это источник данных, а анализ строится с помощью различных запросов, тема, которая выходит за пределы этой статьи.
  7. Из важных инструментов, которые используются при борьбе с “тормозами” был анализатор планов запросов от компании Тензор - он помогает понять причину и тюнинговать тяжелые запросы, являющиеся узкими местами, если их удавалось обнаружить при помощи предыдущих инструментов. Да PostgreSQL ведет себя несколько иначе, чем MS SQL, и надо учитывать эти особенности. И планы запросов, представленные в удобном виде иногда помогают понять, как переписать запрос или добавить недостающий индекс.

Весь этот набор инструментов невозможно применить в кратчайшие сроки, если наступает “беда” в час пик. Во-первых, их можно применять только последовательно, на каждый уходит какое-то заметное время, а проблема не терпит  - предприятие или задерживает отгрузку товара из-за медленной работы, или вообще стоит, счет идет на минуты. Во-вторых про часть из них в экстремальной ситуации вообще можно не вспомнить.

Решение

Поэтому я озадачился о том, чтобы иметь в арсенале какой-то инструмент с одной стороны достаточно простой в использовании, с другой достаточный для решения 95% всех проблем с производительностью. Больше всего недоволен я был консолью администрирования 1С. Она, по идее, должна была давать самую ценную информацию - о сеансах пользователей 1С, т.е. по ней точнее всего можно в онлайне понять, где проблема именно в системе 1С, в каком именно пользователе или процессе. Это отличает ее от других инструментов, где нужно идти "снизу вверх" от проблем в SQL или системных показателей, которые не привязаны ни к пользователю ни к бизнес-процессам в 1С. 

В общем, я сделал обработку "Консоль управления блокировками 1С", которая решала 3 задачи

  • связанное отображение блокирующих и ожидающих процессов,
  • отображение SQL запросов, также с зависимостям по блокировкам,
  • по сеансам в которых 1С возвращает pid СУБД отображается запрос  SQL, который выполняется данным pid (и в запросах SQL также отображается пользователь 1С, сеанс). 

       Этот запрос SQL можно перевести в термины названий объектов 1С вместо таблиц хранения Postgres.

Самое главное - все это на одном экране! Не надо скакать между программами или окнами, судорожно нажимая кнопку "Обновить" и перематывать списки в поиске нужного сеанса. Время обновления можно настроить (слишком частое мешает анализу). Можно нажимать на кнопку обновляя вручную, но обновляя сразу все данные, а не по очереди (как в случае со стандартной консолью). Кроме того, в программе выделяются цветом проблемы, чего нет в стандартной консоли.

Ну и, естественно, тут можно завершить сеанс 1С или pid Postgres либо "мягким способом", отменив текущий запрос, либо "жестким" убиванием процесса, с отваливанием пользователя, если первый не помог.

 

Что можно было бы еще сделать и может быть появится в будущих версиях, если будет интерес:

  1. Доделать нормальное (сейчас есть, но пока неудобно используемо) ведение логов длительных запросов и блокировок в таком формате, чтобы потом можно было строить отчеты
  2. Сделать настройку автоматического убивания сеансов или запросов SQL если они превышают какие-то временные границы
  3. Сделать адаптацию под MS SQL
  4. Сделать более умный переводчик запросов на язык 1С (сейчас только имена таблиц на объекты, но не сложные выражения), или как минимум более быстрый  - на данный момент он достаточно неоптимально делает анализ текстов запросов и замены
  5. Добавить другие показатели из консоли, сделать их перевод на “человеческий язык”, разобраться как их можно использовать. Скажем, потребление памяти.

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

Наименование Файл Версия Размер
Решение проблем подвисания 1С “в онлайне”. Инструмент - консоль управления блокировками и процессами 1С и SQL:

.epf 18,84Kb
29
.epf 18,84Kb 29 Скачать

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

Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. Antoska 17 12.07.22 10:15 Сейчас в теме
2. victor_goodwill 31 14.07.22 11:37 Сейчас в теме
(1) Ок, принято. В качестве приоритетной доработки. На данный момент не могу сказать, когда смогу приступить, если есть в вашей практике правильный аналогичный запрос для MS SQL для получения TOP запросов, которым пользуетесь, то можете написать, чтобы я не изобретал велосипед
3. Antoska 17 14.07.22 15:36 Сейчас в теме
(2)Обычно монитором смотрим. Поисковик выдал такой пример:
-- получаем список всех текущих запросов
SELECT LEFT((SELECT [text] FROM sys.dm_exec_sql_text(der.sql_handle)),500) AS txt
--,(select top 1 1 from sys.dm_exec_query_profiles where session_id=der.session_id) as HasLiveStat
,der.blocking_session_id as blocker, DB_NAME(der.database_id) AS База, s.login_name, *
from sys.dm_exec_requests der
left join sys.dm_exec_sessions s ON s.session_id = der.session_id
WHERE der.session_id<>@@SPID
-- AND der.session_id>50  -- если необходимо исключить системные запросы
5. Alex_Japanese_Student 450 18.07.22 12:49 Сейчас в теме
так понимаю, у вас еще вторая обработка - cmd=Обработки.ОбменСУправленческойБазой77.ПолучитьADOCommandТекущейБазыSQL()
можно текст этой функции?
Оставьте свое сообщение

См. также

Обслуживание баз данных 1C на Postgresql под Astra Linux Промо

Администрирование СУБД Инструменты администратора БД Linux v8 Абонемент ($m)

Эта публикация для тех специалистов 1С, которые развернули сервер 1С и сервер PostgreSQL под Astra Linux и которым не интересно работать в командной строке, выполняя «шаманские» скрипты для автоматического сохранения и восстановления баз. Возможно вам тоже будет удобно обслуживать базы данных PostgreSQL решением на платформе 1С.

1 стартмани

14.06.2022    1464    4    alfanika    9    

Поиск текущих блокировок СУБД, вызванных 1С

Инструменты администратора БД Инструментарий разработчика Администрирование СУБД v8 1cv8.cf Абонемент ($m)

Отчет, отображающий блокировки объектов СУБД на текущее время, вызванные пользователями 1С или фоновыми заданиями.

5 стартмани

07.07.2022    685    6    nikolasx    5    

Нагрузочный тест для базы данных 1С (обычные формы)

HighLoad оптимизация v8 1cv8.cf Абонемент ($m)

Универсальный нагрузочный тест для баз данных 1С. Позволяет оценивать производительность работы в конкретной базе данных при подборе параметров сервера. Тест производит циклическое перепроведение документов и замер скорости на каждом цикле. Выбирается интервал документов и виды документов для перепроведения.

1 стартмани

27.12.2021    2498    5    Miket78    4    

Обработка данных в фоновых потоках

HighLoad оптимизация v8 1cv8.cf Абонемент ($m)

Выполнение заданных действий над выбранными данными в фоновых заданиях.

3 стартмани

30.10.2021    3461    5    MaxxiMiliSan    4    

Многопоточная обработка данных Промо

HighLoad оптимизация Инструменты администратора БД v8 v8::УФ 1cv8.cf Абонемент ($m)

Конфигурация "Универсальные механизмы: пакеты данных". Набор инструментов для быстрой организации отказоустойчивой многопоточной обработки данных.

1 стартмани

23.11.2018    36072    140    _ASZ_    17    

Изыскания на тему записи в регистр сведений

HighLoad оптимизация v8 Платформа 1C v8.2 1cv8.cf Абонемент ($m)

Уважаемые коллеги, здравствуйте! Сегодня хочу поделиться с Вами своими изысканиями на тему записи в регистр сведений в контексте оптимизации одной операции. Однажды мы столкнулись со следующей проблемой: поступили жалобы от разработчиков сайта, что наш веб-сервис очень медленно реагирует, точней, обработка запроса не укладывается в таймаут 5 секунд, и сайт получает ошибку 500. Стали разбираться, и вот что выяснили.

1 стартмани

21.09.2021    8380    0    METAL    57    

Сравнение замеров производительности

HighLoad оптимизация v8 1cv8.cf Абонемент ($m)

Бывают ситуации, когда необходимо быстро определить, в чем разница при выполнении, например, проведения документа. Я обычно для решения данной задачи использовал два замера и сравнивал в коде. Это помогало при небольшом количестве строк кода, но, когда их тысячи, или сотни тысяч, проще воспользоваться обработкой, которая позволяет находить различия в замерах производительности.

2 стартмани

06.09.2021    2458    5    17808849    4    

Где баланс между производительностью и возможностями программы ? Исправление автоподбора контрагента в УНФ

Рефакторинг и качество кода HighLoad оптимизация Адаптация типовых решений v8 УНФ Россия УУ Абонемент ($m)

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

1 стартмани

27.08.2021    3968    0    con-men    0    

Просмотр файлов технологических журналов 1С (WinAPI)

HighLoad оптимизация Технологический журнал v8 Россия Абонемент ($m)

Программа просмотра файлов технологических журналов 1С (WinAPI). Работает с большими файлами. Минимальное потребление памяти при индексировании данных, просмотре. Анализ управляемых взаимоблокировок, таймаутов, ожиданий. Фильтры по событиям, периоду, пользователям, соединениям, сеансам.

1 стартмани

24.08.2021    4082    16    sdf1979    17    

Как 1С всю оперативную память съел...

HighLoad оптимизация v8 ЗУП3.x Россия Абонемент ($m)

В данной статье рассматривается обход (средствами встроенного языка) ошибки: "Превышен максимальный расход памяти сервера за один вызов" при рассылке расчетных листков в ЗУП 3.1 250+ сотрудникам.

1 стартмани

17.06.2021    7454    6    iD1n    0    

Исправление ошибки "Не удалось выполнить обработчик обновления" при обновлении БГУ на релиз 2.0.78.38

Корректировка данных Администрирование СУБД v8 v8::БУ БГУ Россия БУ Абонемент ($m)

Обход ошибки обновления релиза Бухгалтерии государственного учреждения на 2.0.78.38 вида Не удалось выполнить обработчик обновления "Документы.ЭлектронныйДокументВходящийЭДО.ОбработатьДанныеДляПереходаНаНовуюВерсию".

1 стартмани

08.06.2021    5367    11    the1    2    

Версионирование объектов. Сжатие регистра "ВерсииОбъектов" Промо

HighLoad оптимизация v8 1cv8.cf Абонемент ($m)

Cжимаем версии объектов в регистре сведений "ВерсииОбъектов". Экономия занимаемого версиями объектов объема более 50% !!!

1 стартмани

30.12.2014    32112    44    ZLENKO    14    

ЦУП 2.1.6 Исправленная обработка выгрузки метаданных для платформы 8.2

HighLoad оптимизация v8 1cv8.cf Абонемент ($m)

Обработка предназначена для ЦУП 2.1.6. Исправленная типовая обработка для выгрузки метаданных для конфигурацию, работающих на платформе 8.2 (в т.ч. в режиме совместимости).

1 стартмани

04.03.2021    3388    1    SpecRam    0    

Мастер создания копии информационной базы для отчетности

HighLoad оптимизация Администрирование СУБД v8 1cv8.cf Абонемент ($m)

Прототип инструмента для подготовки реплики в режиме только для чтения к использованию. Позволяет использовать "read-only" реплики как обычные информационные базы 1С.

10 стартмани

28.08.2020    12508    12    YPermitin    13    

Размер таблиц 1С в базе данных MS SQL

Статистика базы данных Администрирование СУБД v8 Абонемент ($m)

Данная обработка позволяет получить структуру БД 1С и размер таблиц без использования механизма ADODB соединения с БД MSSQL.

1 стартмани

14.08.2020    10703    90    donpadlo    6    

И снова о скорости работы 1с 8.х + тест от Гилева (конфигурация TPС_1C_GILV_A) + как Выбрать сервер для 1С 8.х Промо

HighLoad оптимизация v8 1cv8.cf Россия Абонемент ($m)

Предыстория: Есть в конторе, где я работаю, пара практически ОДИНАКОВЫХ по железу сервера... так вот заметили что на одном из них 1С 8.2 работает значительно быстрей что в Клиент-Серверном, что в файловом варианте... и что именно удивило так это что медленней работал сервер с большим количеством Оперативной памяти + RAID10 на SSD. Проводили много тестов на работу дисковой системы + различные тесты SQL - ВЫВОД: ничего непонятно где тормоза. И вот попала ко мне конфигурация 1С для оценки производительности 1С от Гилева http://infostart.ru/public/57204/ Подробности в Описании...

2 стартмани

13.08.2012    647334    658    sanfoto    2561    

Ошибка "Для одного ссылочного кода существует более одной таблицы в базе данных" - как проще исправить

Администрирование СУБД Корректировка данных v8 v8::УФ 1cv8.cf Абонемент ($m)

При обновлении платформы 1с 8.3.6.2100 на платформу 8.3.16.224 под УПП 1.3.138.1 возникла ошибка "Для одного ссылочного кода существует более одной таблицы в базе данных...". В интернете много есть информации по этой проблеме, в частности в публикации https://infostart.ru/public/1126277/ приведено ее решение, но оно довольно громоздкое. Есть вариант более простой

2 стартмани

28.04.2020    9232    9    Ион    3    

Транслятор запросов 1С в SQL

HighLoad оптимизация Администрирование СУБД Запросы v8 v8::Запросы 1cv8.cf Абонемент ($m)

Инструмент для трансляции запросов платформы 1С в SQL, а также их диагностики.

10 стартмани

07.01.2020    35350    299    YPermitin    89    

Быстрая реструктуризация базы данных

HighLoad оптимизация v8 v8::УФ 1cv8.cf Россия Абонемент ($m)

Внешняя обработка для быстрой реструктуризации клиент-серверной базы данных. Способ ускорения реструктуризации - замена таблиц большого объема пустыми копиями перед проведением обновления БД и возврат к исходным таблицам после обновления с предварительной корректировкой их структуры. Полностью автоматизировано создание и выполнение всех требуемых скриптов SQL. Представлены версии обработки для обычных форм (1С:Предприятие 8.2 (8.2.19.130)) и управляемого приложения (1С:Предприятие 8.3 (8.3.9.1818)).

1 стартмани

05.11.2019    29269    134    dmitrydemenew    39    

Влияние БСП на производительность базы 1С с добавленными метаданными

HighLoad оптимизация Адаптация типовых решений БСП (Библиотека стандартных подсистем) v8 УТ11 Абонемент ($m)

Повод для статьи — заметное снижение быстродействия при переводе учета с УТ 11.1 на 11.4 по «нашим» не стандартным метаданным (регламенты работы с массовым заполнением/проведением документов/регистров). Предварительно причину увидел во влиянии БСП. Была создана тестовая подсистема, быстродействие которой оцениваем в демобазе "Управление торговлей". С включенными и выключенными подписками БСП.

5 стартмани

04.11.2019    11767    6    VsHome    1    

Оптимизация прав ролей

HighLoad оптимизация Роли и права v8::УФ v8::Права 1cv8.cf Россия Абонемент ($m)

Решение вопроса по неоптимальной настройке (избыточной) ролей, влияющей на производительность системы (потребление оперативной памяти). Алгоритм работы следующий: Выгрузка конфигурации в файлы - Обработка (изменение) файлов прав ролей - Загрузка измененных прав в конфигурацию. Проверено на платформе начиная с 8.3.12.

1 стартмани

09.09.2019    48622    12    toxilamer    11    

Бухгалтерия 3.0: медленная работа при загрузке данных контрагента по ИНН

HighLoad оптимизация v8 v8::БУ БП3.0 Россия Абонемент ($m)

Поиск и исправление медленной загрузки контрагентов по ИНН в Бухгалтерия 3.0.71.75.

1 стартмани

10.07.2019    8966    3    MaxxiMiliSan    4    

Исправление долгого запуска БП 3.0.70 по причине большого количества платежек

HighLoad оптимизация v8 v8::БУ БП3.0 Россия Абонемент ($m)

Обработка исправления долгого запуска БП 3.0.70 по причине большого количества платежек.

1 стартмани

18.04.2019    9052    8    a_v_u    1    

Взаимодействие при редактировании одних и тех же данных [Расширение] УТ11

HighLoad оптимизация v8 УТ11 Россия Абонемент ($m)

Расширение позволяет взаимодействовать между пользователями в тех случаях, когда они пытаются редактировать одни и те же данные. Теперь пользователи могут согласовать между собой последовательность своих действий, а при необходимости – освободить данные, занятые другим пользователем.

2 стартмани

14.04.2019    10278    4    noprogrammer    1    

Тормозит УАТ 1.0? Простое решение, как ускорить

HighLoad оптимизация v8 1cv8.cf Автомобили, автосервисы Абонемент ($m)

Если тормозит УАТ 1.0, Вам сюда.

1 стартмани

21.02.2019    9288    1    KroVladS    4    

Исправление ЦУП 2.1.2

HighLoad оптимизация v8 1cv8.cf Абонемент ($m)

Расширение для конфигурации Центр управления производительностью, редакция 2.1 (2.1.2.11), которое позволяет настроить регламентный мониторинг. Работает на платформе 1С:Предприятие 8.3 (8.3.13.1644).

2 стартмани

21.01.2019    9682    6    Neco    0    

Многопоточное тестирование производительности по методике APDEX (управляемые формы)

HighLoad оптимизация v8 1cv8.cf Абонемент ($m)

Каждый у кого нет сервера, мечтает его купить, а те, у кого сервер есть, мечтают, чтобы он был быстрее. Но деньги на сервер выделяет руководство...

10 стартмани

09.01.2019    14593    24    capitan    32    

Решение проблемы быстродействия в ERP на рабочем примере

HighLoad оптимизация v8 ERP2 Абонемент ($m)

Рассмотрим практический пример оптимизации, определим последовательность действий и воспользуемся специализированными инструментами.

3 стартмани

18.12.2018    30124    246    ivanov660    24    

Создание пользователей системы взаимодействия

Обработка справочников Администрирование СУБД v8 1cv8.cf Абонемент ($m)

Простенькая команда по созданию пользователей в системе взаимодействия на базе всех пользователей информационной базы 1С.

1 стартмани

12.12.2018    6606    11    da_1c    0    

Очистка и обновление индекса полнотекстового поиска (регламентное задание)

HighLoad оптимизация v8 УНФ ДО БП3.0 УТ11 УХ ЗУП3.x Россия Абонемент ($m)

Обработка-регламентное задание позволяет в автоматическом режиме очищать и обновлять индекс полнотекстового поиска. Это необходимо делать для устранения проблем производительности на крупных базах. Подключаем в доп.обработках, задаем расписание выполнения на выходные и радуемся :)

2 стартмани

14.09.2018    34449    95    Kyrales    8    

Монитор блокировок пользователей

HighLoad оптимизация v8 v8::blocking 1cv8.cf Россия Абонемент ($m)

Анализ и автоматическое удаление блокировок

1 стартмани

17.08.2018    11332    25    Re:аниматор    7    

Перенос организации в отдельную базу, полная очистка базы от данных организации (версия от 10.02.2022)

Чистка данных Администрирование СУБД v8 1cv8.cf Абонемент ($m)

Данная обработка позволяет удалить организацию и все связанные с ней данные – документы, элементы справочников, записи регистров сведений. Обработка полезна для выделения организации в отдельную базу. Доработано для ЗУП 3.1, УТ 11.4, возможно других

4 стартмани

14.08.2018    28434    529    serge_msk    98    

Ускорение отчета 'Контроль передвижений агентов (онлайн-карты)' от AgentPlus v1.5.2

HighLoad оптимизация Рабочее место v8 1cv8.cf Украина Абонемент ($m)

У пользователей системы AgentPlus (Агент Плюс) отчет 'Контроль передвижений агентов (онлайн-карты)' v1.5.2 вызывает восторг и разочарование одновременно. Восторг – потому, что позволяет увидеть маршрут передвижения пользователя системы с привязкой к карте и дорогам, разочарование – от длительности построения отчета. Отчет по 45 точкам маршрута у меня строится больше минуты. Тестировалось на "Управление торговым Предприятием" 1.2.45.2.

1 стартмани

03.05.2018    9879    3    DiegoLidabo    0