1С освобождение памяти

1С освобождение памяти

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

Решение проблемы на клиентском компьютере

Операционная система Windows от компании Microsoft может быть причиной возникновения ошибки «Недостаточно памяти». Данная система выделяет определенное количество памяти для каждого приложения 1С. Разработчики бухгалтерской программы заранее определили значение используемой памяти. В зависимости от разрядности ОС данный показатель меняется. Если клиент пользуется 32-разрядной системой, то ему потребуется 2 Гб для пользования программой. Если 64-рядрядная ОС, то необходимо уже 4 Гб. В случае превышения этого показателя будет выскакивать окно, сообщающее об ошибке.

Для решения такой проблемы существует несколько способов. Самым простым вариантом является устранение помеченных на удаление объектов в конфигурации. Это помогает не всегда, но всегда позволяет избавить от лишних колебаний. Стоит отметить, что пользователь при выполнении этих действий почти ничем не рискует, так как отсутствует прямое вмешательство во внутренние настройки ОС. Если это не помогло, то следует попробовать другие способы.

Чтобы решить данную ошибку, можно обмануть программу. Этот способ подойдет для тех, кто пользуется 32-разрядной системой, так как совершается переход на 64-битную версию. Таким образом, увеличивается количество выделяемой оперативной памяти для приложения. Данное решение является правильным, но не всегда возможным для пользователей. Поэтому существует специальный алгоритм действий, чтобы избавиться от возникающей ошибки. Важно пользоваться данным способом максимально аккуратно, так как это может спровоцировать значительные проблемы с работоспособностью ОС в целом.

Следует выполнять следующее:

  1. Первым делом необходимо запустить командую строку Windows. Для этого можно воспользоваться меню «Пуск» или комбинацией клавиш Windows+R. В соответствующем поле следует ввести «cmd» и нажать Enter.
  2. Откроется окно, которое имеет черное поле для ввода. В нем необходимо написать «bcdedit/set increaseuserva 3200». Используемое число свидетельствует об ограничителе используемой памяти. 3200 означает, что ограничение увеличилось до 3,2 Гб. Важно увеличивать данный показатель постепенно и аккуратно.
  3. Когда операция успешно завершилась в командной строке, то следует перезагрузить компьютер, чтобы изменения вступили в силу. После этого необходимо выполнить действия, которые приводили к появлению окна с ошибкой «Недостаточно памяти». В случае, когда ошибка до сих пор вылетает и 1С прекращает свою работу, то следует еще раз выполнить увеличение ограничителя.
  4. Когда ошибка будет устранена и желаемые операции в 1С были завершены успешно, то следует восстановить ограничитель в ОС. Для этого необходимо открыть командную строку и указать «bcdedit/deletevalue increaseuserva». Это сделать нужно обязательно, чтобы Windows не снижала свою работоспособность в пользу 1С.

К данному решению следует прибегать только в экстренных случаях, когда необходимо срочно выполнить ту или иную операцию в 1С. В других ситуациях рекомендуется смена разрядности ОС на 64-битную.

Недостаточно памяти на сервере 1С

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

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

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

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

К ним относится:

  • перезагрузка сервера;
  • выключение и повторное включение рабочих процессов, которые выполняются в 1С. Это позволит уменьшить используемую память. Этим должны заниматься только опытные администраторы, так как необходимы знания и навыки при работе с консолью;
  • использование технологического журнала, который содержит таблицу. При загрузке таблицы может возникать ошибка «Недостаточно памяти», когда выполняется та или иная операция. Когда проблема возникает при работе с таблицей «config», то следует выполнять проверку1 с использованием «Проверки логической целостности конфигурации». Найти это можно в разделе «Конфигурация».

Также ошибка может возникать из-за недостаточной памяти на жестком диске, на котором находится сервер. Пользователь может видеть текст ошибки «Недостаточно свободной памяти для выполнения операции». Это возникает из-за недостатка свободного места, которое забирают временные таблицы. В данной ситуации каких-нибудь одних действий по устранению проблемы нет, так как каждый обладает своим сервером или кластером. Можно привести только стандартные решения, такие как перезагрузка сервера, обновление системы, оптимизация или увеличение свободного пространства.

Заказать диагностику у наших специалистов

Бывают случаи, когда вышеуказанные способы не помогли устранить ошибки. В таком случае самым правильным решением будет обращение к специалисту за квалифицированной помощью.

Остались вопросы? Закажите бесплатную консультацию наших специалистов!

Источник

Перечень наиболее часто встречающихся проблем связанных с памятью:

  • SQL Server «съел” всю память (или очень много), что начало «угнетать” ОС и приложения работающие на ней.
  • Вы установили ограничения на память потребляемую SQL Server и ему стало не хватать выделенной памяти.
  • Какое-либо приложение потребило слишком много памяти и SQL Server-у стало не хватать выделенной памяти
  • «Перекос” в потреблении памяти каким-либо компонентом SQL Server, что стало причиной «угнетения” других компонентов SQL Server.

Первые три причины называются внешним «нажимом” на память и методика их анализа почти одинакова. Третья же причина называется «внутренним” нажимом на память и методики ее анализа совершенно другие.

Итак начнем рассмотрение первой причины – «SQL Server «съел” всю (или очень много) память, что начало угнетать ОС и приложения работающие на ней.”

В качестве ограничения накладываемого на рассмотрение – в блоге мы будем рассматривать только 64-битовую версию SQL Server и ОС, поскольку 32-битовых остается все меньше и меньше.

