Многие системные администраторы и специалисты 1С сталкиваются с ситуацией, когда конфигурация «Зарплата и управление персоналом», редакция 3.1 начинает работать крайне медленно в файловом режиме. Особенно остро это проявляется, когда количество одновременно работающих пользователей превышает 2–3 человека, даже если серверное оборудование кажется мощным, а тесты производительности показывают хорошие результаты. Разберем по шагам, почему это происходит и как вернуть системе быстродействие.
Рассмотрим типовую ситуацию: база данных объемом около 1,5 ГБ размещена на терминальном сервере. Процессор имеет высокую тактовую частоту, оперативной памяти достаточно (например, 32 ГБ), но пользователи жалуются на «тормоза» при проведении документов, открытии форм или расчете зарплаты. Проанализируем результаты теста Гилёва: если они показывают высокие баллы, это означает, что однопоточная производительность системы (процессор + диск) в норме. Однако проблема файлового режима 1С заключается в конкурентном доступе.
Выясним причину замедления с помощью простого эксперимента: попросим всех пользователей выйти из базы и выполним те же операции (например, проведение «Начисления зарплаты») монопольно. Если в одиночном режиме «все летает», значит, проблема не в мощности «железа» как такового, а в механизмах блокировок файловой системы и платформы 1С.
Чтобы точно определить, во что упирается система, настроим Технологический журнал. Рассмотрим фрагмент лога, который обычно сопровождает подобные зависания:
08:05.965004-0,EXCP,0,process=1cv8c,Exception=DatabaseException8,Descr="Не удалось заблокировать запись. Действие (изменение, удаление или блокировка записи) не выполнено 'OBJECTLOCKS'"
08:05.965005-0,EXCP,0,process=1cv8c,Exception=afd2b550-0d52-4e03-b448-15ed68d87ac5,Descr='Ошибка блокировки объекта. Объект уже заблокирован: компьютер: 1C, сеанс: 24, приложение: Тонкий клиент'
Проанализируем эти данные. Ошибка DatabaseException8 и упоминание таблицы OBJECTLOCKS или DATAZONEOBJECTLOCKS прямо указывают на то, что платформа пытается установить блокировку для совершения транзакции, но не может этого сделать, так как другой пользователь уже занял этот ресурс. В файловом режиме 1С механизм управления блокировками реализован через файловую систему Windows. Любое изменение данных блокирует значительную часть таблицы (или всю базу целиком на короткое время), заставляя остальных пользователей стоять в очереди.
Конфигурация ЗУП 3.1 является одной из самых тяжелых в линейке 1С из-за огромного количества фоновых расчетов. Проверим и изменим следующие настройки:
Даже если тест Гилёва показывает хорошие цифры, SATA-зеркало (RAID 1) на обычных HDD — это «смертный приговор» для многопользовательской работы с файловой 1С. Файловая база 1С совершает огромное количество мелких операций чтения-записи. Проанализируем показатель «Текущая длина очереди диска» в мониторе производительности Windows. Если очередь часто поднимается выше 2–3, это причина тормозов.
Решение: Установка SSD корпоративного класса. Перенос файла 1Cv8.1CD на SSD сокращает время ожидания дискового ответа в десятки раз. Это самое эффективное «железное» решение для файлового режима.
Рассмотрим специфику работы в терминальном режиме. Несмотря на то что все работают на одном сервере, платформа всё равно использует механизмы блокировок файлов. Посмотрим на критические настройки ОС:
*.1CD, *.1CL, а также временные папки пользователей %AppData%\1C\1Cv8. Сканирование файла базы при каждом обращении блокирует его на уровне ОС.DirectoryCacheLifetime, FileNotFoundCacheLifetime в реестре). Однако для ЗУП 3.1 работа «по сети» крайне не рекомендуется.Если переход на полноценный клиент-серверный вариант (SQL) пока невозможен по бюджетным соображениям, рассмотрим публикацию базы на веб-сервере (IIS или Apache).
Разберем, почему это помогает: при работе через веб-сервер пользователи подключаются по протоколу HTTP. В этом случае обращения к файлу 1Cv8.1CD выполняет сам веб-сервер от своего имени. Это позволяет более эффективно управлять сессиями и частично снимает проблемы сетевых блокировок файловой системы Windows. Пользователи работают через «Тонкий клиент», указывая адрес веб-сервера.
Проанализируем версию платформы. В старых версиях (например, ниже 8.3.15) механизмы работы с файловыми блокировками были менее совершенными. Современные версии платформы 8.3.22+ содержат множество исправлений, касающихся стабильности работы файлового движка под нагрузкой. Рекомендуется обновить платформу до актуальной стабильной версии.
Также стоит обратить внимание на «правки» конфигурации приходящим программистом. Если в коде часто используются запросы внутри циклов или неоптимальные обращения к регистру DATAZONEOBJECTLOCKS, это будет «вешать» базу независимо от мощности сервера. Проанализируем контекст ошибок в Технологическом журнале, чтобы выявить конкретные методы или формы (например, ПланВидовРасчета.Начисления.Форма.ФормаВидаРасчета), вызывающие конфликты.
Для исправления тормозов 1С:ЗУП 3.1 в файловом режиме мы рекомендуем действовать в следующем порядке: