Ошибка недостаточно свободной памяти на сервере 1с предприятия

 +4 

   

Распечатать

После разнесение сервера 1С:Предприятия и SQL-сервера на разные машины при загрузке dt-файла в базу расположенную на SQL-сервере стали получать ошибку «Недостаточно свободной памяти на сервере 1С:Предприятия».
или (Ошибка СУБД: Microsoft OLE DB Provider for SQL Server: there is insufficient memory in resource pool ‘default’ to run this query. HRESULT=80040E14 )

Решение проблемы:


1. При возникновении ошибки перезапустить службу сервера 1С.
2. Использовать много процессов(В свойствах кластера поставить галочку «Много процессов»). Добавить рабочие процессы, оптимальное значение 4-5 процессов.
3. Использовать регламентный перезапуск рабочих процессов. Но это не снимет проблему. Просто сократит «утечку» памяти.
4. Для операций с базой данных, например копирование базы данных использовать средства ms sql, а не работу с файлами dt.
5. Включите запись событий DBMSSQL в Технологический журнал
(Смотрите текст файла «logcfg.xml» ниже или воспользуйтесь обработкой с ИТС НастройкаТехнологическогоЖурнала.epf) и определите, на загрузке какой таблицы происходит ошибка. Если config, то выполните загрузку в файловый вариант и очистку конфигурации поставщика:
5.1 Для этого надо проверить конфигурацию на наличие некорректной информации. Для этого следует выполнить команду меню Конфигурация — «Проверка конфигурации» (НЕ ТЕСТИРОВАНИЕ!) с ОДНИМ установленным флажком «Проверка логической целостности конфигурации». При выявлении проблем будет выдано сообщение. Некорректная информация при этом будет удалена автоматически
5.2 Если Ваша конфигурация находится на поддержке, следует подобным образом проверить конфигурацию поставщика. Для этого в настройке поддержки следует сохранить конфигурацию поставщика в cf файл, загрузить его в новую базу и выполнить описанную в пункте 1 процедуру. В случае, если было получено сообщение об исправлении («Удалена некорректная информация о метаданных»), значит конфигурация поставщика содержит некорректную информацию. В этом случае следует снять Вашу конфигурацию с поддержки и заново поставить путем объединения со свежим релизом конфигурации поставщика.

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

Если процесс НЕ добавляется, то проверьте и сделайте следующее:
1. В свойствах Кластера должна стоять галочка «Много процессов»
2. В свойствах Рабочего сервера Увеличьте Диапозон IP адресов

По поводу перезапуска рабочих процессов — с какого момента начинается отсчет указанный в настройке кластера?
С момента старта процесса. Например стартовал в 18:00:00. Период перезапуска 86400 секунд, т.е. 24 часа. Соответственно через сутки в 18:00:00 процесс остановится и будет создан новый процесс.

Оптимизация перезапуска рабочих процессов:
1. Интервал перезапуска: 86400 сек (24 часа). Момент перезапуска не регламентируется, видимо с момента установки параметров, либо запуска сервера приложений.
2. Также можно указать допустимый объем памяти: 3000000 Кб (3 Гб).
3. Интервал превышения допустимого объема памяти — это непрерывный интервал времени превышения допустимого объема памяти, после которого сервер перезапустит процесс. Если указано 0 сек — будет ждать вечно.
title
Источник: raw8.ru

Как включить запись событий DBMSSQL в технологический журнал?

Файл C:\Program Files\1Cv81\bin\conf\logcfg.xml должен содержать:

Код

< config xmlns=»http://v8.1c.ru/v8/tech-log»>
< log history=»168″ location=»C:\Program Files\1Cv81\bin\logs»>
< event>
< eq property=»name» value=»dbmssql»/>
< /event>
< property name=»all»/>
< /log>
< /config>

Автор рассказывает, почему возникают ошибки системы «1С: Предприятие 8.3» из-за нехватки памяти, и рассматривает пример диагностики эпизода.

