Нередко системные администраторы и разработчики сталкиваются с ситуацией, когда информационная база начинает работать с задержками: первое проведение документа в новом сеансе длится 20–30 секунд, а повторное проведение того же или аналогичного документа занимает менее секунды. Аналогично первое открытие экранных форм происходит с заметным зависанием. При этом перенос базы на другую СУБД (например, с PostgreSQL на MS SQL) не решает проблему. Разберем основные причины такого поведения и пошагово выясним, как вернуть информационную базу к нормальной производительности.
Одной из скрытых причин медленного выполнения первого обращения к метаданным и модулям является флаг отладки (-debug) на рабочем сервере «1С:Предприятия». Проанализируем, как этот механизм влияет на работу:
rphost оптимальным образом.Рассмотрим типовую ситуацию, когда модуль проведения обращается к регистрам накопления. Если регламентные операции пересчета итогов выполняются с ошибками или дата рассчитанных итогов отстает от реального периода учета, платформа при проведении документа генерирует тысячи запросов обновления таблиц итогов (AccumRgT...) за все пропущенные месяцы.
Посмотрим на пример характерного запроса к СУБД, который появляется в технологическом журнале при сдвинутых или некорректных итогах:
UPDATE AccumRgT16283
SET Fld16279 = Fld16279 + -1,
Fld16280 = Fld16280 + -1,
Fld16281 = Fld16281 + -11374.35
WHERE Period = DATETIME(2017,8,1) AND ...
Такой запрос может циклически повторяться для каждого месяца от точки расхождения до текущей даты, многократно увеличивая длительность транзакции.
Разберем порядок действий для устранения проблемы с итогами:
Иногда выгрузка и загрузка через файл .dt не устраняет внутренние логические несоответствия структур таблиц. В таких ситуациях помогает полная реструктуризация таблиц информационной базы:
При замере производительности стандартными средствами платформы разработчики нередко упускают из виду подписки на события, привязанные к объекту документа. Проанализируем этот момент:
ПередЗаписью, ПриЗаписи и ОбработкаПроведения для проблемного документа.Если база данных развернута на Linux (Debian/Ubuntu) или Windows Server, аппаратная платформа может искусственно занижать тактовую частоту процессора в моменты старта транзакций:
Performance), исключающий задержки при переключении частоты ядер процессора.vm.swappiness на сервере СУБД находилось в пределах 1–10, предотвращая выгрузку активных страниц rphost и postgres в swap.Если после выполнения базовых процедур причина задержки остается неясной, настроим сбор технологического журнала для локализации длительных операций. Настроим файл logcfg.xml на отслеживание событий DBPOSTGRS (или DBMSSQL), SDBL и CALL с фильтром по длительности:
<config xmlns="http://v8.1c.ru/v8/tech-log">
<log location="/var/log/1c/logs" history="24">
<event>
<eq property="name" value="DBPOSTGRS"/>
<gt property="duration" value="100000"/>
</event>
<property name="all"/>
</log>
</config>
Это позволит точно увидеть, на каком именно SQL-запросе, блокировке или серверном вызове происходит задержка в 25 секунд при первом проведении документа.