Серверу 1С не хватает ОЗУ и места на диске: что докупить, а что настроить
Содержание
Увеличить память на сервере 1С можно тремя путями: докупить и поставить модули ОЗУ (или поднять лимит виртуальной машины), перевести сервер 1С на 64-битную версию и ограничить аппетиты рабочих процессов и СУБД в настройках, либо вынести СУБД на отдельную машину. Первый путь самый надёжный, второй бесплатный, третий нужен, когда в один сервер всё уже не помещается.
Начинать стоит с диагностики. Часто серверу хватает ОЗУ, но её съедает MS SQL без ограничения или «распухший» процесс rphost. Тогда новые планки дадут неделю передышки, а потом всё повторится. С дисковым пространством то же самое: сначала найдите, что растёт, потом расширяйте том.
Как понять, что серверу 1С не хватает памяти
Типичные симптомы со стороны пользователей:
- 🐢 база «думает» на простых операциях, хотя вчера работала быстро;
- 💥 ошибки
Недостаточно памятиилиOut of memoryпри формировании отчётов и закрытии месяца; - 🔌 пользователей выбрасывает с сообщением о разрыве соединения с сервером;
- 📉 к вечеру всё медленнее, после перезапуска службы снова нормально.
Подтвердить догадку можно за 10 минут, без сторонних программ.
Диспетчер задач и монитор ресурсов Windows
Откройте Диспетчер задач → Производительность → Память. Смотрите на три числа: «Используется», «Доступно» и «Выделено». Если доступной памяти стабильно меньше 10% от объёма, а «Выделено» близко к пределу или превышает физическую память, сервер живёт на файле подкачки.
На вкладке «Подробности» отсортируйте процессы по столбцу памяти. На сервере 1С обычно в лидерах:
| Процесс | Что это | Сколько памяти — норма |
|---|---|---|
sqlservr.exe | MS SQL Server | Столько, сколько ему разрешили. Без лимита забирает почти всё |
postgres.exe | PostgreSQL | Много процессов по 20–200 МБ плюс общий буфер |
rphost.exe | Рабочий процесс 1С | От сотен мегабайт до нескольких гигабайт под нагрузкой |
rmngr.exe | Менеджер кластера | Обычно сотни мегабайт |
ragent.exe | Агент сервера | Десятки мегабайт |
Для истории нагрузки подойдёт системный монитор perfmon. Добавьте счётчики Memory\Available MBytes и Memory\Pages/sec, соберите данные за рабочий день. Высокий Pages/sec при малом остатке свободной памяти — прямой признак нехватки ОЗУ.
Консоль администрирования серверов 1С
В консоли откройте Кластеры → <ваш кластер> → Рабочие процессы. В списке есть колонка с занятой памятью по каждому rphost. Если один процесс растёт весь день и не отдаёт память, это похоже на утечку или тяжёлый сеанс. Посмотрите, какие сеансы на нём висят, в ветке «Сеансы».
Увеличиваем оперативную память на сервере 1С: железо и виртуалка
Физический сервер
Прежде чем заказывать модули, выясните четыре вещи:
- Тип памяти. Серверные платы обычно требуют регистровую память с ECC (RDIMM). Обычные «настольные» модули без регистра в такую плату не встанут или не запустятся.
- Свободные слоты и максимум платы. Смотрите паспорт платы или утилиту управления сервером (iLO, iDRAC, IPMI). Там же видно, какие слоты заняты.
- Каналы памяти. Модули ставят парами или группами по числу каналов процессора. Если воткнуть одну планку в шестиканальную систему, объём вырастет, а скорость доступа к памяти упадёт.
- Одинаковость. Лучше брать модули той же частоты, ранговости и объёма, что уже стоят. Разнородная память работает на частоте самого медленного модуля.
Порядок работ:
- Согласуйте окно простоя и предупредите пользователей: все сеансы оборвутся.
- Завершите работу пользователей, остановите службу «Агент сервера 1С:Предприятия 8.3» и службу СУБД.
- Выключите сервер штатно, обесточьте, снимите статику.
- Установите модули по схеме из паспорта платы.
- Включите сервер и проверьте в BIOS или консоли управления, что виден весь объём.
- В Windows проверьте объём в
Диспетчер задач → Производительность → Память.
Ориентировочно модуль серверной DDR4 ECC на 32 ГБ стоит порядка 6–12 тыс. руб., DDR5 дороже. Цены сильно гуляют, поэтому сверяйтесь с поставщиком под конкретную модель сервера.
Виртуальная машина
На Hyper-V, VMware или в облаке память добавляют в настройках ВМ. Как правило, нужна остановка гостевой системы. Горячее добавление памяти бывает, но не во всех гипервизорах и гостевых ОС.
Для сервера 1С и СУБД ставьте статическую память. Динамическая память и баллонинг приводят к тому, что СУБД рассчитывает на объём, которого в момент пика у неё нет. Резервирование памяти за ВМ на уровне гипервизора тоже не помешает.
Ограничения ОС
32-битная Windows видит максимум 4 ГБ ОЗУ, и добавлять память в такую систему бессмысленно. Современные Windows Server 2016 и новее ограничений, в которые упрётся малый или средний сервер 1С, не имеют.
Как увеличить доступную память для 1С без покупки модулей
Переход на 64-битный сервер 1С
Это самый частый «бесплатный» приём. Если на сервере стоит 32-битный сервер 1С, каждый rphost может адресовать лишь несколько гигабайт, сколько бы ОЗУ ни было в машине. На 64 ГБ сервера процесс всё равно упадёт с нехваткой памяти.
Проверить разрядность просто: в диспетчере задач у 32-битных процессов в имени или в столбце «Платформа» указано 32 бита. Путь установки тоже подсказывает: 32-битная платформа лежит в C:\Program Files (x86)\1cv8.
Переход: установите 64-битный сервер той же версии платформы, зарегистрируйте его службой и перенесите настройки кластера. Для 64-битного сервера нужна соответствующая серверная лицензия, проверьте её до переключения.
Лимиты рабочих процессов в консоли кластера
Параметры памяти задаются в двух местах консоли администрирования.
Свойства кластера (правой кнопкой по кластеру → «Свойства»):
- Интервал перезапуска — через сколько секунд рабочий процесс плавно перезапускается. Например, 86400 — раз в сутки. Сеансы при этом переводятся на новый процесс.
- Допустимый объём памяти и Интервал превышения допустимого объёма памяти — если процесс держит больше заданного объёма дольше указанного интервала, кластер перезапускает его.
- Принудительно завершать проблемные процессы — флажок, без которого лимиты не дадут эффекта.
Свойства рабочего сервера (Рабочие серверы → <сервер> → Свойства):
- Максимальный объём памяти рабочих процессов — общий потолок для всех
rphostна этой машине; - Безопасный расход памяти за один вызов — защита от одного «прожорливого» серверного вызова: его обрывают с ошибкой, а остальные пользователи продолжают работать;
- Количество ИБ на процесс — при значении 1 каждая база работает в своём процессе, и тяжёлая база не съедает память соседних.
Перезапуск рабочего процесса по лимиту памяти может оборвать длинные операции: закрытие месяца, обмен, обновление. Не ставьте лимиты впритык к рабочему объёму — начните с запаса 30–50% и смотрите журнал.
Пример расчёта для сервера на 32 ГБ, где СУБД стоит на той же машине:
| Кому | Сколько |
|---|---|
| Windows и служебные процессы | 4 ГБ |
MS SQL (max server memory) | 16 ГБ |
Все rphost вместе | 10 ГБ |
| Запас | 2 ГБ |
| Итого | 32 ГБ |
Обновление платформы
Утечки памяти в рабочих процессах — известная история отдельных сборок платформы. Если rphost растёт без нагрузки, а в выходные память не возвращается, поставьте актуальную сборку той же ветки, которую поддерживает ваша конфигурация. Её список совместимых платформ указан в описании релиза конфигурации.
Расширение дискового пространства сервера 1С
Под «памятью» часто имеют в виду и диск. На сервере 1С место заканчивается в предсказуемых местах:
- 📁 файлы баз СУБД и журналы транзакций (
.mdf,.ldfу MS SQL, каталогdataу PostgreSQL); - 🗂️ журнал регистрации каждой базы в каталоге кластера:
C:\Program Files\1cv8\srvinfo\reg_1541\<GUID базы>\1Cv8Log; - 🧩 сеансовые данные и временные файлы рабочих процессов в том же каталоге
reg_1541; - 💾 резервные копии, которые никто не удаляет;
- 📄 файл подкачки
pagefile.sysи базаtempdbу MS SQL.
Как освободить место
- Журнал транзакций MS SQL. Если
.ldfвесит больше самой базы, у базы модель восстановления FULL, а резервных копий журнала нет. Либо настройте регулярное резервное копирование журнала, либо переведите базу в SIMPLE, если вам не нужно восстановление на момент времени. Затем сожмите файл журнала. - Журнал регистрации 1С. В конфигураторе откройте
Администрирование → Настройка журнала регистрации. Там уровень регистрации и кнопка сокращения журнала: старые записи можно выгрузить в файл и удалить из базы. - Старые копии. Настройте хранение по сроку: например, ежедневные — 14 дней, ежемесячные — год. Копии лучше хранить вне сервера.
Пример команды для MS SQL — перевод в простую модель и сжатие журнала. Выполняйте в окно, когда никто не обновляет базу:
ALTER DATABASE [buh] SET RECOVERY SIMPLE;
USE [buh];
DBCC SHRINKFILE (N'buh_log', 1024);
Имя логического файла журнала смотрите в свойствах базы (Свойства → Файлы), оно не всегда совпадает с именем базы.
Очистка каталога сеансовых данных snccntx* в srvinfo помогает при «распухшем» кэше кластера, но требует остановки службы агента сервера. Все пользователи будут отключены. Делайте это вне рабочего времени и только после копии каталога srvinfo.
Как добавить место
- Физический сервер: новый диск или массив, база СУБД и журнал регистрации переносятся на него. Для MS SQL переносят файлы базы через отсоединение и присоединение либо через изменение пути файлов.
- Виртуальная машина: увеличьте виртуальный диск в гипервизоре, затем в Windows
Управление дисками → Расширить том. - Каталог кластера: при установке сервера 1С можно указать каталог
srvinfoна отдельном томе. Перенос существующего каталога — с остановкой службы и правкой параметров её запуска.
Настройка MS SQL и PostgreSQL под объём памяти сервера
СУБД — главный потребитель ОЗУ на сервере 1С. Без настройки она либо забирает лишнее, либо работает с маленьким кэшем на большой машине.
MS SQL Server
По умолчанию MS SQL готов занять всю доступную память. Задайте потолок в SQL Server Management Studio: Свойства сервера → Память → Максимальный размер памяти сервера. Или командой:
EXEC sp_configure 'show advanced options', 1;
RECONFIGURE;
EXEC sp_configure 'max server memory (MB)', 16384;
RECONFIGURE;
Изменение применяется без перезапуска службы. Сколько отдавать: на выделенном сервере СУБД оставьте Windows 4–6 ГБ, остальное — SQL. Если на этой же машине работает сервер 1С, вычтите ещё объём под rphost.
💡 Право «Блокировка страниц в памяти» (Lock pages in memory) для учётной записи службы SQL защищает кэш СУБД от вытеснения в файл подкачки. Назначается в локальной политике безопасности.
PostgreSQL
Основные параметры лежат в postgresql.conf. Ориентиры для сервера, где PostgreSQL делит машину с сервером 1С:
| Параметр | Что задаёт | Ориентир |
|---|---|---|
shared_buffers | Общий кэш данных | 25% ОЗУ |
effective_cache_size | Оценка кэша ОС для планировщика | 50–75% ОЗУ |
work_mem | Память на одну сортировку или хеш | 32–128 МБ |
maintenance_work_mem | Память для VACUUM и индексов | 512 МБ – 2 ГБ |
max_connections | Число соединений | По числу пользователей с запасом |
Подвох в work_mem: его выделяют на каждую операцию в каждом соединении. 200 соединений по 128 МБ теоретически дают 25 ГБ. Поэтому большой work_mem ставят только при умеренном числе соединений.
shared_buffers и max_connections применяются после перезапуска службы PostgreSQL. Это обрывает сеансы 1С, поэтому планируйте перезапуск вне рабочего дня.
Облако и несколько серверов вместо одного большого
Когда один сервер упёрся в потолок платы или бюджета, есть три варианта.
| Вариант | Когда подходит | Минусы |
|---|---|---|
| Вынести СУБД на отдельный сервер | СУБД и 1С дерутся за ОЗУ на одной машине | Нужна быстрая сеть, вторая лицензия Windows |
| Добавить рабочий сервер в кластер 1С | Много пользователей, rphost занимают основную память | Часть функций кластера зависит от редакции лицензии сервера |
| Перейти в облако или на аренду | Нужна гибкость: добавить 16 ГБ за день | Ежемесячная плата, зависимость от провайдера |
Вынос СУБД даёт самый заметный эффект на сервере до 50–60 пользователей: каждая служба получает всю память своей машины, и они перестают вытеснять друг друга.
Второй рабочий сервер добавляют в консоли администрирования в ветке «Рабочие серверы» того же кластера. Нагрузка распределяется между ними. Перед этим проверьте, что ваша серверная лицензия разрешает нужную схему: возможности кластера отличаются по редакциям.
Облако. Арендованный сервер с 32 ГБ ОЗУ ориентировочно обходится в несколько тысяч — пару десятков тысяч рублей в месяц, в зависимости от провайдера, дисков и лицензий. Память меняется в панели управления, обычно с перезагрузкой ВМ.
Сколько памяти нужно серверу 1С
Точную цифру даёт только замер, но для старта годятся ориентиры (сервер 1С и СУБД на одной машине):
- до 10 пользователей — 16 ГБ;
- 10–30 пользователей — 32 ГБ;
- 30–70 пользователей — 64 ГБ;
- больше — 128 ГБ и выше или разнос по серверам.
Размер базы влияет не меньше числа пользователей. Если база занимает 100 ГБ, а ОЗУ 16, СУБД будет постоянно читать с диска.
Мониторинг памяти сервера 1С, чтобы не доводить до сбоя
Настроить один раз — и узнавать о проблеме раньше пользователей.
Для поиска утечек в самой конфигурации служит технологический журнал платформы. Его включают файлом logcfg.xml в каталоге conf платформы. Сбор журнала нагружает диск, поэтому его включают на время расследования, с ограничением по событиям и сроку хранения.