Увеличение производительности информационной системы 1С 8 различными способами (блокировочный механизм, оптимизация кода, параллельные вычисления)   

Версия для печати   

Технический директор компании Софтпоинт. Эксперт по производительности, один из авторов мониторинга PerfExpert, репликации информационных БД. Под его руководством выполнено более 300 проектов по производительности 1С.


Наша компания и я, в частности, более 7 лет занимаемся разработкой и оптимизацией систем на базе 1С. Кроме этого, мы занимаемся обменом между базами 1С в режиме online, различными интеграциями, кластеризацией, масштабируемостью и параллельными вычислениями. У нас более 400 успешных проектов по производительности, из них более 100 на системе 1С версий 8.1 и 8.2. Чтобы вы понимали уровень систем, которые мы оптимизируем, я  могу привести параметры оптимизированных систем  – до 1500 в одной базе данных и по размерам файлов баз данных – это более 2 Террабайт.

            Соответственно, за это время, шаг за шагом совершенствовали свои методы,  эволюционировали свои технологии, и пришли к некоторым результатам и выводам, с которыми хотим вас ознакомить.

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

            Давайте немножко помечтаем:

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

            Для более простого понимания проблем производительности, мы их разделили на несколько групп, которые представлены на слайде.



  • Первая группа – легковоспроизводимые проблемы. Я уверен, что вы с ними сталкивались повсеместно. Это может быть оптимизация запросов, не оптимальность алгоритма в коде приложения, различные неэффективные индексы. По этим проблемам много литературы. Компания«1С» и прочие крупные франчайзинговые компании разрабатывают курсыпо совершенствованию навыков программистов и администраторов 1С по вопросам производительности. Эти проблемы, как правило, можно вычислить и исправить собственными силами без специальных нестандартных инструментов.
  • Есть также другой тип проблем. Это проблемы непостоянные и непредсказуемые. Наверняка, вы тоже отчасти с этим сталкивались, но возможно, представляли совсем другую их природу. Это могут быть проблемы, которые появляютсянеожиданно. Например, это может быть падение на каком-нибудь узле – пользователя, сервера приложений, это может быть торможение в определенный момент. В общем-то, причинами этого всего может быть что угодно. Это может быть работа регламентного задания, которая приводит к сбою по определенным причинам или вызывает общее торможение системы в момент своей работы. Для таких проблем обычно должна использоваться другая методика решения.
  • Третий вид проблем (я специально эти проблемы выделил в особую группу) – это проблемы предсказуемые, но сложно решаемые. Вы понимаете, что никакими стандартными средствами 1С не решить определенные задачи (для примера возьмем проведение больших регламентных документов, восстановление последовательностей, которые не укладываются у вас в определенное время). Соответственно, про такие проблемы вы понимаете, что их надо решать, но не понимаете, как это сделать. Для решения подобных проблем используются такие технологии, как, параллельные вычисления, распределенные дисковые хранилища и пр.

На экране не зря приведена картинка с медицинской рукой, которая измеряет дыхание или меряет пульс. То есть, если привести аналогию с оптимизацией – в общем-то, все те же самые «профилактические процедуры» вы можете встретить в медицине. Для лечения системы мы используем практически все те же самые средства, которые врачи используют для лечения человека – система это тоже многофакторный сложный организм. К ее исследованию нельзя подходить «в лоб» - без учета хотя бы основных факторов, делать какие-то заключения.

      «Жили мы, жили без проблем…и вдруг…», - собственно, так и бывает. Проблемы есть всегда, поговорим о способах их решения. В момент, когда в отрасли компьютерной техники происходил бурный рост - увеличивалась частота процессора и количества транзисторов – те проблемы, которые у нас тогда все были -  решались простой покупкой нового оборудования – частота растет, диски улучшаются, объем памяти увеличивается – все можно решить в рамках такого подхода. А где-то уже в начале 2000-х годов, когда в продажу поступили сравнительно дешевые компьютеры с многоядерными процессорами, решение проблем производительности стали решатьсянетривиально. Для того чтобы решить эти проблемы – недостаточно купить оборудование. А в ряде случаев, мы вообще считаем, что покупка нового оборудования – это неэффективный подход без правильного и логическогоаргументирования необходимости.

Поиск причин проблем производительности

      Если взять ситуацию, при которой ваша система хоть какое-то время в начальном периоде приемлемо работала, то основные причины, в порядке популярности, выглядят именно так:

 

  • Плохое качество контроля (систему запустили) – не следили за ее параметрами
  • Бурный рост компании привел к тому, что увеличились информационные потоки, а IT-инфраструктура не поспевает за этим процессом. Конфигурация, предназначенная для автоматизации бизнеса вашей компании, сначала разрабатывалась одним программистом, потом происходили рокировки в числе разработчиков, образовывались тупиковые ветки функционала, алгоритмы, в которых никто не может разобраться…Система вышла из-под контроля, не только с точки зрения функционала, но и производительности.
  • При внедрении нового функционала мы не всегда проверяем, насколько это можно делать. В частности, не проводятся нагрузочные тестирования, либо тестирование не затрагивает новый функционал. Эта причина, в основном связана с уровнем развития IT-инфраструктуры в целом в организации. Чаще всего на это закрывают глаза, думая, что купив дорогостоящие программные или аппаратные ресурсы это решится само собой.

Особенности проектов по оптимизации производительности информационных систем

Для того чтобы вы проще понимали, какие особенности в отличие от проектов интеграции и автоматизации вы встречаете в проектах производительности – мы хотим сделать акценты на некоторых особенностях проектов производительности, которые надо учитывать:

Первая особенность проектов по оптимизации производительности

Первую особенность проектов по оптимизации производительности можно описать следующим образом,


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

Вторая особенность проектов по оптимизации производительности


Вторая особенность проектов производительности в том, что проблемы производительности распределены во времени неравномерно.

Если мы решаем проблемы из второй и третье групп проблем (проблемы непостоянные и непредсказуемые или предсказуемые, но сложно решаемые), то – обычно бывает, что система в принципе – работает. 2 часа стабильной работы -  15 минут «простоя». Дальше опять – работаем весь день – 15 минут «простой». Может быть много факторов, от которых это зависит – регламентные операции, административные мероприятия – отгрузки, акции, сезонность – множество факторов… Но, необходимо помнить, что эти «зависания» системы сосредоточены в определенных моментах времени, которые зачастую достаточно непродолжительны.

Третья особенность проектов по оптимизации производительности

Итак – переходим к третьей особенности: