Всем привет.
Пост будет больше интересен руководителям отделов ИТ сопровождения, или проектным менеджерам, перед которыми будет стоять задача решения проблемы деградации производительности баз данных 1С. Пост для тех, кому эта тема нова, нет особого опыта, и с ходу непонятно, с чего начать.
Много лет назад потребность обеспечения высокой производительности баз данных стала в разы актуальней, однако до сих пор отнюдь не всегда подобные вопросы получается легко решить, в связи с чем попытаюсь изложить вам свое видение, исходя из личного опыта.
Итак, у нас есть проблема: база данных 1С “висит”, пользователей из базы “выкидывает”, работать невозможно. При этом предварительный анализ показал, что сервис в запущенном состоянии, и работа предстоит долгая и упорная, с ходу не поборешь.
Руководство, мягко говоря, жутко недовольно, “стоит за дверью с вилами”, так как деятельность предприятия фактически парализована, и лично ваша судьба в компании висит на волоске и зависит от решения данного вопроса. Самое важное в этот момент – сохранять спокойствие, не давать ложных надежд о сиюминутном результате, подготовить лицо, принимающее решение (ЛПР) к, вероятно, долгому и сложному пути (кстати, при проведении работ по оптимизации крайне рекомендуется договориться с ним о том, чтобы количество изменений (не связанных с оптимизацией) в базе данных 1С в этот период было минимальным, или отсутствовало).
Почему с наскока, вероятно, решить проблему не получится:
1. Для поиска узких мест в базе данных 1С нужен «взгляд со стороны», отследить по формальным признакам зачастую – невозможно;
2. Оптимизация - не разовая работа, а постоянный, живой, процесс повышения эффективности работы базы (можно сравнить со стройкой моста: после того как он построен, необходим регулярный его ремонт, так и в данном случае);
3. Найти все узкие места (в том числе даже при помощи самых современных систем мониторинга) сразу не всегда бывает возможным, так как часть из них может возникать только в случае определенных событий и сценариев.
Трезво оцените свои силы и решите, что будет выгоднее компании на первом этапе: купить экспертизу или растить свою.
Важно учитывать, что проблемы могут быть где угодно, или сразу везде, поэтому учитываем необходимость в проработке следующих моментов:
- Типовая программная оптимизация:
- устранение долгих запросов в коде (система мониторинга долгих запросов, нагрузки на сервер – наше всё; в моем случае это универсальная, самописная система)
- Выявление и выставление оптимальных настроек SQL, кластера 1С. Выявление зачастую возможно только опытным путем, так как существует множество нюансов, наложение которых делает стандартные рекомендации бесполезными.
- организация обслуживания базы данных типовыми (как минимум) средствами
- добавление регулярных профилактических работ (автоматическая перезагрузка служб) в технологические окна (как показывает практика, это сильно помогает даже когда все остальные пункты отработаны)
- очистка лишней информации (например, десятки миллионов неактуальных (ненужных) записей в регистре, что постоянно перебираются в ходе вполне себе корректных запросов, в результате чего сильно тормозят работу базы данных 1С)
- отключение версионирования (да-да, зачастую оно не нужно, и хватает резервных копий для того или иного анализа – в случае высоконагруженных систем это обычное дело) и иные хитрости
- обращаем внимание на взаимодействие базы данных 1С с иными системами (зачастую, проблемы могут вызывать они, например, при заборе данных из нашей базы данных 1С – и опять же: мониторинг нам в помощь) – устраняем проблему
- Логическая программная оптимизация: выявление избыточных операций (такое вполне себе может быть), переговоры с бизнесом об отказе от них (не все партнеры предлагают эту услугу, зачастую ограничиваются пунктом 1, да и то не по всем мероприятиям)
- Апгрейд оборудования (важно этот пункт отработать после того, как проработаны два предыдущих, так как далеко не всегда дело в нехватке серверных мощностей, а зачем нам лишний закуп?). Есть множество рекомендаций на сей счет, но основная суть (внимание: баян) – берите мощности с запасом, не прогадаете (иначе можно быстро похерить все те результаты, которых удалось добиться программной и логической оптимизацией)
- Раздельное размещение базы данных на сервере(ах) – перепроверяйте эффект: несмотря на однозначные рекомендации партнеров по разнесению базы данных на один сервер, а работу пользователей на другой, отнюдь не всегда это дает положительный эффект (поэтому пробуйте оба варианта, и в зависимости от базы - результат может вас удивить)
- Изысканные архитектурные решения, вроде разделения базы данных на части: в одной крутятся отчеты, в другой осуществляется документооборот (или иначе)
- Взаимодействие с фирмой 1С через центры корпоративной технологической поддержки(проект КЦТП)
И вот, наконец, победа - приходит долгожданный эффект!
Но что потом?
Есть несколько советов для того, чтобы не превратить большие старания и маленькую победу в краткосрочный результат, сменяющийся последующим ухудшением (помните аналогию про строительство моста?):
- После выполнения всех работ (а потом и с определенной периодичностью) обязательно проводим опрос целевой аудитории, работающей в базе, собираем обратную связь (помним о том, что не всегда все проблемы может отловить система мониторинга). Примеры вопросов:
- оцените скорость работы в базе данных 1С в настоящий момент
- заметили ли вы позитивные изменения (скорость работы) в базе данных 1С по сравнению с тем, как было несколько месяцев назад/до начала проекта?
- напишите, пожалуйста, отзыв, если скорость работы в базе не устраивает: какие операции в базе данных 1С вы порекомендовали бы ускорить?
После этого точечно отрабатываем замечания, а для отчета об окончании комплексной оптимизации представляем ЛПР аналитику по выполнению долгих запросов было – стало.
- Подготовка и заключение договора на регулярные аудиты (с последующей оптимизацией) с компанией, специализирующейся в подобных вопросах (их масса в РФ), для организации процесса предиктивного устранения возможных проблем в работе базы данных 1С (критерии при выборе):
- Стоимость и состав услуг
- Стоимость аналогичных предложений с рынка
- Примеры выполненных работ
- Наращивание собственной(штатной) экспертизы в области оптимизации высоконагруженных конфигураций с целью повышения безопасности бизнеса и минимизации стоимости организации сервиса. В том числе позволит более вдумчиво изменять код, не делая его менее оптимальным.
Важные замечания:
- при оптимизации долгих запросов соблюдаем принцип: штатное обновление типовыми релизами не должно серьезно усложниться (расширения)
- изменение культуры работы в продуктивной базе данных 1С: все изменения – только в песочнице, все тесты – только в песочнице, все права администратора – только у ответственных за ИТ сопровождение лиц (сложно представить, но не везде и всегда соблюдается этот принцип, и даже в случае оптимизированной базы – запуск тяжелых обработок в рабочее время может сильно усложнить жизнь)
У меня всё, спасибо за внимание.
Надеюсь, кому – то пригодится.
И по – прежнему не забываем, что не всегда существуют быстрые решения, важно планомерно работать над устранением.