Ошибка системы «1С: Предприятие 8.3» из-за нехватки памяти — постоянный спутник администратора 1С. Разбираемся, из-за чего они возникают, и рассматриваем пример диагностики одного подобного эпизода из практики администрирования сервера 1С.

Природа проблемы

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

Она не так критична при возникновении на клиентском компьютере, а вот если сообщение об ошибке выдает сервер 1С, нужно отнестись к этому максимально внимательно. Это тот самый случай, когда очень важно установить правильный «диагноз» — то есть решения не будет, пока ответственный администратор не распознает источник проблемы, не поймёт её природу.

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

Приведу пример расследования одной подобной ошибки из своей практики.

Инцидент

Поступило обращение со следующей ошибкой:

Смотрим журнал регистрации, там так же выводится ошибка с пояснением о нехватке памяти на сервере:

Настроив технологический журнал (ТЖ) системы 1С с событием EXCP — EXCPCNTX обнаруживаем запись:

Ошибка СУБД out of memory for query result

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

Находим код конфигурации, вызывающий ошибку.

В журнале регистрации указан следующий код:

			{ОбщийМодуль.ДокументооборотСКОВызовСервера.Модуль(22)}: Ошибка при вызове метода контекста (Получить)
по причине:

Недостаточно памяти для получения результата запроса к базе данных
		

Открываем конфигуратор и переходим в указанный модуль к указанному номеру строки кода:

Строка, на которой произошла ошибка:

			ВнешниеОбъектыХранилище = Константы.ДокументооборотСКонтролирующимиОрганами_ВнешнийМодуль;
ДвоичныеДанныеОбработки = ВнешниеОбъектыХранилище.Получить().Получить();
		

Смотрим тип объекта (константы), к которой идёт обращение:

Итак, в конфигурации есть константа:

			ДокументооборотСКонтролирующимиОрганами_ВнешнийМодуль
		

Она хранит в базе что-то неструктурированное (двоичные данные), что может занимать значительный объём памяти.

Проверяем, какой объем данных фактически занимает константа. Для этого узнаем имя таблицы хранения в базе PostgreSQL — таблица «_Const10013», индекс «_Const10013_ByKey».

Узнаем размер таблиц «Const10013», «_Const10013_ByKey» на диске:

На диске таблица занимает всего 4688 Кб = 4,6 Мб. Размер является незначительным, значит, причина не в константе.

Обнаруживаем, что кластер 1С является 32-разрядным:

32-разрядный кластер 1С имеет ограничение примерно в 3.8 Гб, при достижении которого происходит падение процесса. В режиме отсутствия нагрузки rphost занял 3,2 Гб, что близко к порогу падения. Подобные инциденты будут происходить в любой момент времени.

Внесены изменения:

  • В кластере серверов 1С «Интервал превышения допустимого объёма памяти процессов» = 300. Настройка не избавляет от ошибки, но необходима для снижения частоты возникновения ошибки.
  • В планировщике Windows настроен перезапуск службы 1С; такими образом освобождается виртуальное адресное пространство в памяти, создаётся новый рабочий процесс.

Настройка также не гарантирует от ошибки, но снижает вероятность её возникновения.

Для предотвращения повторной ошибки следует:

  • Сменить 32-разрядный кластер серверов 1С на 64-разрядный.
  • Так как на сервере используется 14 ядер процессора, необходимо осуществить переход на платформенные лицензии 1С КОРП для снятия ограничений по настройкам и обеспечения возможностей для гибкой настройки распределения памяти сервера.

Другие варианты

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

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

Решаемая задача: ошибка «недостаточно памяти на сервере 1С»

Ошибка в приложении

Рисунок 1 — Ошибка в приложении

Для выполнения описанных действий требуется учетная запись Администратора.

Вариант №1 решение проблемы заключается в увеличении памяти процесса 1С

Шаг 1. Запускаем командную строку.
Откройте командную строку Windows. Воспользуйтесь меню «Пуск» или
комбинацией клавиш Windows +R и введите команду:

