При переходе со старых редакций конфигураций (например, Комплексная автоматизация 1.1) на современные (КА 2.4, ERP 2.5) системные администраторы часто сталкиваются с парадоксальной ситуацией: физической оперативной памяти на сервере много, пользователей мало, но система выдает ошибку «Недостаточно свободной памяти». Особенно остро эта проблема проявляется на серверных кластерах 1С разрядности x86 (32-бит). В данной статье мы подробно разберем причины этой ошибки, проанализируем архитектурные различия конфигураций и составим пошаговый план перехода на 64-битную платформу.
Первым делом проанализируем ситуацию. Конфигурация Комплексная автоматизация 1.1 построена на обычных формах и имеет относительно небольшой объем метаданных. В то же время КА 2.4 — это современная система на управляемых формах, архитектурно близкая к 1С:ERP. Рассмотрим основные факторы, влияющие на потребление ресурсов:
rphost вынужден кэшировать значительную часть этих объектов для обеспечения быстрой работы.rphost.exe разрядности x86 теоретически может адресовать до 4 Гб памяти. Однако на практике из-за нужд операционной системы и фрагментации адресного пространства процесс начинает выдавать ошибки уже при достижении порога в 2.5–3 Гб.Рассмотрим подробнее, как работает сервер 1С. Когда клиент обращается к базе, серверный процесс rphost берет на себя выполнение кода. Если у вас установлен 32-битный сервер 1С, то сколько бы оперативной памяти ни было установлено на физическом сервере (хоть 64 Гб, хоть 128 Гб), каждый конкретный рабочий процесс 1С не сможет «съесть» больше своих законных 3 Гб. Как только база Комплексная автоматизация 2.4 разворачивает свои структуры данных, этот лимит исчерпывается практически мгновенно.
Посмотрим на типичную ситуацию через консоль администрирования серверов 1С. Мы увидим, что при запуске КА 2.4 потребление памяти процессом rphost стремительно растет. Перезапуск службы 1C:Enterprise 8.3 Server Agent временно помогает, так как очищает кэш, но при первой же активной работе пользователей проблема возвращается.
Единственным надежным способом решения проблемы является переход на 1С:Предприятие (x86-64). Это снимет ограничение адресного пространства, и процессы сервера смогут использовать всю доступную физическую память. Проанализируем этапы перехода:
Лицензия на сервер (x86-64) поддерживает обе архитектуры. Если же у вас старая лицензия только на 32-битный сервер, потребуется апгрейд через партнеров 1С.srvinfo, но всегда лучше иметь резервную копию файлов .lst.USR1CV8), имеет полные права на папку с данными сервера (C:\Program Files\1cv8\srvinfo).Часто возникает опасение: если перевести сервер на 64 бита, не перестанут ли работать сканеры штрих-кодов и кассы (ККМ), для которых есть только 32-битные драйверы? Разберем эту ситуацию по шагам:
Сервер и клиент — это разные сущности. Вы можете использовать 64-битный сервер 1С, но при этом на рабочих местах пользователей оставить 32-битный тонкий или толстый клиент. Это абсолютно штатный режим работы. Поскольку драйверы торгового оборудования (DLL-файлы) загружаются именно в контексте клиентского приложения, они продолжат работать корректно, используя свои 32-битные библиотеки.
Рассмотрим схему взаимодействия:
В такой связке вы получаете стабильность серверной части и совместимость с периферией.
После перехода на 64-битную платформу 1С, сервер начнет потреблять значительно больше памяти. Чтобы избежать конфликтов за ресурсы, проанализируем настройки вашего SQL-сервера. По умолчанию MS SQL Server стремится захватить всю доступную оперативную память. Мы должны ограничить его аппетиты.
Рассмотрим пример настройки Max Server Memory:
Memory.Maximum server memory (in MB) таким образом, чтобы оставить операционной системе и процессам rphost достаточно места. Например, если на сервере 32 Гб памяти, выделите SQL-серверу 16–20 Гб, оставив остальное для 1С и нужд ОС.Как мы уже выяснили, конфигурация Комплексная автоматизация 2.4 очень объемная. Рассмотрим, как можно дополнительно оптимизировать работу кластера после перехода на 64 бита. В свойствах рабочего сервера в консоли администрирования можно настроить параметры перезапуска рабочих процессов.
Например, параметр Выключить процессы по достижении памяти позволяет автоматически завершать «раздувшиеся» процессы rphost и запускать новые, что помогает бороться с утечками памяти в коде. Однако на 64-битной системе эти параметры стоит выставлять в значительно более высокие значения, чем на 32-битной.
Проанализируем пример параметров для 64-битного сервера ПРОФ:
Подведем итог нашего исследования. Ошибка нехватки памяти в КА 2.4 — это следствие технологического роста конфигурации, которая «переросла» возможности старой 32-битной архитектуры. Переход на 64-битный сервер 1С решает проблему кардинально. При этом:
Если вы планируете внедрение 1С:Комплексная автоматизация 2.4, рекомендуем заранее закладывать в бюджет 64-битную лицензию на сервер и соответствующее оборудование. Это сэкономит время на отладку «необъяснимых» вылетов системы и обеспечит комфортную работу пользователей.