Для начала надо установить факт, что ОС действительно не хватает памяти и эту память потребил SQL Server. Выполнить это можно посмотрев счетчик Memory: Available Bytes. Он показывает сколько памяти осталось у ОС для распределения приложениям и внутреннего использования. Возникает справедливый вопрос:”Каким образом приложение может потребить много памяти и угнетать ОС?”. Причин тому может быть несколько:

  • Утечка памяти в приложении или драйвере, особенно утечка невыгружаемого пула.
  • Установка завышенного значения параметра «max server memory” в свойствах SQL Server и права «Lock Pages in Memory” для учетной записи от которой работает SQL Server.

У нас (Microsoft) есть принятая норма на остаток памяти который должен оставаться доступным для распределения ОС. Эта норма составляет 5% от объема установленного RAM, т.е. в свободном распределении у ОС должно остаться не менее 5% от общего объема RAM установленного на сервере. И как бы это число не казалось большим (особенно при больших объемах установленной памяти), лучше этого правила придерживаться.
Что будет предпринимать ОС, когда приложения потребят слишком много оперативной памяти? При достижении порога Memory: Available Bytes в 100…50 MB Windows включит агрессивный сброс (trimming) рабочих наборов процессов, включая системные драйверы, что тут же приведет к резкому снижению производительности всех компонентов ОС. В данной статье мы не будем рассматривать эти вопросы, возможно мы рассмотрим их в будущем.

Каким образом рассчитать правильное значение «max server memory”?

Здесь есть два случая:

  • Некластеризованный SQL Server, либо кластеризованный SQL Server в режиме Актив/Пассив .
  • Кластеризованный SQL Server работающий в режиме Актив/Актив.

Расчет памяти для некластеризованного, либо кластеризованного SQL Server работающего в режиме Актив/Пассив

Особенно актуален это расчет, если вы используете «Lock Pages In Memory” В этом случае завысив это число или оставив его по умолчанию (что обозначает – любой объем) вы можете поставить ОС в довольно неприятное положения, которое приведет к агрессивному триммированию рабочих наборов и, как следствие, резкому замедлению работы системы.

Расчет памяти для кластеризованный SQL Server в режиме Актив/Актив.

При расчете необходимо учитывать, что пункты 2, 3 и 4 должны быть удвоены, и при использовании права учетной записи SQL Server «Lock Pages In Memory”, вам необходимо подобрать не только «max server memory”, но и «min server memory”, что бы в случае переката обоих SQL Server на один узел вы не забрали всю память у ОС.

В данном случае на сервере установлено 500 GB оперативной памяти и 5% должно быть около 25 GB. Каким бы большим не казалось это число, но чем больше на сервере процессоров и памяти, тем (как правило) более ресурсоемкие задачи он выполняет и для их решения ему требуются большие ресурсы.

Как видно из рисунка (в данном случае), остаток памяти на сервере составляет около 7 GB, что не соответствует нашим рекомендациям.

Далее нам необходимо понять, имеет ли SQL Server достаточный запас памяти, часть которого можно освободить в пользу ОС. Для ответа на этот вопрос необходимо проанализировать счетчики производительности SQL Server.

Давайте сначала выясним сколько памяти потребил SQL Server. Для этого надо знать, использует или нет SQL Server право учетной записи SQL Server «Lock Page In Memory”, Выяснить это можно из свойств учетной записи, а можно косвенно, через счетчики Performance Monitor. Дело в том, что если право учетной записи SQL Server «Lock Page In Memory” не установлено, то вся (или почти вся) используемая память будет частью рабочего набора процесса sqlservr.exe. Если же это право установлено, то при этом (скрыто) используется механизм AWE (Address Windows Extension) и основная память под Буферный пул будет размещена за пределами процесса sqlservr.exe.

Как видно из рисунка ниже, размер рабочего набора процесса составляет всего около 4 GB, что значительно меньше общего объема потребленной памяти.

Посмотрим, сколько всего памяти использует SQL Server. Он использует 500 857 024 (около 480 GB) для распределения на Буферный пул, Процедурный кэш, кэш Worker Thread и для некоторых не значительных потребителей. А отсюда можно сделать вывод, что в данном случае SQL Server использует «Lock Pages in Memory”.

Далее приступим к поиску ответа на вопрос:”Можно ли отобрать часть памяти у SQL Server, не нанося ему вреда?”

Во первых, давайте проверим какое количество запросов обслуживается из Буферного пула (без выполнения физических чтений). Как мы видим из рисунка ниже по тексту около 100% (точнее 99,972%) запросов выполняются из буферного пула (при пороговом значении данного счетчика не менее 92%), что дает нам надежду на наличие избытка памяти у SQL Server.

Следующим счетчиком, который рекомендуется посмотреть является SQL Server: Page Life Expectancy. Он контролирует время жизни страниц в Буферном пуле. Пороговое значение 300 секунд. В данном случае мы видим среднее значение около 221000, что почти в 700 раз больше порогового. Это укрепляет нас в мысли, что ресурсы есть.

Окончательный ответ нам поможет дать счетчик SQL Server: Lazy Writes/sec, отображающий как часто срабатывает процесс Lazy Writer. Мы знаем, что это процесс активируется тогда, когда у SQL Server заняты около 75% выделенных буферов. Его задача выполнить фиксацию данных и очистить буферы. Для систем имеющих значительный запас памяти этот счетчик должен быть близок к нулю. Как мы видим это так.

Из всего вышесказанного можно сделать вывод: SQL Server имеет достаточный объем памяти и может «поделиться” ей с ОС. Отбирая память у SQL Server (уменьшая «max server memory”) необходимо контролировать выше описанные счетчики и определить тот порог, ниже которого уменьшать объем памяти нельзя.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *