← На главную
Часто возникает ситуация, когда на сервере с, казалось бы, достаточными ресурсами проведение простых документов в 1С занимает недопустимо много времени (20–30 секунд и более). Особенно ярко это проявляется в конфигурациях вроде «Управление производственным предприятием» (УПП) при одновременной работе нескольких пользователей. Проанализируем типичную ситуацию: сервер совмещает в себе роли сервера 1С, сервера баз данных (MS SQL Express), терминального сервера и файлового хранилища. Разберем по шагам, почему такая архитектура приводит к падению производительности и какие меры необходимо предпринять.
Ограничения бесплатной редакции MS SQL Server Express
Первое, на что необходимо обратить внимание при использовании бесплатных версий СУБД — их жесткие аппаратные и программные ограничения. Если размер ваших баз данных достигает 12–19 ГБ, вы уже находитесь в зоне риска.
- Ограничение объема базы данных: В MS SQL Server 2008 R2 Express (и многих более новых версиях) действует лимит в 10 ГБ на один файл данных (
.mdf). Если база превышает этот размер, СУБД перестает выделять новые страницы, что приводит к откату транзакций и сбоям при записи.
- Лимит использования оперативной памяти: Редакция Express использует не более 1 ГБ ОЗУ под буферный кэш (Buffer Pool). Это означает, что при объеме базы в 15 ГБ данные не могут кэшироваться. Любое обращение к регистрам и проверка остатков вызывают прямое чтение с диска, что катастрофически замедляет работу.
- Ограничение вычислительной мощности: SQL Express задействует максимум 1 физический процессор (сокет) или до 4 ядер. Если в сервере установлено два процессора, СУБД будет полностью игнорировать второй.
- Отсутствие SQL Server Agent: Штатные планы обслуживания (дефрагментация индексов, обновление статистики) недоступны "из коробки", что приводит к быстрой деградации производительности базы, если не настроить обслуживание через системный планировщик задач.
Аппаратные узкие места и дисковая подсистема
Рассмотрим аппаратную конфигурацию. Производительность 1С крайне чувствительна к тактовой частоте процессора и скорости дисков.
- Процессор и Turbo Boost: Если используется процессор с низкой базовой частотой (например, 2.2 ГГц) без поддержки технологии Turbo Boost, сервер будет плохо справляться с однопоточной нагрузкой, которая возникает при расчете итогов во время проведения документа. Для 1С нужны процессоры с максимально высокой тактовой частотой на ядро.
- Настройки RAID-контроллера: Обратите внимание на состояние батареи (BBU) вашего контроллера (например, Dell PERC H710). При разряженной батарее контроллер отключает кэширование на запись (режим Write-Back) и переходит в режим сквозной записи (Write-Through). Это может замедлить запись журнала транзакций в десятки раз.
- Размещение файлов: Хранение файлов данных (
.mdf), журналов транзакций (.ldf) и временной базы tempdb на одном физическом массиве вызывает конфликт дисковых операций.
Архитектура «Все на одном сервере»
Совмещение служб терминалов (RDP), файлового сервера, сервера 1С и SQL на одной машине создает постоянную конкуренцию за оперативную память и дисковый ввод-вывод. Сессии пользователей в терминале отбирают ресурсы у процессов rphost и sqlservr.
Если разделение ролей на разные физические серверы невозможно, убедитесь, что в диспетчере конфигурации SQL Server включен протокол Shared Memory. Это снизит сетевые накладные расходы при взаимодействии сервера 1С и СУБД в пределах одной операционной системы.
Настройки операционной системы и СУБД
Проанализируем базовые настройки среды, которые часто оставляют по умолчанию:
- Схемы электропитания: В Windows Server необходимо установить план электропитания в режим «Высокая производительность» (High Performance). Аналогичные настройки нужно проверить в BIOS сервера. В сбалансированном режиме процессор не успевает повышать частоту при кратковременных нагрузках от 1С.
- Параметр MAXDOP: Для SQL Server критически важно установить
max degree of parallelism в значение 1. Иначе тяжелые отчеты будут пытаться использовать все доступные ядра, блокируя параллельное проведение документов другими пользователями.
- Права для SQL Server: Убедитесь, что учетной записи службы SQL Server выдано право «Выполнение задач по обслуживанию томов» (Perform Volume Maintenance Tasks). Это включит мгновенную инициализацию файлов и предотвратит зависания при автоматическом расширении базы.
Блокировки и настройки конфигурации 1С
Выясним причину парализации работы при одновременном проведении документов разными бухгалтерами.
- Итоги регистров бухгалтерии: В первую очередь проверьте период рассчитанных итогов. Если итоги отстают от текущего месяца, каждое обращение к регистрам заставляет систему пересчитывать данные "на лету", что занимает колоссальное время.
- Автоматические блокировки: Конфигурации старого поколения (такие как УПП) по умолчанию используют автоматический режим блокировок. При одновременном проведении документов база данных накладывает масштабные блокировки (вплоть до блокировки целых таблиц), что приводит к эффекту бутылочного горлышка и взаимным блокировкам (deadlocks).
- Управляемые блокировки и разделение итогов: По возможности переводите критичные механизмы проведения (например, партионный учет) в управляемый режим блокировок через настройки конфигурации. Для высоконагруженных регистров накопления обязательно включите режим разделения итогов, что позволит пользователям параллельно писать движения без конфликтов.
Подводя итог, можно сказать, что использование SQL Express для баз размером более 10 ГБ при одновременной работе пользователей является главной причиной проблем. Рекомендуется переход на полноценную версию СУБД (например, PostgreSQL, если бюджет ограничен), вынесение терминального сервера на отдельную машину и тонкая настройка параметров энергосбережения и параллелизма.