Недостаточно памяти на сервере 1С — пути решения
При достижении предельной величины рабочих процессов на сервере 1С возникают ошибки. Мы рассмотрим одну из них, посвящённую теме «Недостаточно свободной памяти на сервере 1С:Предприятия».
Причины заполнения памяти
Объём памяти рабочих процессов при работе на агент-сервере 1С не является бесконечным. При его максимальной загрузке пользователь видит перед собой радующее своей новизной сообщение — «Недостаточно свободной памяти на сервере 1С:Предприятия».
Сначала о причинах возникновения подобного рода сообщений — почему памяти не хватает. Их может быть несколько:
Недостаточная мощность железа
Если в системе работает до пяти человек — тогда будет достаточно одного восьмигигабайтного компа с двумя винтами (на одном — SERVER, на втором — SQL) и дополнительно установленных фишек. Но другое дело — человек тридцать пользователей, тысячи документов первички. Тут и SQL нужно выносить в отдельный сервер, и одним сервером терминалов уже не справиться.
Нехватка памяти для лишней информации
Типовые конфигурации пытаются описывать буквально все процессы, которые только мог себе представить разработчик, пытаясь создать универсальное бухгалтерское средство под названием 1С:Предприятие. Поэтому конкретный пользователь получает дополнительный багаж в виде бездны объектов метаданных, дополнительных таблиц SQL, неиспользуемых реквизитов. Постоянная прописка и переиндексация всего этого ненужного в регистрах программы занимает длительное время и много места.
Ошибки кодирования
Перегрузка сервера возникает и при непонимании (иногда) программистами некоторых процессов и внедрении ими своих «костылей», увеличивающих срок выполнения поставленных задач (и количество рабочих процессов тоже).
Ошибки программы
Кроме всего прочего, и это является часто чуть ли не основной причиной — программа 1С имеет неимоверное количество внутренних ошибок. Некоторые из них исправляются в последующих релизах. Этим ошибкам посвящено большое количество форумов, на которых админы, обсуждая очередные каверзы, шутя говорят, что в один эс работают, наверное, одни таджики (Джамшут и Равшан).
Так что же делать с сервером 1С
Поскольку причины возникновения проблемы могут быть различными, то и способы выхода из ситуации тоже есть разные:
Перезапуск службы сервера
Самым быстрым и простым способом решения является перезапуск службы сервера. Из командной строки Microsoft Windows (cmd): для остановки выполняется команда — net stop «1C:Enterprise 8.3 (или ваша версия) Server Agent», а для запуска — net start «1C:Enterprise 8.3 (соответственно вашей версии) Server Agent». Такое решение не снимает вопрос полностью — чаще всего ошибка повторяется. Частота её повторов зависит от количества клиентов и количества рабочих процессов.
ВАЖНО. Для возможности перезапуска нужно обладать соответствующими правами.
Автоперезапуск и настройки кластера
Иногда даже один выполняемый рабочий процесс может занять чуть ли не всю оперативку. Такую задачу решают путём увеличения их количества в настройках кластера. Добавляют примерно по одному процессу для каждых пятнадцати-тридцати юзеров.
Интервал перезапуска. Незадолго до завершения предыдущего запускается новый процесс rphost.exe. — На него переходят соединения от старого. Допустимый объём памяти — при превышении этой величины будет запущен секундный таймер отсчёта.
Интервал по превышению предельного объёма — при превышении таймером отсчёта этого значения будет запущен новый процесс. И на него подвяжутся соединения от старого. А старый, в свою очередь, помечается неактивным. Выкл. процессы останавливать через — по прошествии значения этого параметра после пометки рабочего процесса неактивным, произойдёт его завершение операционной системой. Если такой параметр указать равным «0» — тогда все неактивные процессы не будут автоматически завершаться.
ВАЖНО. Эта настройка характерна тем, что отключает от базы только того из клиентов, который запустил некорректный отчёт. А остальные — будут плавно перемещены к новым соединениям (без прерывания от своей базы).
Количество рабочих процессов
При перегрузке rphost.exe с фоновыми заданиями и отсутствии создания новых процессов нужно проверить настройки:
Макс. объем памяти рабочих процессов — это суммарный объем памяти для всех процессов вместе. Измеряется в байтах. При установке неправильного значения (неадекватного нормальной работе) все получат ошибку «Недостаточно свободной памяти на сервере 1с».
Безопасный расход памяти на 1 вызов — контролирует расходование памяти при вызове сервером (в байтах). При использовании вызовом большего количества чем указано — он будет завершён внутри кластера. Перезапуск его произведён не будет. А утрата сеанса не отразится на других клиентах.
Объем памяти для процессов, до величины которого сервер считается системой производительным — при достижении этого значения сервер кластера перестаёт принимать соединения. Количество информационных баз на процесс — изолирует ИБ по процессам. После изоляции информационных баз (при введении значения — «1») проблемы обычно решаются.
Количество соединений на один процесс — по умолчанию установлено значение «128». Если текущая база отличается очень большой нагрузкой от фоновых заданий, то можно уменьшить это количество, например, до «25». При таких настройках немного изменится и настройка кластера:
Уровень отказоустойчивости — показывает то количество серверов, при выходе из строя которого не произойдёт аварийного завершения работы клиентов. При этом автоматически будут запущены в нужном количестве резервные сервисы.
Режим распределения нагрузки — имеет два возможных варианта. Если установить «Приоритет по производительности» — то память сервера будет расходоваться больше для увеличения производительности. При выборе «Приоритет по памяти» — кластером 1С память будет экономиться.
Инструмент для работы с базой
Для оперирования с базой данных необходимо пользоваться средствами СУБД MS SQL.
Проверка конфигурации
Возможно, причина ошибка кроется в некорректной информации, содержащейся в Конфигурации. Для её проверки требуется выполнить команду «Проверка конфигурации». (Не путать с тестированием!). Перед выполнением нужно проверить установку чекбокса (флажка) — «логическая целостность». При обнаружении некорректности это будет отражено в сообщении. А ошибки будут удалены.
Мы рассмотрели причины отсутствия свободной памяти на сервере 1С и возможные пути устранения этого. Один из способов наверняка позволит разрешить проблему.
Комментируйте свой опыт в этом вопросе, — делитесь новостями в этом вопросе.
Источник: winzen.ru