КонецПроцедуры
Эта нехитрая конструкция (всего лишь две строчки, которые при желании можно ужать и до одной), если ее внедрить в модуль каждого документа конфигурации, произведет эффект термоядерного удара: абсолютно все транзакции, связанные с проведением любых документов, станут конкурентными, так как все документы будут пытаться перезаписать одну и ту же константу. Оперативная работа предприятия будет сначала нарушена, а затем полностью парализована – только лишь потому, что специалист не дочитал документацию до раздела, повествующего о блокировках, если вообще брал таковую в руки. Пример, разумеется, очень утрирован, но привести подробное описание реальных технологических «фугасов», заложенных под живые информационные системы некомпетентными «специалистами», в рамках статьи не представляется возможным – банально не хватит места.
Вне зависимости от того, является ли проблема конкурентной борьбы пользователей за ресурсы объективной или созданной искусственно, решать ее можно тремя разными путями.
• «Инвестиционный» подход. Купить более мощные серверы, увеличить количество процессоров, утроить объем памяти, заменить дисковую подсистему более производительной и т. п. Оборудование будет работать быстрее, транзакции будут занимать меньше времени – возможно, проблема исчезнет сама собой. Здесь требуются только деньги, и ничего кроме.
• «Организационный» подход. Приказным порядком минимизировать количество конкурентных транзакций в информационной системе – например, ввести жесткие посменные графики работы пользователей. «Отдел А имеет право проводить документы только в четные часы, отдел Б только в нечетные», «менеджер А продает только телефоны, менеджер Б продает только садовые грабли» и т. д. Потребуется фантазия от руководства и строжайшая дисциплина от пользователей.
• «Экспертный» подход. Проанализировать проблему на всех уровнях, локализовать причины, разработать и применить на практике методики оптимизации информационной базы. И только в случае, если никаких резервов для оптимизации не осталось, – инвестировать в оборудование и (или) провести реорганизацию бизнес-процессов предприятия. Здесь прежде всего потребуются квалификация и опыт специалистов по технологическим вопросам платформы «1С: Предприятие 8».
Первые два подхода, при всей их простоте и очевидности, являются классическим заметанием мусора под ковер, борьба ведется не с проблемой, а с ее внешними симптомами. Как уже говорилось, привлекательность простых путей в ИТ обманчива. Единственно верное и эффективное решение проблем с параллельной работой большого числа пользователей в сложных информационных системах – экспертная оценка с последующей оптимизацией.
Любая прикладная операция, выполняемая пользователем в информационной базе «1С: Предприятие 8», порождает ряд последовательно выполняемых технологических операций, а именно:
• Клиентское приложение передает информацию о запрошенной пользователем операции кластеру серверов «1С: Предприятие 8».
• Кластер серверов выполняет прикладную логику, заданную для операции (если таковая присутствует), формирует инструкции для СУБД в виде SQL-запросов и передает их серверу баз данных.
• Сервер баз данных выполняет переданные ему SQL-запросы и передает результаты кластеру серверов.
• Кластер серверов «1С: Предприятие 8» анализирует результаты работы сервера баз данных, приводит их к заданному прикладной логикой операции виду и передает клиентскому приложению.
• Клиентское приложение интерпретирует и отображает результаты выполнения операции.
Такая последовательность действий выполняется для любой прикладной операции над данными, даже если пользователь просто листает форму списка документов. На практике это означает, что между кластером серверов «1С: Предприятие 8» и сервером баз данных (это может быть MS SQL Server, IBM DB2 или PostgreSQL) происходит интенсивный обмен данными – поток запросов в сторону СУБД и обратный поток результатов в сторону кластера серверов. Очевидно, что поиск «проблемных участков» конфигурации необходимо строить следующим образом:
• Анализ массива SQL-запросов, передаваемых СУБД. Выявление «проблемных» запросов – тех, которые порождают ожидания на блокировках или взаимные блокировки либо выполняются неоправданно долгое время.
• «Перевод» проблемных SQL-запросов, выполняемых СУБД, в термины метаданных конфигурации «1С: Предприятие 8». СУБД оперирует именами физических таблиц и полей, а проблему требуется локализовать среди прикладных объектов и программного кода на встроенном языке.
• Выявление тех объектов метаданных и тех фрагментов программного кода, которые инициируют проблемные SQL-запросы.
Все эти операции можно выполнять в полностью ручном режиме: СУБД предоставляет инструменты для трассировки выполняемых SQL-запросов, а соответствие прикладных объектов метаданных и их реквизитов таблицам и полям физической базы данных можно достичь средствами встроенного языка. Исчерпывающую информацию обо всех событиях, происходящих в информационной базе, предоставляет правильно настроенный технологический журнал «1С: Предприятие 8». Главная трудность заключается не в доступе к источникам информации, а в необходимости вручную выполнить огромный объем рутинных действий по настройке этих источников, а также по сбору и обработке технологических данных. Причем выполнять эти действия требуется регулярно. Для эффективной работы специалисту необходим инструмент, который позволил бы автоматизировать рутинные действия по извлечению, обработке и первичному анализу технологических данных информационной базы «1С: Предприятие 8». Существует ли такой инструмент?
Такой инструмент существует. Он называется «Центр управления производительностью» и входит в состав программного продукта «1С: Корпоративный инструментальный пакет 8». «Центр управления производительностью» представляет собой независимую информационную базу «1С: Предприятие 8» и предназначен для полной автоматизации следующих задач:
• мониторинг показателей производительности клиент-серверной информационной базы «1С: Предприятие 8»;
• интегральная оценка производительности информационной базы в реальном времени;
• запись и хранение исторической информации о показателях производительности;
• анализ динамики изменений показателей производительности за произвольный период времени;
• выявление проблем производительности клиент-серверной информационной базы;
• получение полного технологического контекста выявленных проблем производительности.
Важный нюанс: подключение «Центра управления производительностью» к любой информационной базе кластера серверов «1С: Предприятие 8» не требует ни внесения в конфигурацию исследуемой информационной базы изменений, ни даже перерыва в ее работе. «Центр управления производительностью» самостоятельно подключается к СУБД, самостоятельно производит настройку технологического журнала исследуемой информационной базы, самостоятельно извлекает и обрабатывает всю необходимую информацию. Взяв в руки этот инструмент, специалист-эксперт может навсегда забыть про черновую работу и сосредоточиться на своих главных функциях – анализе ситуации и поиске решений.
«Центр управления производительностью» (далее ЦУП) может работать в двух режимах.
• Режим мониторинга. В этом режиме требуется подключение ЦУП к исследуемой информационной базе. Эксперт может выбрать для отслеживания в реальном времени и (или) для записи в информационную базу ЦУП интересующие его показатели производительности. Отслеживание и сбор информации производятся по трем группам показателей: выполнение запросов к СУБД, ожидания на блокировках, взаимные блокировки.