Привет, Хабр! Меня зовут Анжелика Захарова, я — менеджер облачных проектов K2 Cloud, product owner 1C. Сегодня я хотела бы поговорить о производительности систем 1С в облаке. В этой статье мы остановимся на том, почему 1С начинает тормозить, какие компоненты обычно в этом «виноваты». Также мы поговорим о том, как можно разогнать 1С. Если вы уже сталкивались с проблемой производительности или еще только планируете миграцию на эту платформу (но уже чувствуете, что нагрузка будет большая), заходите: под катом мы подготовили для вас 27 рекомендаций по оптимизации 1С, которые можно выполнить самостоятельно или получить «под ключ» из облака.
В последнее время очень много наших проектов связаны с 1С. Это происходит потому, что при миграции с зарубежных ERP-платформ 1С является одной из ключевых альтернатив. Как следствие, мы получаем высоконагруженные системы и достаточно тяжелые СУБД, которые могут очень серьезно тормозить, снижая производительность труда сотрудников и создавая огромную головную боль для ИТ-отдела.
Но если вы уже работали с продуктами экосистемы 1С, то прекрасно знаете, что платформа достаточно требовательна к тем ресурсам, на которых она запускается. А причины зависания системы и последующей деградации производительности не всегда связаны с необходимостью масштабирования или предоставления более производительных ресурсов.
В состав платформы 1С входит множество компонентов, и каждый из них может вносить свой вклад в «торможение» вашего решения в целом. Это может быть сервер баз данных, СУБД на сервере баз данных, сервер 1С, конфигурация 1C, которая «крутится» внутри платформы, сервер лицензирования, терминальная ферма, рабочие места пользователей, а также сеть на каждом участке взаимодействия всех компонентов.
Оптимизируем СУБД
Сервер базы данных — основа любой системы. И как показали опросы, именно его производительность играет основную роль в определении «подвижности» вашей 1С. Для сервера, безусловно, важно обеспечить:
-
высокую пропускную способность дисков в МБ/сек., т. е. скорость чтения данных;
-
высокую скорость дисков в IOPS, чтобы время отклика базы данных было хорошим;
-
равномерность нагрузки на ядра CPU.
Чтобы оптимизировать работу сервера СУБД, можно применить следующие методы:
-
Разделение данных, логов и tempdb — это классическая оптимизация СУБД, для 1С она прекрасно подходит.
-
Выбор правильного типа диска для каждого типа данных. Эта практика подразумевает правильную настройку, чтобы не хранить «горячие» данные на HDD, а для tempdb выбирать самые быстрые диски, потому что на них пишется одновременно очень много данных.
-
Разделение базы на активную и архивную. Ведь чем меньше база данных, тем быстрее ее обслуживает сервер. Соответственно, пользователи будут работать в основном с небольшим набором данных, а архив будет лежать на отдельных дисках, и к нему будут обращаться только те люди, которым он реально нужен.
-
Разнесение баз на разные диски. Метод хорошо работает, если у вас есть информационная база, которая забирает все ресурсы диска. И вообще в целом рекомендуется сбалансировать базы таким образом, чтобы они друг другу не мешали.
-
Вынос вложений на файловый сервер, чтобы не допускать раздувания и снижения производительности базы данных.
Оптимизируем сервер, на котором работает СУБД
Когда речь заходит про оптимизацию работы сервера СУБД, нужно учесть такие параметры, как:
-
потребление кэша;
-
попадание в кэш и, в особенности, «вымывание» кэша;
-
размер базы, блокировки (locks), ожидания (waits), дедлоки (deadlock);
-
фулсканы таблиц;
-
состояние статистики.
Помимо методов, используемых для оптимизации СУБД, а также отслеживания состояния дисков и размеров базы данных, можно также применить:
-
Регламентные процедуры для обновления статистики и перестроения индексов, что помогает сделать индексы более полезными и обеспечить их соответствие реальной нагрузке.
-
Эксперименты с параллельным обращением. Например, если сервер 1C не очень любит параллельные запросы, можно попробовать сделать два-три потока на уровне СУБД вместо одного.
Оптимизируем сервер 1С
Для того сервера, на котором развернут сам 1С, необходимо не только установить мощные процессоры, но также следить за равномерностью нагрузки на ядра CPU, потому что в силу известных только 1С причин в работе не обязательно используются все ядра физической или виртуальной машины.
Также важно следить за скоростью диска с логами (1С пишет в журнал регистрации, который должен лежать на быстром диске, чтобы все работало быстро и эффективно) и количеством активных сессий (в противном случае процессоры начинают «метаться» между слишком большим количеством сессий). Кроме этого, на производительность влияют:
-
количество рабочих процессов;
-
потребление памяти (если памяти мало, рабочие процессы съедают всю оперативную память);
-
контекстные переключения;
-
используемая редакция (ПРОФ/КОРП), т.е. переход, если не хватает производительности на лицензии ПРОФ.
На этом уровне можно применить следующие методы оптимизации:
-
Установить высокочастотный процессор и быстрые диски;
-
Поэкспериментировать с параметрами рабочего процесса, чтобы он не съедал большое количество памяти или не содержал большое количество сессий пользователей;
-
Уменьшить количество информационных баз на одном сервере вместо попытки выгрузить на один сервер много баз (необходимо обратить внимание на контекстные переключения и эффективность работы процессора при большом количестве процессов);
-
Разделить роли по узлам кластера (для редакции КОРП), чтобы разные функции работали на разных серверах.
-
Разделить данные на активные и архивные на уровне 1С, поскольку чем меньше база данных, которая лежит под 1С (активная часть), тем лучше.
Оптимизируем конфигурацию 1С
Конфигурация — это то, с чем непосредственно работают пользователи и что своими руками правят разработчики. Чтобы ничего не тормозило, нужно тщательно следить за процессом разработки и тестирования. Бывает так, что обновления, тестирование которых показывает отличные результаты, выкатывают в прод, и сервер «ложится», потому что разработчик не учел, что с улучшением будет работать очень много пользователей, а сами улучшения требуют очень больших ресурсов. Производительность 1С будет зависеть от качества кода, особенно если его пишут джуны, от степени оптимизации запросов (чтобы пользователь получал из базы данных только нужные ему строки), а также от полномочий пользователей. Поэтому рядовому сотруднику нельзя разрешать запускать большие отчеты или работать с большими объемами данных. Эту привилегию можно оставлять, например, только главному бухгалтеру.
Чтобы оптимизировать конфигурацию 1С, нужно проводить:
-
Тщательное тестирование кода перед выкаткой в прод.
-
Внедрение APDEX для ключевых и длительных операций. 1C позволяет встраивать в код строки с результатами запросов и с комментариями, чтобы можно было видеть выполняемые пользователями действия и причины сбоев. Например, если у двух пользователей 1C работает по-разному, APDEX позволяет выявить, что причина более медленной работы систем может заключаться, например, в том, что один пользователь вызывает отчет за неделю, а другой — за год. Т.е. система работает вовсе не медленно, просто у одного из пользователей она обрабатывает больший объем данных.
-
Запретительную политику на выгрузку больших объемов для тех, кому это не нужно, поскольку сотрудники могут по незнанию выставлять неверные параметры и запускать, например, большие отчеты, которые могут положить всю систему.
Оптимизируем сервер лицензирования
Бывали случаи, когда производительность упиралась в сервер лицензирования, потому что он находился далеко, например, за долгим VPN с большим временем отклика, а 1C почему-то любит часто проверять лицензию. Соответственно, необходимо обращать внимание на следующее:
-
Нужно правильно размещать сервер лицензирования, то есть рядом с кластером.
-
Следить за нагрузкой и вовремя увеличивать параметры сервера, если частота обращений становится такой, что он не справляется.
Оптимизируем терминальную ферму
Терминальную ферму часто пытаются вместить на одну машину, выдав ей огромное количество CPU и памяти. Но в случае с 1С этого делать не стоит, учитывая контекстные переключения. На практике процессору оказывается очень сложно работать с большим количеством одновременных сессий. Здесь подходят следующие методы оптимизации:
-
Следовать рекомендациям вендора по параметрам узлов. Microsoft, например, рекомендует не превышать количества в 50 пользователей на одном узле, потому что это оптимальное число, с которым узел спокойно справляется. CPU и память уже подстраиваются под задачи, которые решаются на терминальной ферме.
-
Обеспечить запас фермы в количестве хотя бы одного узла на случай выхода из строя или регламентных работ, чтобы пользователи могли переподключиться без сбоев в работе, не заметив проблем.
-
Отслеживать нагрузку CPU и память и вовремя их увеличивать.
-
Хранить профили пользователей на быстрых дисках, потому что клиент 1С размещает в профиле пользователей все временные данные. Таким образом, даже если сервер 1С выдает данные достаточно быстро, клиент 1С может задерживать обработку данных из-за узких мест.
Оптимизируем рабочие места пользователей
Комфортное и быстрое рабочее место без лишнего программного обеспечения — это не прихоть. В случае с 1С это очень важно, равно как присмотр за антивирусом, который может съедать все ресурсы процессора.
Если пользователи начинают жаловаться на то, что 1С начинает тормозить, необходимо провести проверку рабочих мест. При их комплектации важно:
-
Правильно подобрать «железо» для 1С. Да, может быть это совет из серии «Капитана Очевидность», но нередко проблема оказывается именно там.
-
Правильно настроить ПО, особенно антивирус.
-
Проверить, достаточно ли быстро работает сеть.
-
Предусмотреть возможность переключения пользователя на терминальную ферму, если обеспечить хорошее рабочее место не получается.
Оптимизируем сеть
Из-за низкой пропускной способность сети и высоких задержек именно сеть может стать камнем преткновения для нормальной работы 1С. При этом проблемы проявляются по мере увеличения нагрузки и роста масштабов вашей экосистемы.
Методы оптимизации
-
Нужно располагать все компоненты как можно ближе друг к другу, в том числе все серверные компоненты, такие как сервер 1С, терминальный сервер, сервер лицензирования. Это легко обеспечить в облаке.
-
Обеспечить быстрое подключение рабочего места или предоставить терминальный доступ. То есть всякие изыски, типа VPN через спутник — не самое лучшее решение, потому что сервер может сформировать какую-либо форму за секунду, а до пользователя это форма может добираться минуту, хотя субъективно будет казаться, что медленно работает вся система.
Преимущества облака
Как вы можете видеть, список получается очень даже внушительным. В нем есть и простые приемы, и рекомендации, требующие достаточно глубокого погружения. Дело в том, что для высокой производительности недостаточно просто «залить 1С ресурсами». Очень часто оказывается, что нужно качественно иначе подойти к организации архитектуры, и поэтому бизнес-заказчикам хочется сразу получить «то, что нужно» для развертывания и дальнейшего расширения 1С. И именно поэтому сегодня мы все чаще видим, что люди приходят в К2 Cloud не просто «За 1С», и даже не «За 1С в облаке» — к нам обращаются именно за комплексной экспертизой. Наша команда настраивает окружение под размещение систем 1С, мониторинг для отслеживания узких мест производительности и реализации мер превентивного реагирования, а также оказывает услуги комплексной поддержки на протяжении всего жизненного цикла 1С в Облаке.
В облаке можно быстро и гибко менять архитектуру решения. На базе собственной инфраструктуры в текущих реалиях сделать это бывает достаточно сложно, и не всем оказывается под силу.
Облако — оптимальная платформа, которая обеспечивает повышение производительности, отказоустойчивость и гибкое масштабирование в сравнении с локальной инфраструктурой. Срок предоставления доступа к 1С в К2 Облаке занимает как правило от одного часа, а срок выделения сервера — от одного дня, что несравнимо со сроком поставки оборудования для локальной инфраструктуры.
Второе важное преимущество — сокращение затрат. По нашему опыту, закупка собственной серверной инфраструктуры и/или построение собственной серверной зоны всегда выходит дороже. Ценообразование, как правило, строится следующим образом: серверное оборудование, сетевое оборудование, коммутация, энергопотребление, инженерка, отказоустойчивость, охлаждение, обслуживающий штат. Пользуясь услугами облачного провайдера, вы можете сократить издержки бизнеса на 20% или более в части стоимости владения ИТ-системами и затрат на вход.
Третье преимущество — безопасность и надежность. К2 Облако имеет сертификаты и аттестаты соответствия стандартам ГОСТ 57580, PCI DSS, 152-ФЗ, ISO 27017 и ISO 27001, которые подтверждают высокий уровень безопасности. Если же рассматривать именно закон «О защите персональных данных», мы можем обеспечить защиту ваших информационных систем вплоть до первого уровня защищенности.
Четвертое преимущество — это принцип единого окна для решения всех вопросов. В рамках комплексных проектов мы всегда несем ответственность за каждого члена нашей команды, в том числе за партнеров, которых мы привлекаем для решения комплексных задач. Мы обеспечиваем поддержку с нашей стороны от инфраструктуры до установки и поддержки прикладного ПО, при этом среднее время реакции – до 15 минут, выделенный персональный менеджер и поддержка до уровня мессенджеров.
Заключение
Подводя итог всего, о чем мы говорили выше, я должна сказать, что оптимизировать 1С, конечно, нужно. И, естественно, намного проще воспользоваться для этого уже готовой экспертизой — что мы и предлагаем клиентам K2 Cloud. Но если вам по какой-то причине удобнее потратить свои ресурсы и пройти тот же путь, вы можете смело использовать все 27 способов оптимизации — они опробованы в боевых условиях и уже принесли много пользы резидентам нашего облака.
ссылка на оригинал статьи https://habr.com/ru/articles/856786/
Добавить комментарий