Превышен максимальный расход памяти сервера

Краткое содержание:

Что требуется сделать

  1. Подключиться к указанному серверу
  2. Запустить RamMap
  3. Найти процесс, который использовал всю доступную оперативную память. Стоит также смотреть на закладку File Summary.
  4. Найти причину
  5. Если это процесс rphost, то открываем консоль администрирования серверов 1С
    • Переходим на страницу "Сеансы"
    • Находим колонку Память (текущая)
    • Упорядочиваем по колонке
    • Записываем номера сеансов, которые использовали больше всего памяти
    • Завершаем сеансы
    • Проверяем, успело ли сработать условие перезапуска процессов кластера серверов
    • Если есть сеансы, которые находятся в длительном клиент-серверном вызове, то записываем номера сеансов
    • Завершаем сеансы, убеждаемся, что процессы успешно перезапустились.
    • Убеждаемся, что памяти достаточно
    • Если процесс rmngr и виновник не понятен, то снимаем дамп с помощью утилиты ProcDump
      • Полученные дампы и технологические журналы (если собирались) отправляем в 1С с подробным описанием проблемы и симптомов
      • Следует учитывать, что нет смысла отправлять дампы в 1С, если на сервере действительно очень мало доступной оперативной памяти, а rmngr при нормальной работе занимает ровно тот же самый объем
      • Ищем в журнале регистрации полученные номера сеансов с целью выяснить сценарий, который выполнялся в момент воспроизведения проблемы. Анализируем.
      • Проверяем, настроен ли перезапуск процессов кластера.

      У кластера серверов 1С Предприятия есть несколько настроек перезапуска процессов по превышению порога памяти. Их можно найти в параметрах кластера в консоли администрирования(рис. 1).

      Рис. 1. Параметры кластера.

      Подробная информация по настройкам указана на странице ITS.

      Рекомендуется всегда настраивать параметры

      • Допустимый объем памяти
      • Интервал превышения допустимого объема памяти
      • Выключенные процессы останавливать через

      "Допустимый объем памяти" стоит устанавливать из расчета, того, что в случае срабатывания условия превышения показателя будет запущен ещё один процесс rphost того же объема, как при нормальной работе кластера серверов в этой информационной системе.

      Например, на рабочем сервере имеем 12 Гб ОЗУ. Допустим для конкретной информационной системы характерен размер rphost около 3 Гб. В этом случае порог превышения памяти следует рассчитывать следующим образом:

      "Допустимый объем памяти" = 12 ГБ — 2 Гб (объем, занимаемый процессами системы) — 3 Гб * 1 rphost (объем всех процессов rphost) = 7 Гб. Т.е. процесс rphost в худшем сценарии может вырасти до 7 Гб.

      Для случая, когда у нас при штатной работе используются два процесса rphost.

      "Допустимый объем памяти" = 12 ГБ — 2 Гб (объем, занимаемый процессами системы) — 3 Гб * 2 rphost (объем всех процессов rphost) = 4 Гб. Т.е. процесс rphost в худшем сценарии может вырасти до 4 Гб.

      Такая рекомендация исходит из особенностей поведения в момент перезапуска процессов кластера. Как это происходит:

      • процесс rphost превышает "Допустимый объем памяти" в течение "Интервал превышения допустимого объема памяти" секунд, срабатывает условие перезапуска процессов кластера.
      • запускается "новый" процесс rphost
      • "старый" процесс rphost выключается, но не завершается
      • соединения назначаются на "новый" процесс rphost, который сразу полноценно включается в работу
      • "старый" процесс будет исполнять вызовы (которые ещё существуют) максимум в течение ещё "Выключенные процессы останавливать через" секунд, но не более того.
      • через время "Выключенные процессы останавливать через" "старый" процесс rphost завершается.
      • новый процесс полноценно работает
      Читайте также  Премия игра года 2017

      Т.е. в течение периода, указанного в "Выключенные процессы останавливать через" будет одновременно работать как минимум два процесса rphost: "старый" и "новый".

      Не следует указывать "Допустимый объем памяти" меньше нормального рабочего объема памяти процесса rphost для вашей системы, т.к. противном случае у вас постоянно будут перезапускаться процессы кластера серверов.

      • Интервал превышения допустимого объема памяти
      • Выключенные процессы останавливать через

      следует стараться указывать как можно меньше исходя из характера нагрузки на информационную систему, например, по 60 секунд, если мы рассчитываем, что все операции (или большая их часть) должны выполниться быстрее 60 секунд.

      Чем больше значения указанных параметров, тем менее эффективен может оказаться механизм перезапуска процессов, но зато позволит "успешно выполнить" большее число вызовов.

      Нужно запустить batch file из директории, в которой расположен ProcDump (http://technet.microsoft.com/en-us/sysinternals/dd996900.aspx)

      echo Start dumping all rmngrs, rphosts, and ragents on this server.

      Я уже писал несколько статей:

      теперь немного подробнее:

      Первым делом, после установки кластера 1С ранее нужно было создать рабочие процессы. Как оказалось, процессы кластера начали создаваться автоматически в зависимости от нагрузки базы.

      Пробный запуск фоновых заданий основной базы заставило кластер 1С бесконечно перегружать rphost.exe и дополнительный rphost.exe никак не хотел создаваться. Покопавшись в настройках все стало понятно.

      Максимальный объем памяти рабочих процессов — это объем памяти, который могут использовать рабочие процессы вместе. Нужно быть очень внимательными при установке параметра, измеряется в байтах. Если установить неверное значение (недостаточное для нормальной работы пользователей) пользователям будет выдана ошибка "Недостаточно свободной памяти на сервере 1С". Так же эту ошибку можно получить, когда на сервере 1С закончилась квота по памяти.

      Безопасный расход памяти за один вызов — позволяет контролировать расход памяти при серверном вызове, измеряется в байтах. Если вызов использует больше памяти чем положено, этот вызов будет завершен в рамках кластера 1С без перезапуска рабочего процесса (rphost.exe). Соответственно "неудачник", который выполнил вызов сервера, утратит сеанс с базой 1С без влияния на работу других пользователей.

      в одном ГБ — 1073741824 Байт, следовательно в 2 ГБ — 2147483648 Байта

      Объем памяти рабочих процессов, до которого сервер считается производительным — при превышении этого параметра сервер в кластере 1С перестанет принимать новые соединения.

      Количество ИБ на процесс — позволяет изолировать информационные базы по рабочим процессам. По умолчанию у текущего кластера 1С было установлено значение — "8", но на протяжении нескольких часов работы сервер себя очень нестабильно, сеансы пользователей зависали. После изоляции каждой информационной базы (значение — "1") проблемы пропали.

      Количество соединений на процесс — по умолчанию значение "128". Так как у текущей базы очень большая нагрузка фоновыми заданиями (расчет логистики, анализ прайсов, анализ конкурентов и прочее) было принято решение уменьшить количество до "25".

      Читайте также  Сколько времени работает инвертор от аккумулятора

      Немного изменились настройки и самого кластера 1С:

      Уровень отказоустойчивости — это количество рабочих серверов, которые могут одновременно выйти из строя, и это не приведет к аварийному завершению работы пользователей. Резервные сервисы запускаются автоматически в количестве, необходимом для обеспечения заданной отказоустойчивости. В реальном режиме времени выполняется репликация активного сервиса на резервные.

      Режим распределения нагрузки — есть два варианта параметра: "Приоритет по производительности" — памяти сервера тратится больше и производительность выше, "Приоритет по памяти" — кластер 1С экономит память сервера.

      Сервер 8.3 характеризуется переработанным заново внутренним кодом, хотя «снаружи» может показаться что это слега доработанный 8.2.

      Сервер стал более «авто настраиваемым», часть параметров типа количества рабочих процессов теперь не создается вручную, а рассчитывается исходя из описаний требований задач по отказоустойчивости и надежности.

      Это снижает вероятность неправильной настройки сервера и понижает требования к квалификации админов.

      Получил развитие механизм балансировки нагрузки, который можно использовать либо для повышения производительности системы в целом, либо использовать новый режим «экономии памяти», который позволяет работает «с ограниченной памятью» в случаи если используемая конфигурация «любит отъедать память».

      Стабильность работы при использовании больших объемов памяти определятся новыми параметрами рабочего сервера.

      Особенно интересен параметр «безопасный расход памяти за один вызов». Для тех кто плохо представляет что это такое — лучше не тренируйтесь на «продуктивной» базе. Параметр «Максимальный объем памяти рабочих процессов» позволяет при «переполнении» не обваливать весь рабочий процесс, а только один сеанс «с неудачником». «Объем памяти рабочих процессов, до которого сервер считается производительным» позволяет заблокировать новые соединения как только будет преодолен этот порог памяти.

      Рекомендую изолировать рабочие процессы по информационным базам, к примеру указать параметр «Количество ИБ на процесс = 1″. При нескольких высоконагруженных базах это позволит уменьшить взаимное влияние как по надежности, так и по производительности.

      Отдельный вклад в стабильность системы вносит «расходование» лицензий/ключей. В 8.3 появилась возможность использования «менеджера программных лицензий» напоминая менеджер «аладина». Цель — возможность вынести ключ на отдельную машину.

      Реализован он в виде еще одного «сервиса» в менеджера кластера. Вы можете использовать к примеру «свободный» ноутбук. Добавьте его в кластер 1с 8.3, создайте на нем отдельный менеджер с сервисом «сервис лицензирования». В ноутбук можно воткнуть аппаратных hasp-ключ, или активировать программные лицензии.

      Наибольший интерес для программистов должен представлять «Требования назначения функциональности».

      Требования назначенной функциональности 1с

      Так на ноутбуке с ключом защиты чтобы не запускать пользователей на сервер кластера надо добавить «требования» для объекта требования «Клиентское соединение с ИБ» — «Не назначать», т.е. запретить рабочим процессам данного сервера обрабатывать клиентские соединения.

      Еще больший интерес предоставляет возможность запускать «только фоновые задания» на рабочем сервере кластера без сеансов пользователей. Таким образом можно высоконагруженные задачи (код) вынести на отдельный машины. При чем можно одно фоновое задание «закрытия месяца» через «Значение дополнительного параметра» запускать на одном компьютере, а фоновое задание «Обновление полнотекстового индекса» на другом.Уточнение происходит через указание «Значение дополнительного параметра». Например если указать BackgroundJob.CommonModule в качестве значения, то можно ограничить работу рабочего сервера в кластере только фоновыми заданиями с любым содержимым. Значение BackgroundJob.CommonModule. . — укажет конкретный код.

      Читайте также  Русская озвучка для игры fallout 4

      Сеансы позволяют выполнять балансировку загруженности и отказоустойчивости в управляемом приложении.

      Менеджер кластера теперь стал сложнее. Часть функций теперь можно выделить в отдельный процесс и даже разместить на другом рабочем сервере кластера. Это позволяет балансировать загруженность сервера.

      Отказоустойчивость сервера 8.2 достигается за счет:

      • Хранение информации о сеансе работы пользователя.
      • Пользователь не привязан больше к рабочему процессу.
      • Резервирование рабочих процессов в кластере.
      • Должно быть несколько рабочих процессов, в том числе резервируемые
      • Резервирование кластеров.

      Указывается запасной кластер, при подключении — перечисляются в строке соединения

      Это позволяет обеспечить непрерывность работы!

      При разрыве физического соединения клиента с кластером (уборщица выдернула кабель, отключилось питание сетевого оборудования, неполадки у провайдера) не приходится заново подключаться к информационной базе и начинать всю работу сначала. После восстановления физического соединения пользователь может продолжить работу с того места, на котором она была прервана.

      Если требуется техническое обслуживание компьютеров кластера, их можно выключать прямо во время работы, не останавливая работу пользователей с информационной базой.

      При выходе из строя любого сервера кластера работа пользователей не остановится она будет автоматически переведена на резервный кластер и/или на резервные рабочие процессы. Для пользователей такой переход будет незаметным.

      Если один из рабочих процессов кластера завершится аварийно, подключенные к нему пользователи будут автоматически переведены на другие или резервные рабочие процессы. Такой переход также будет незаметен для пользователей.

      Guesto notes

      • 1С:Предприятие 8.3;
      • Клиент-серверный вариант работы;
      • Управляемое приложение.

      Загрузка большого(over 200 000 записей,

      3 Гб) файла XML обработкой «Универсальный обмен данными в формате XML» получаем ошибку: «Превышен максимальный расход памяти сервера за один вызов».

      Причина

      Данная ошибка вызывается из-за настроек сервера 1С. В настройках сервера в параметре «Безопасный расход памяти за один вызов» по умолчанию указано значение «0».

      Нулевое значение параметров «Максимальный объем памяти рабочих процессов» и «Безопасный расход памяти за один вызов» значит использование величины по умолчанию, которая равна 80% объема физической оперативной памяти и 10% от «Максимального объема памяти рабочих процессов» соответственно.

      Решение

      Для отмены ограничения можно установить значение -1 в параметр «Безопасный расход памяти за один вызов». После установки параметров необходимо перезагрузить сервер 1С.

      Внимание. Данные настройки не пригодны для постоянной работы сервера. Можно использовать для разовой загрузки данных, желательно на тестовом сервере.

      Комментарии 2

      Я решил проблему простенько, помимо изменения параматра безопасного расхода памяти, так же увеличил файл подкачки и сам объем памяти рабочих процессов до моих предельных 4 Гб, программа обновилась!

      Евгений, обращаю внимание, что данный метод желательно использовать для разовых операций. Еще желательно настроить автоматический перезапуск рабочих процессов сервера 1С:Предприятие

      Ссылка на основную публикацию
      Adblock
      detector