cmd

Окно приложения «Выполнить»

Рисунок 2 — Окно приложения «Выполнить»

Шаг 2. В появившемся окне наберите команду:

bcdedit /set increaseuserva 3200

Для примера, увеличим ограничение до 3,2 Гб. Увеличивать ограничение стоит аккуратно и постепенно.

Командная строка. Увеличение памяти

Рисунок 3 — Командная строка. Увеличение памяти

Шаг 3. После подтверждения успешного завершения операции в окне командной строки, перезагрузите ПК и попробуйте еще раз выполнить действия, которые привели к ошибке. Если проблема не решена и 1С по-прежнему вылетает – можете еще раз увеличить ограничение.

Шаг 4. После успешного завершения операции без ошибки в 1С, восстановите ограничения Windows по умолчанию командой:

bcdedit /deletevalue increaseuserva

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

Командная строка. Снятия ограничения

Рисунок 4 — Командная строка. Снятия ограничения

Вариант №2 решение проблемы заключается в завершение неиспользуемых сеансов в консоли администрирования 1С

Заходим в Администрирование серверов 1С Предприятия x86-64 выбираем Локальный кластер и с помощью правой кнопки мыши выбираем Свойства:

Вызов свойств локального кластер

Рисунок 5 — Вызов свойств локального кластер

В появившемся окне выбираем Принудительно завершить проблемные процессы:

Параметры кластера

Рисунок 6 — Параметры кластера

И нажимаем Ок.

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

Последний метод возможен при использовании «Корпоративной лицензии».

Заходим Кластеры — Локальный кластер — Рабочие серверы и на названии сервера выбираем Свойства:

Вызов свойств рабочего сервера

Рисунок 7 — Вызов свойств рабочего сервера

И в ячейке Временно допустимый объем памяти процессоров устанавливаем допустимое значения в байтах.

Окно параметров рабочего сервера

Рисунок 8 — Окно параметров рабочего сервера

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

Сервер 1С 8.3. Недостаточно свободной памяти на сервере 1С:Предприятия. ☑ 0

ЧессМастер

18.02.16

16:26

Всем доброе время суток !

Сервер 1С 8.3.7.1845

При работе периодически возникают сообщения «Недостаточно свободной памяти на сервере 1С:Предприятия». При этом настройки которые работали на сервере 8.2 и помогали решать такие проблемы (указание параметра «Интервал превышения допустимого объема памяти») что приводило к перезапуску процесса при превышении памяти на 8.3 не работают — при превышении памяти процесс не перезапускается, и перестает разрешать новые подключения. Приходиться перезапускать процесс вручную.

Как решить эту проблему ?

1

Лефмихалыч

18.02.16

16:28

самих-то процессов сколько? Сколько пользователей?

2

ptiz

18.02.16

16:31

Сервер 1С 32х-разрядный небось?

3

ЧессМастер

18.02.16

16:54

(1) на сервере 8.3 в отличии от 8.2 процессы не создаются.

он один.

(2) да

4

zlnk

18.02.16

18:31

(3) >> на сервере 8.3 в отличии от 8.2 процессы не создаются.

Да ладно!

5

Cyberhawk

18.02.16

18:46

(3) (4) Если в 8.3 все по умолчанию, то по 128 рыл (сеансов) на одну ИБ и по 8 ИБ на один РП… поэтому у «умолчальщиков» и не создаются :)

6

zak555

18.02.16

18:48

ставь ограничение 1 рабочий процесс не более 4 гб

7

Cyberhawk

18.02.16

19:07

8

ЧессМастер

19.02.16

09:32

(4) тебе скриншот привести ?

Сервер 8.2

Консоль кластера — Рабочие серверы — <имя сервера> — Рабочие процессы — щелчок правой кнопкой мыши — пункт «создать рабочий процесс» есть

Сервер 8.3

Консоль кластера — Рабочие серверы — <имя сервера> — Рабочие процессы — щелчок правой кнопкой мыши — пункта «создать рабочий процесс» нет

