Ускоряем запуск 1С
Рассмотрим несколько приемов, которые позволяют в десятки раз ускорить время запуска 1С, особенно после обновления конфигурации
Почему 1С запускается долго?
«Загрузка 1С – процесс длительный, и это нормальная ситуация» – такое популярное мнение можно нередко услышать на просторах Интернета. На самом деле запуск 1С в пользовательском режиме при нормальных настройках и хорошем оборудовании – дело нескольких секунд. Большинство пользователей, опираясь на свой опыт, со мной не согласятся.
Действительно, на запуск 1С у пользователя ходит куда больше времени. Почему? Да тут все просто: большую часть времени при загрузке 1С тратит не на старт клиентского приложения и подключение к серверу, а на запуск некой программки 1CEStart.exe, которая прочитает настройки, определит версию сервера, получит список баз и т.п.
Но и на этом все не закончится – далее будут прочитан список пользователей из базы, загружены настройки пользователей и в списке выбран последний пользователь, который заходил в систему. При этом открывается диалоговое окно, предлагающее выбрать учетную запись и ввести пароль. И только после успешного ввода пароля наконец начнется запуск 1С, который в общем объеме потраченного времени займет не самую большую долю.
Для пользователя время запуска 1С не настолько критично, если оно не превышает определенного порога. Данную операцию ему необходимо проделать, как правило, всего несколько раз в день, следовательно, потери времени на запуск будут небольшими и существенно не скажутся на работе.
А вот для разработчика ситуация уже совсем другая: запуск 1С происходит регулярно, особенно на стадии отладки решения. Архитектура платформы 1С позволяет разработчику при первой необходимости пользоваться отладкой, что, кстати, положительно сказывается на времени разработки.
Кроме того, 90% работы программиста 1С – это скорее доработка уже существующего решения, поэтому отладка используется даже на начальных этапах. Это приводит к тому, что в процессе работы программиста запуск 1С и обновление конфигурации будут очень частыми операциями, и, конечно, длительное их выполнение станет существенно тормозить разработку. Архитектура новых версий решений 1С основана на использовании большого количества объектов метаданных типа «роль». Поскольку от ролей зависит возможность доступа к объектам конфигурации, все правила, описанные для ролей, система кэширует при старте. После обновления конфигурации этот кэш надо переинициализировать. Соответственно при большом их количестве время запуска может существенно вырасти.
Подводя итог, можно выделить следующие факторы, которые приводят к замедлению запуска 1С:
- При первом запуске – чтение списка информационных баз, чтение списка пользователей, определение версии сервера.
- Повторная инициализация кэша метаданных после обновления информационной базы.
- Большое количество ролей в конфигурации.
- Чтение метаданных при запуске.
Теперь давайте попробуем разобраться, как мы можем уменьшить негативное влияние этих факторов на время запуска 1С.
Альтернативный стартер
По умолчанию 1С создает ярлыки, которые запускают программу 1СEStart.exe. В первых версиях платформы 8.2 количество ошибок в этом небольшом стартере едва ли не превосходило их количество в остальной части платформы. Теперь ситуация, конечно, лучше, но вряд ли можно назвать данную программу удачным решением 1С. Поэтому я настоятельно рекомендую выбирать альтернативные методы запуска.
Для пользователей самым оптимальным будет «батник» с картинкой 1С или заданная в самом ярлыке командная строка. Возможные параметры командной строки можно посмотреть в документации.
Но для разработчика лучше использовать другой вариант – сторонний стартер для 1С.
Чем он полезен для скорости запуска:
- Стартер сворачивается в трей, оттуда его можно вызвать одним кликом. При этом не происходит его повторного запуска, анализа файлов и прочих затратных процедур.
- В приложении можно указать пользователя и пароль для каждой базы, с которыми он будет их запускать по умолчанию.
- Исполняемый файл для запуска можно указывать не 1CEStart.exe, а уже 1Cv8c.exe, ну или 1сv8.exe.
- Первый указывается, если нужен только клиентский доступ, при этом в режиме тонкого клиента. Второй – в остальных случаях.
- Ну и наконец, если в списке баз так 50 (как я писал ранее в одной из статей, разработчику лучше иметь под рукой большую часть типовых конфигураций, что бы при необходимости переносить нужный функционал в разрабатываемое прикладное решение), то возможность «последние запущенные ИБ» будет очень полезна.
Размещение кэша метаданных на RAM-диске
Как было отмечено выше, кэш метаданных обновляется при обновлении ИБ. Он представляет развернутую для удобства чтения информацию о метаданных конфигурации. Объем его может варьироваться от 3-5 Mб до 500 Мб. При этом дисковых обращений к кэшу метаданных очень много. Из-за них дисковая подсистема часто бывает перегружена. Когда к небольшому объему данных происходит много дисковых обращений, решение напрашивается самособой – RAM-диск.
Можно вместо RAM-диска использовать SSD, но специфика состоит в том, что половина обращений – на запись, а потеря этих данных ничего не уничтожит. Это всего лишь временные файлы. В случае большого количества ролей в конфигурации от скорости работы кэша время запуска будет существенно варьироваться. Для создания RamDisk можно использовать программу Superspeed RamDisk. Из преимуществ данной программы я бы отметил следующее:
- Популярность
- Сохранение данных RAM-дисков при выключении ПК и восстановление их при включении
- Простота использования
- Большое количество поддерживаемых архитектур
Главный недостаток состоит в том, что эта программа все-таки платная. Но $60-80 может позволить себе даже рядовой пользователь, если, конечно, лицензия уже не куплена на организацию (около 22 000 руб.), ведь быстрый запуск 1С – это не единственная сфера применения ПО класса RamDisk. Конечно, существуют и бесплатные аналоги. Создать RAM-диск – это одно, а заставить 1С записывать на него кэш метаданных – это другая задача. Самое простое решение – использовать «батник» для запуска 1С примерно следующего содержания:
SET Temp=G:\Temp
SET Tmp=G:\Temp
start C:\Snegopat\core\starter.exe
Этот «батник» устанавливает временные каталоги для конкретного приложения (1С) в папку Temp, расположенную на диске G. Диск G соответственно создан в оперативной памяти. В качестве исполняемого файла указан файл «Снегопата». Для использования стороннего стартера или классического стартера 1С можно просто заменить путь к файлу.
Уменьшение количества ролей в конфигурации
Новая концепция разработки прикладных решений на платформе «1С:Предприятие» предполагает использование отдельных групп ролей на каждый объект метаданных. Такая архитектура очень удобна с точки зрения функционала и гибкости настройки прикладных решений. Но с производительностью, к сожалению, у нее пока некоторые проблемы. Рекомендация тут может быть одна: если вы планируете переработку своего прикладного решения под данную схему или разработку нового под конкретного заказчика, оцените необходимость такой гибкости в управлении правами доступа. За нее, к сожалению, придется «платить» увеличением объема потребляемой памяти, кэша метаданных и временем запуска 1С, особенно после обновления конфигурации базы.
Размещение всей информационной базы на RAM-диске
Основным режимом работы платформы «1С:Предприятие» сейчас уже является клиент-серверный. Несмотря на заявление компании 1С об одинаковой работе приложения в клиент-серверном и файловом режимах, технологические различия все-таки существуют, но связаны они в основном со скоростью работы прикладного решения. Поэтому на этапе разработки основной функциональности допустимо использовать файловый вариант. Конечно, при условии, что после окончания разработки тестирование и нагрузочные испытания будут производиться в клиент-серверном режиме.
При разработке в файловом варианте исключаются временные затраты на клиент-серверное взаимодействие, за счет чего скорость запуска 1С возрастает. При старте основная нагрузка приходится на файловую систему, потому что необходимо прочитать определенный объем данных для работы системы. Для разработчика к этому объему данных добавляется еще и конфигурация (около 100 Мб), которую платформа считывает заново при запуске после обновления БД, чтобы обновить кэш имеющихся у нее метаданных.
Тут ничего нового придумать не получится – только разместить базу данных на RAM-диске или на диске SSD.
В результате этих действий можно уменьшить время запуска в 10-15 раз. В моей практике конфигуратор, который запускался две минуты, начинал запускаться за пять секунд. На первый взгляд это незначительная экономия времени, но двухминутные затраты на запуск отладки делают практически невозможной разработку решений в нормальном режиме
Источник: «Системный администратор» №136 март 2014
Отсутствие капитальных затрат на закупку дорогостоящего программного обеспечения, его обслуживания и настройку. Затраты на аренду 1С — минимальны.