В процессе эксплуатации высоконагруженных систем на базе 1С:Предприятие часто возникает ситуация, когда стандартная 32-битная архитектура перестает справляться с объемом данных. Особенно остро это проявляется при работе через веб-сервер IIS или терминальный доступ (RDP), когда пользователи начинают активно выполнять ресурсоемкие операции, такие как массовое копирование документов или формирование тяжелых отчетов. Типичным симптомом является ошибка: «Неспецифицированная ошибка работы с ресурсом Ошибка при выполнении запроса POST к ресурсу /e1cib/logForm: Недостаточно свободной памяти для выполнения операции».
В данной статье мы разберем, как решить эту проблему, внедрив 64-битную версию платформы без вреда для существующих 32-битных подключений и торгового оборудования.
Для начала проанализируем ситуацию и выясним, почему возникает данная ошибка, даже если на сервере установлено 32 ГБ оперативной памяти. Проблема кроется в архитектурных ограничениях 32-битных (x86) процессов Windows. Любой 32-битный процесс, будь то 1cv8c.exe (тонкий клиент) или w3wp.exe (рабочий процесс IIS), имеет жесткий лимит адресного пространства в 2 ГБ (в редких случаях до 3 ГБ).
Когда бухгалтер начинает с высокой скоростью копировать документы, система генерирует большой объем данных для передачи на сервер и записи в журнал регистрации через ресурс /e1cib/logForm. В момент сериализации этих данных память процесса мгновенно заполняется, лимит в 2 ГБ достигается, и 1С «вылетает» с ошибкой. Переход на 64-битную платформу снимает это ограничение, позволяя процессу использовать практически всю доступную физическую память сервера.
Рассмотрим подробнее вопрос совместимости. На одном сервере под управлением Windows Server 2016 (и выше) можно одновременно установить обе версии платформы 1С:Предприятие (x86 и x64) одного и того же релиза. Это критически важно: номера релизов должны совпадать до последней цифры (например, оба должны быть 8.3.22.1750).
Разберем, как они располагаются в системе:
C:\Program Files (x86)\1cv8\C:\Program Files\1cv8\Пользователи, работающие через RDP, могут запускать разные версии исполняемых файлов. Те, кому необходимо торговое оборудование (которое часто имеет только 32-битные драйверы), продолжают использовать C:\Program Files (x86)\1cv8\common\1cestart.exe. Бухгалтеры, сталкивающиеся с нехваткой памяти, могут быть переведены на запуск 64-битного клиента напрямую из папки bin соответствующего релиза в Program Files.
Если ваши базы опубликованы на IIS, вы можете перевести веб-сервер на 64-битную разрядность, сохранив при этом возможность подключения 32-битных тонких клиентов. Выясним, как это сделать правильно.
Шаг 1. Настройка пула приложений в IIS:
После этого необходимо переопубликовать базу из-под 64-битной версии конфигуратора, чтобы расширение веб-сервера (файл wsapvr.dll) подгружалось из нужной директории 64-битной платформы.
Важно помнить: 64-битный процесс 1С принципиально не может загрузить 32-битные динамические библиотеки (DLL). Если ваше торговое оборудование (сканеры, фискальные регистраторы) использует старые драйверы, они не будут работать в 64-битном клиенте 1С.
Проанализируем ситуацию: в вашем случае оптимальным решением будет разделение прав. Пользователи на кассах остаются на 32-битной платформе, а бухгалтер, работающий с документами без ТО, переходит на 64-битную версию. Поскольку база одна и та же (файловая или клиент-серверная), конфликтов при одновременном доступе разных по разрядности клиентов (но одного релиза платформы!) не возникнет.
Помимо смены разрядности, рекомендуем выполнить ряд регламентных действий, которые помогут стабилизировать работу системы:
При интенсивной работе 1С создает огромные объемы временных данных. Попробуем очистить папку log в каталоге базы данных и пользовательские кэши. Перед очисткой обязательно остановите службу IIS, иначе файлы будут заблокированы процессом w3wp.exe.
Для предотвращения фрагментации памяти в IIS полезно настроить автоматическую перезагрузку пула приложений. Рассмотрим пример настройки:
Если ваша база файловая, помните, что переход на 64-бита поможет самому приложению 1С обрабатывать данные, но не изменит внутренние лимиты формата .1CD (ограничение в 4 ГБ на одну таблицу). Если ошибка сохранится даже после перехода на 64-бит, проанализируйте размер таблиц через утилиту Tool1CD или рассмотрите переход на клиент-серверный вариант (SQL).
Резюме: Одновременная работа 32 и 64 битных версий платформы одного релиза полностью поддерживается и является стандартным способом решения проблем с памятью в смешанных инфраструктурах.