9

ЧессМастер

19.02.16

09:44

(7) почему-то не отрабатывает перезапуск процессов на 8.3

на 8.2 я ставил в свойствах кластера в разделе «перезапускать рабочие процессы» в параметре «доступный объем памяти» 2 гига. в результате когда процесс выходил за 2 гига он перезапускался автоматически.

в «интервале превышения допустимого объема памяти» ставил 600

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

10

tixis

19.02.16

10:01

(8) Разберись с настройкой 8.3, там нельзя явно указать сколько рабочих процессов, но косвенно это можно настроить.

И нефиг писать что все сломалось, пока не разберетесь в теме.

11

tixis

19.02.16

10:04

+(10) если не хотите сами книжки читать и искать информацию в просторах интернета, то есть курсы по оптимизации, в которых рассказывается про настройку кластера

12

ЧессМастер

19.02.16

10:13

(11) если вам нечего сказать кроме как «ищите в интернете там все есть» могли бы не тратить время на написание этого сообщения

меня как раз и интересует отличия настройки 8.2 от 8.2.

8.2 я прекрасно сам умею настраивать.

13

Cyberhawk

19.02.16

10:17

(9) Должны перезапускаться, обнови платформу.

Сервер приложений 32б или 64б?

ОЗУ в ОС сколько? Для обхода поставь у рабочего сервера 1 ИБ на процесс и 1 соединение на процесс — будет создаваться много РП, сможешь в момент пика отследить какой пользователь/код вызывает рост (если, конечно, это из-за пользователей), либо регл. задание (выключи все ненужные на время).

Как часто в день отваливаются клиентские сеансы?

14

tixis

19.02.16

10:21

(12), покажи скрин нгастройки кластера

15

ЧессМастер

19.02.16

12:04

(13) Сервер приложений 32б

поменял в свойствах сервера «количество соединений на процесс» с 128 (было по умолчанию) на 5.

сразу же создался второй процесс.

если сейчас я поставлю в параметрах кластера в «допустимый объем памяти» нужное мне значение (например 1.5 гига) и

«интервал превышения допустимого объема памяти» время перезапуска то будет отрабатывать как и в 8.2 — при превышении памяти в 1.5 гига через время указанное в «интервал превышения допустимого объема памяти» будет перезапускаться процесс ?

16

Cyberhawk

19.02.16

14:27

(15) «при превышении памяти в 1.5 гига через время указанное в «интервал превышения допустимого объема памяти» будет перезапускаться процесс ?»

Не совсем так: только при _постоянном_ превышении в течение заданного времени. Поэтому поставь там 10 секунд, например, и убедись.

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

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

Причины этой ошибки кроются в том, что в операционных системах семейства Microsoft выделяется определенный объем памяти на каждое приложение 1С. Эти значения заявлены разработчиком, компанией 1С. Для 32-разрядных систем это значение установлено в 2 Гб, для 64 – 4 Гб. Когда ПО превышает этот показатель, на мониторе возникает окно с ошибкой.

Ошибка
Ошибка

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

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

Этот алгоритм достаточно прост:

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

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

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

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

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

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

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

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

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

На жестком диске на сервере мало места
На жестком диске на сервере мало места

В компаниях с большим количеством пользователей ошибка «Недостаточно свободной памяти на сервере 1С:Предприятия 8.3» возникает достаточно часто. Большой проблемой и предпосылкой к этому является недостаточный анализ необходимой производительности. Поэтому при внедрении 1С уделите большое внимание достаточной мощности серверов, чтобы в будущем не пришлось настраивать производительность в ущерб стабильности.

Понравилась статья? Поделить с друзьями:
  • Ошибка неверный токен gamecms
  • Ошибка недостаточно ресурсов для подключения к таргету
  • Ошибка недостаточное давление наддува
  • Ошибка неверный тип аргумента or stringp symbolp nil
  • Ошибка недостаточно прав для удаления utorrent