Рано или поздно любая активно развивающаяся компания сталкивается с проблемой падения производительности в программах семейства 1С. Типичный сценарий: база 1С:Управление торговлей (УТ 11) разрастается до внушительных размеров (например, 22 ГБ), работает в файловом режиме и опубликована на веб-сервере Apache или IIS для работы менеджеров через тонкие клиенты. В моменты, когда запускается синхронизация с 1С:Бухгалтерией (БП 3.0) или обмен с интернет-магазином (например, на WooCommerce/WordPress), система полностью «парализуется», а пользователи наблюдают бесконечное синее колесико ожидания.
В этой статье мы подробно разберем, почему простая замена SSD-накопителя, которую часто предлагают технические специалисты, не решит проблему зависаний. Мы проанализируем архитектурные ограничения файлового движка, рассмотрим процесс перехода на производительную связку СУБД PostgreSQL с лицензией 1С:Сервер МИНИ, изучим нюансы подбора серверного железа и приведем бесплатные методы оптимизации, которые можно внедрить прямо сейчас.
Для того чтобы решить проблему, давайте сначала выясним ее истинную причину. Многие системные администраторы и программисты ошибочно полагают, что во всем виноват старый жесткий диск или «медленный» SSD. Однако корень проблемы кроется в самой архитектуре файлового режима работы 1С, помноженной на специфику веб-публикации.
Проанализируем, как работает файловая база данных 1Cv8.1cd при подключении через веб-сервер:
Apache, специальный модуль расширения 1С загружается непосредственно в адресное пространство веб-сервера. В файловом режиме работы этот модуль вынужден обрабатывать все запросы пользователей строго последовательно. База данных представляет собой единый физический файл на диске, доступ к которому жестко регламентируется блокировками операционной системы.1Cv8.1cd.Важно отметить: некоторые специалисты рекомендуют увеличить количество рабочих процессов в настройках веб-сервера (так называемый Web Garden в IIS). В случае с файловой базой данных этого делать категорически нельзя! Если несколько параллельных процессов веб-сервера попытаются одновременно писать данные в один и тот же файл 1Cv8.1cd, это приведет к конфликтам блокировок на уровне ОС, регулярному повреждению индексов таблицы и критическим сбоям базы данных.
Единственный надежный способ навсегда избавиться от взаимных блокировок пользователей при синхронизации — это уход от файлового режима и переход на полноценную клиент-серверную архитектуру (СУБД).
Для небольших компаний с количеством пользователей до 5 человек покупка стандартной серверной лицензии 1С может оказаться экономически нецелесообразной. Специально для таких сценариев фирма 1С предлагает доступное решение — лицензию «1С:Предприятие 8.3. Сервер МИНИ на 5 подключений».
Рассмотрим ключевые преимущества перехода на СУБД PostgreSQL с использованием этой лицензии:
PostgreSQL использует механизм многоверсионного управления конкурентным доступом. Это означает, что читающие транзакции не блокируют пишущие, и наоборот. Когда один пользователь запускает тяжелую синхронизацию, СУБД записывает изменения, но при этом другие менеджеры могут беспрепятственно просматривать каталоги товаров, выписывать счета и проводить документы. Блокироваться будут только конкретные строки таблиц, вовлеченные в транзакцию записи, а не вся база целиком.PostgreSQL установлены на одном физическом компьютере (даже на вашем старом ПК 2012 года с процессором Xeon и 24 ГБ ОЗУ), обмен данными между ними можно настроить через общую оперативную память (Shared Memory), минуя сетевые протоколы TCP/IP. Это дает колоссальный прирост производительности, компенсируя не самое новое процессорное железо.Давайте посмотрим на пример базовой настройки СУБД PostgreSQL в конфигурационном файле postgresql.conf для сервера с 24 ГБ оперативной памяти:
# Основные параметры оптимизации PostgreSQL под 1С (для 24 ГБ ОЗУ)
max_connections = 40
shared_buffers = 6GB # 25% от общего объема оперативной памяти
temp_buffers = 32MB
work_mem = 64MB # Объем памяти для сортировок одного запроса
maintenance_work_mem = 1GB
effective_cache_size = 18GB # Примерно 75% от общего объема ОЗУ
row_security = off
fsync = on # Обязательно для обеспечения сохранности данных
Перевод базы данных на СУБД позволит полностью задействовать вычислительные ресурсы имеющегося процессора и оперативной памяти, распределяя нагрузку по потокам.
Если бюджет позволяет произвести апгрейд серверного компьютера, подходить к этому нужно с умом. В среде 1С существует ряд устоявшихся мифов о железе, которые приводят к бессмысленным тратам.
Проанализируем основные компоненты аппаратной части сервера:
Самая распространенная ошибка — покупка многоядерных процессоров с низкой тактовой частотой (например, серверных Xeon с частотой 2.0–2.4 ГГц на ядро). Архитектура платформы 1С:Предприятие такова, что большинство бизнес-процессов, включая проведение документов, формирование сложных отчетов и выполнение синхронизации, выполняются строго в один поток.
Поэтому для 1С критически важна высокая частота на одно ядро (Single-Core Performance), а не общее количество ядер. При выборе нового процессора отдавайте предпочтение современным десктопным процессорам класса Intel Core i7 / i9 или AMD Ryzen 7 / 9 с базовой частотой от 3.8 ГГц и выше. Если вы ограничены старой платформой (например, сокет LGA 2011), замените текущий процессор на высокочастотные модели, такие как Xeon E5-2667 v2 или Xeon E5-2687W v2.
Для связки «Сервер 1С + СУБД PostgreSQL + Веб-сервер» объем памяти крайне важен. Минимальный рекомендуемый объем для комфортной работы базы размером в 22 ГБ составляет 32 ГБ, а лучше — 64 ГБ.
Кроме объема, критическое значение имеет режим работы памяти. Процессоры Xeon часто поддерживают четырехканальный режим работы. Чтобы задействовать всю пропускную способность шины памяти, планки ОЗУ должны быть установлены комплектами по 4 штуки идентичной емкости и частоты (например, 4 модуля по 8 ГБ или 4 модуля по 16 ГБ).
Обычные пользовательские SATA-интерфейсы ограничивают скорость передачи данных планкой в ~550 МБ/с. Если материнская плата вашего компьютера поддерживает установку современных накопителей формата M.2 NVMe, обязательно переходите на интерфейс PCIe 3.0/4.0. Скорость чтения и записи в таких устройствах достигает 3500–7000 МБ/с.
Однако для баз данных важна не столько линейная скорость, сколько показатель IOPS (количество операций ввода-вывода в секунду на случайное чтение и запись блоков размером 4КБ) и устойчивость к нагрузкам на износ (параметр TBW). Под СУБД рекомендуется приобретать специализированные серверные накопители начального уровня, такие как Samsung PM893 или Micron 5300 Pro. Они оснащены защитой от внезапного отключения питания (PLP — Power Loss Protection), что гарантирует сохранность файлов базы данных при аварийном выключении сервера.
Если ваша компания не имеет в штате опытного системного администратора для обслуживания физического сервера и СУБД, разумной альтернативой станет миграция базы данных в облачную инфраструктуру. Для нетиповых (доработанных программистами) конфигураций идеально подходит сервис 1С:Готовое рабочее место (1С:ГРМ).
Давайте рассмотрим особенности этого решения:
Если выделение бюджета на лицензии СУБД или новое оборудование требует длительного согласования, мы можем облегчить работу менеджеров прямо сейчас с помощью организационных и программных настроек.
Рассмотрим пошагово бесплатные методы снижения нагрузки на файловую базу:
Основная проблема кроется в том, что менеджеры запускают синхронизацию вручную прямо посреди рабочего дня. Полностью запретите ручной запуск синхронизации. Настройте автоматическое выполнение обмена данными по расписанию через механизм регламентных заданий в нерабочее время (например, в 21:00 и в 07:00) либо в обеденный перерыв.
Для минимизации блокировок при программном вызове длительных процедур разработчики могут использовать асинхронный запуск фоновых заданий, чтобы не парализовать работу конкретного сеанса:
// Пример программного запуска процедуры обмена в фоновом задании
ПараметрыВыполнения = Новый Массив;
ПараметрыВыполнения.Добавить(ПараметрыНастройкиОбмена);
ФоновыеЗадания.Выполнить(
"ОбменДаннымиСервер.ВыполнитьОбменДаннымиВФоне",
ПараметрыВыполнения,
Новый УникальныйИдентификатор,
"Синхронизация УТ и БП (Ночной запуск)"
);
Часто установленный на сервере антивирус проверяет каждый временный файл, создаваемый СУБД или файловой базой 1С при записи транзакций. Это замедляет операции записи в несколько раз.
Обязательно добавьте в список исключений вашего антивирусного ПО:
1Cv8.1cd).Temp).httpd.exe для Apache) и платформы 1С (1cv8.exe, 1cv8c.exe).Если ваш сервер работает под управлением операционной системы Windows, настоятельно рекомендуем отказаться от Apache в пользу встроенного веб-сервера IIS (Internet Information Services). Практика показывает, что IIS работает с платформой 1С более стабильно, эффективнее управляет пулами приложений и потребляет меньше оперативной памяти при интенсивных нагрузках.
Прежде чем тратить деньги на покупку комплектующих по совету обслуживающих вас программистов, мы рекомендуем провести объективный тест производительности системы. Для этого идеально подходит бесплатный инструмент «Нагрузочный тест TPC-1C» (Тест Гилева).
Алгоритм действий чрезвычайно прост:
Проанализируем результаты теста:
Используйте этот объективный тест как главный аргумент в диалоге с программистами: если после покупки нового дорогого SSD показатели теста Гилева не изменятся, значит, средства были потрачены впустую, а истинная проблема блокировок так и осталась нерешенной.