Описание ошибки:
Платоформа 1С: Предприятие 8.3.16.1148. Клиент-серверный вариант работы базы на СУБД PostgreSQL. Ошибка втречалась при попытке выгрузить базу через «Администрирование» — «Выгрузить информационную базу…», т.е. при попытке выгрузить информационную базу в архив .dt.
Найденные решения:

Как было указано в кратком описании ошибки — база клиент-серверная на СУБД PostgreSQL. Логично, если перевести формулировку «out of memory for query result» — «недостаточно памяти для результата запроса». Так же само «Ошибка СУБД» отправляет решать проблему не на стороне 1С, а на сторону СУБД. Поэтому необходимо изменить параметры использования ресурсов сервера — естественно в сторону увеличения объема используемых ресурсов. В СУБД PostgreSQL это делается путем редактирования соответствующего файла «postgresql.conf», который по умолчанию находится (при установке с параметрами «по умолчанию») в «C:Program Files (x86)PostgreSQL9.4.2-1.1Cdata» для x32-версии и в «C:Program FilesPostgreSQL9.4.2-1.1Cdata» для x64-версии.

В этот статье нет смысла описывать актуальные параметры настроек файла конфигурации «postgresql.conf», в помощь по этому вопросу соответствующая исчерпывающая публикация на сайте профессионального сообщества infostart.ru:
Настройка PostgreSQL для работы в связке с 1С 8.х на ОС Windows
После изменения и сохранения параметров в «postgresql.conf». Необходимо перезапустить службу «PostgreSQL Database Server …» в «Службах» операционной системы Windows сервера, чтобы новые параметры вступили в силу.

Если все-таки не получилось изменить параметры использования ресурсов в файле конфигурации СУБД «postgresql.conf» по каким-либо причинам, то попробуйте выполнить операцию, которая завершается ошибкой «Ошибка СУБД: out of memory for query result» не на самом сервере, а на одном из клиентских рабочих мест. Если не получится на одном, то попробуйте на другом — на практике так получалось обходить ошибку.
Оцените, помогло ли Вам предоставленное описание решения ошибки?


© www.azhur-c.ru 2014-2020. Все права защищены. Использование текстов и изображений с данной страницы без письменного разрешения владельца запрещено. При использовании материалов с данной страницы обязательно указание ссылки на данную страницу.
22-09-2020
Журавлев А.С.
(Сайт azhur-c.ru)
Александр Рудницкий
Программист 1С компании CorpSoft24
Ошибка системы «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С
Поступило
обращение со следующей
ошибкой:
«Неспецифицированная ошибка
работы с ресурсом
Ошибка при выполнении
запроса POST к ресурсу /e1cib/login:
Недостаточно
свободной памяти для выполнения
операции
Выполняется ожидание
возможности запуска.
При
появлении возможности, запуск будет
выполнен автоматически.
Нажмите «Выполнить запуск» для немедленной
попытки запуска.
Нажмите «Отмена» для отказа от запуска.»

Смотрим
журнал регистрации:


Настроив
ТЖ с событием 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 ядер
процессора, то необходим переход на
платформенные лицензии КОРП.
06.09.17 — 08:02
Добрый день,прошу помощи в решении проблемы
пользую 1с 8.3.9.2309 + PostgreSql 9.4.2-1.1C происходит ошибка при загрузке базы dt ,ошибка 53200 error out of memory detail failed on request of size 536870912
ОС windows server 2016 standard,аналогичная проблема и на других ос
Пробовал менять настройки конфига pg,сейчас они такие
Это из основных как я полагаю интересующих :
shared_buffers = 64MB # min 128kB
temp_buffers = 256MB # min 800kB
work_mem = 128MB # min 64kB
maintenance_work_mem = 256MB # min 1MB
effective_cache_size = 6GB
——————————————
Всего оперативной памяти 16gb
Причём конкретно только одна база не загружается (она исправна,её тестировал БП 2.0)
ещё пробовал увеличить файл подкачки на диске С
Помогите кто сталкивался с такой же проблемой?кто её решил?
1 — 06.09.17 — 08:10
разрядность PostgreSql какая?
2 — 06.09.17 — 08:12
(1) 64 разрядная как и windows server
3 — 06.09.17 — 08:21
В логе вот что пишет:
pg_authid_rolname_index: 1024 total in 1 blocks; 552 free (0 chunks); 472 used
MdSmgr: 8192 total in 1 blocks; 6544 free (0 chunks); 1648 used
LOCALLOCK hash: 8192 total in 1 blocks; 2880 free (0 chunks); 5312 used
Timezones: 79320 total in 2 blocks; 5968 free (0 chunks); 73352 used
ErrorContext: 8192 total in 1 blocks; 8176 free (0 chunks); 16 used
2017-09-04 18:55:43 MSK ERROR: out of memory
2017-09-04 18:55:43 MSK DETAIL: Failed on request of size 536870912.
2017-09-04 18:55:43 MSK CONTEXT: COPY config, line 328, column binarydata
2017-09-04 18:55:43 MSK STATEMENT: COPY Config FROM STDIN BINARY
4 — 06.09.17 — 08:21
попробуй в work_mem указать немного больше чем от тебя просят
5 — 06.09.17 — 08:22
ставил 256 и 512
6 — 06.09.17 — 08:22
и да, этот ДТ куда-то вообще загружается? Он точно не битый?
7 — 06.09.17 — 08:23
(5) переведи «on request of size 536870912»
8 — 06.09.17 — 08:25
(6) Да как файловая база он загружается
9 — 06.09.17 — 08:27
(6) и точно не битый делал тестирование и исправление и chdbfl,без ошибок
10 — 06.09.17 — 08:30
(7)размер по запросу 536870912,полагаю что не хватает памяти загрузить какую то таблицу
11 — 06.09.17 — 08:31
а где её увеличить!?или может какой то другой параметр нужно увеличить
12 — 06.09.17 — 08:34
(11) 536 больше 512?
13 — 06.09.17 — 08:36
(12) я понял к чему ты,я пробовал и 1024 ставить
14 — 06.09.17 — 08:36
(12) но вот только не везде
15 — 06.09.17 — 08:39
Попробую work_mem выставить > 536 ,но смогу попробовать вечером
16 — 06.09.17 — 08:52
(15) сделай сразу побольше чтобы наверняка
17 — 06.09.17 — 09:07
(16) да 1024 поставлю,отпишусь по результату
18 — 06.09.17 — 09:20
и temp_buffers тоже.
19 — 06.09.17 — 09:30
shared_buffers рекомендуется делать побольше. 1/4 — 1/3 RAM.
maintenance_work_mem в 1/2 RAM или больше (до RAM-shared_buffers)
20 — 06.09.17 — 09:40
(19) если не ошибаюсь то пробовал я ставить и больше 1 gb в
shared_buffers или temp_buffers служба pg перестаёт запускаться
21 — 06.09.17 — 11:01
(16) Попробывал,выставить 1024 work_mem,shared_buffers,temp_buffers ошибка всё равно выходит
22 — 06.09.17 — 11:04
Увидел вот какой момент,в свойствах Pg есть строка версии где написано PostgreSQL 9.4.2,complited by Visual C++ build 1500, 32-bit
23 — 06.09.17 — 11:06
мне эта строка не нравится,типа используются компоненты Visual C++ 32 бита,посмотрел на давно созданном сервере тоже на pg там 64 стоит м.б дело в этом!?
24 — 06.09.17 — 11:26
Похоже что да,вроде как ура..грузит ,но ошибку не выкидывает
25 — 06.09.17 — 11:36
победа,парни дико извиняюсь,3 дня не в ту сторону смотрел,не тот дистрибутив поставил поставил общий,а надо было postgresql-9.4.2-1.1C_x64
26 — 06.09.17 — 11:49
(25) Теперь научился отличать приложения х64 от х86?
27 — 06.09.17 — 11:55
(12) они равны
Johan
28 — 06.09.17 — 12:35
(26) Да,я поставил не посмотрев,а в описании в pg и сервис написано 64 Bit,а вот когда увидел строку версии ,тогда меня смутило
-
07.07.2015, 10:17
#1

Гость форума
Ошибка СУБД: out of memory for query result
Собственно говоря вылетает такая ошибка при попытке сохранения конфигурации, 1 раз сохраняет нормально а потом начинается ошибка вылетать, делаю стоп/старт сервер 1с и опять 1 раз сохраняет а потом ошибка, сервер 1с на вин2003сервер х32, сервер баз данных на постгри центос7_х64, что можно сделать, кто сталкивался и как решили?
-
07.07.2015, 10:47
#2

Пришел за помощью

Попробуйте обновить сервер на более свежую платформу и соответственно клиентскую часть, бывали ошибки в релизах.
-
07.07.2015, 11:18
#3

Гость форума

8.3.6.1977 вот эта версия, а не может быть из-за того что сервер 1с 32 битный, а сервер баз данных 64 битный?
-
07.07.2015, 11:43
#4

Пришел за помощью

Сообщение от Eugene87
8.3.6.1977 вот эта версия, а не может быть из-за того что сервер 1с 32 битный, а сервер баз данных 64 битный?
У меня данный релиз, проблем не замечалось подобных.
А раньше данные проблемы наблюдали или новое поднимали?
Если старое, то после чего стали появляться данные проблемы?
-
07.07.2015, 12:13
#5

Гордость форума PRO

сервер баз данных на постгри центос7_х64
Проблема на стороне СУБД — однозначно.
-
07.07.2015, 12:55
#6

Гость форума

да раньше было на винде2003сервер стоял ibm db2 c, вроде работало, но сейчас и базы стали тяжелее..———- Post added at 15:55 ———- Previous post was at 15:53 ———-я тоже сначала так думал.. но проблема устраняется когда я делаю именно перезапуск сервера 1с, а сервер бд вообще по ресурсам не напрягается, что самое удивительное и рпхост 2 процесса по 600-800 мб весят и не поднимаются выше, а пишет аут оф мемори.. ничего не понимаю..
-
07.07.2015, 13:12
#7

Гордость форума PRO

но проблема устраняется когда я делаю именно перезапуск сервера 1с, а сервер бд вообще по ресурсам не напрягается
Это ни о чем не говорит.
Если например проблема с tempdb, то при перезапуске ты чистишь его (сервер 1С отваливается от сиквела и все «занятое» идёт в треш). Поэтому однозначно рыть в сторону СУБД, я бы начал бы с tempdb, хотя может и проблемы с лог или дата файлами.
-
07.07.2015, 13:59
#8

Гость форума

попробую 32 битную посгри поставить или еще есть идея ibm db2 express c поставить) в 10й версии увеличили ограничение озу до 4 гб
-
07.07.2015, 14:03
#9

Гордость форума PRO

или еще есть идея ibm db2 express
Поставь мелкомягкий экспрес — там сейчас также 4 Гб
Пользуясь базами данных любой программы 1С, сотрудники предприятий и организаций часто сталкиваются с непредвиденными ситуациями. Пожалуй, одна из самых частых — когда работа программы внезапно завершается по причине того, что администратор разорвал контакт с сервером.
В данном случае Microsoft OLE DB Provider for SQL Server выдаёт такую информацию: «Неопознанная ошибка hresult 80004005». При этом главным признаком проблемы является невозможность выгрузить информацию в базу.
Следует отметить, что ошибки, содержащие именно код 80004005, встречаются постоянно. У них есть особая классификация, которую при желании можно найти в соответствующей литературе.

Для начала нужно провести проверку конфигурации. Там может содержаться мусор (иными, словами, информация, которая является некорректной). Необходимо проверить конфигурацию с помощью соответствующей команды. Вы увидите флажок, предназначенный для того, чтобы проверить её логическую целостность. Если имеются проблемы, пользователь будет уведомлен об этом с помощью сообщения.
Данные, являющиеся неверными, система удалит в автоматическом режиме, но для этого нужно дать ей доступ, чтобы она изменила главный объект. К примеру, если вы работаете в облачном хранилище, его надо просто захватить.
Поддержка конфигурации требует её проверки и у поставщиков. С этой целью:
- нужно сохранить данные о конфигурации поставщиков. Для этого используйте CF-файл;
- теперь необходимо провести загрузку файла в обновлённую базу;
- выполните операцию, которая описана в п.1.
При получении сообщения об исправлении ошибки имейте в виду то, что конфигурация, имеющаяся у поставщика, содержала неправильные данные. Если такое произошло, снимите свою конфигурацию с поддержки и установите её снова. При этом её надо объединить с новой (от поставщика).
Сейчас уже любой релиз, который выпускает 1С, не имеет таких сложностей.

Сопутствующая проблема и методы её решения
С ситуацией, описанной ранее, тесно связана ещё одна, происходящая параллельно. Выглядит она так: 10007066.
Суть проблемы: когда используется СУБД MS SQL SERVER, во время записи объекта из базы с несколькими колонками (например, «Значения» и «Хранилища»), часто случается другой тип ошибки.
Выглядит она таким образом:
Ошибка СУБД:Microsoft OLE DB Provider for SQL Server: String data length mismatchHRESULT=80004005.
Когда происходит ошибка 1с hresult clr 80004005, программа завершает свою работу в аварийном режиме.
Если вы ознакомитесь во время загрузки программы со специальным журналом (речь идёт о технологическом журнале), там есть табличка, содержащая информацию об этих хранилищах.
С помощью средств MS SQL Server Query Analizer нужно найти в табличке несколько колонок image и сделать для каждой следующий запрос
select top 10 DATALENGTH(_Fld4044 from _InfoReg4038 order by DATALENGTH(_Fld4044) desc
При этом, со стороны стандартных проверок, проводимых платформой (chdbfl), поступит информация о том, что база полностью в порядке.
Ошибка выделения памяти hresult 80004005 (на английском это out of memory for query result 1с) может происходить вследствие различных причин, имеющей общую черту. Для системы 1С это, прежде всего, недостаток оперативной памяти. Если говорить точнее, речь идёт о некорректном применении возможностей памяти, поэтому для решения задачи лучше использовать несколько косвенных алгоритмов.
Необходимо сделать рестарт (перезапуск) сервера. Таким образом памяти, которая доступна для работы, временно станет больше. Также есть возможность воспользоваться сервером в 64 разряда, содержащем приложения.
Исходя из опыта, ошибка СУБД hresult 80004005 чаще определяется двумя факторами:
- данные хранятся в хранилище значений (реквизите);
- в таблице конфигураций содержатся двоичные данные объёмом более 120 мегабайт.
Когда советы от сотрудников 1С не приносят результата (ошибка 1с hresult 80004005 остаётся), попробуйте воспользоваться другой пошаговой инструкцией:
Наши постоянные клиенты по 1С:
- используйте все базы, включив у них все фоновые задачи;
- в 8.1.11. должен появиться переключатель о запрете на фоновые задачи (во время создания базы);
- сделайте перезапуск сервера.
Имеет смысл проверки работоспособности. Тем не менее вследствие утечек памяти проблема может возникнуть снова — после перезапуска. В этом случае целесообразно:
- воспользоваться инструментами sql и сделать бэкап;
- снять базу с поддержки;
- выгрузить cf.
Во время любых действий следует копировать файлы в резерв, так как в любой момент может возникнуть необходимость возвращения к исходному статусу информации. Далее надо убрать в менеджменте консоли (config) запись «более 120 мегабайт» и провести загрузку конфигурации (не объединять, а загрузить).
Есть ещё один способ, с помощью которого неопознанная ошибка субд hresult 80004005 может быть исправлена. Нужно открыть конфигуратор и снять конфигурацию, не сохраняя её. Далее, сохранив, нужно поместить её в отдельный файл без сохранения её изменённого вида.
Выполните в SQL операцию, предназначенную для конкретной базы:
DELETE FROM dbo.Config WHERE DataSize > 125829120
После выполнения этой команды проведите загрузку сохранённой конфигурации.
Что касается радикальных шагов, используемых в особо трудных ситуациях, иногда помогает такая схема:
- удалите таблицу config из базы данных, воспользовавшись менеджментом консоли DROP TABLE [dbo].[Config];
- проведите загрузку конфигурации (не «объединить»,а именно «загрузить»).
После проведения проверки проблема должна уйти.
- Стоимость работ специалистов IT Rush — 2000 руб./час
- Абонемент от 50 часов в месяц – 1900 руб./час
- Абонемент от 100 часов в месяц – 1800 руб./час
Нам доверяют:
I have an AWS RDS PostgreSQL 12.3 (t3.small, 2CPU 2GB RAM). I have this table:
CREATE TABLE public.phones_infos
(
phone_id integer NOT NULL DEFAULT nextval('phones_infos_phone_id_seq'::regclass),
phone character varying(50) COLLATE pg_catalog."default" NOT NULL,
company_id integer,
phone_tested boolean DEFAULT false,
imported_at timestamp with time zone NOT NULL,
CONSTRAINT phones_infos_pkey PRIMARY KEY (phone_id),
CONSTRAINT fk_phones_infos FOREIGN KEY (company_id)
REFERENCES public.companies_infos (id) MATCH SIMPLE
ON UPDATE NO ACTION
ON DELETE CASCADE
)
There are exactly 137468 records in this table, using:
SELECT count(1) FROM phones_infos;
The ERROR: out of memory for query result occurs with this simple query when I use pgAdmin 4.6:
SELECT * FROM phones_infos;
I have tables with 5M+ records and never had this problem before.
EXPLAIN SELECT * FROM phones_infos;
Seq Scan on phones_infos (cost=0.00..2546.68 rows=137468 width=33)
I read this article to see if I could find answers, but unfortunately as we can see on metrics:
there are no old pending connections that could eat memory.
As suggested, the shared_buffers seems to be correctly sized:
SHOW shared_buffers;
449920kB
What should I try?
-
-
November 2 2010, 01:51
- IT
- Cancel
Здрасти, други!
Есть проблемка одна. Даже не проблемка, а беда!
Имеется сервер HP ProLiant DL385 G6, один проц Six-Core AMD Opteron(tm) Processor 2427 (cat /proc/cpuinfo) и памяти 4 гига. Стоят на нем
uname -a
Linux dl385-1c 2.6.32-21-generic-pae #32-Ubuntu SMP Fri Apr 16 09:39:35 UTC 2010 i686 GNU/Linux
, стоит сервер 1С из deb-пакетов проприетарных, и стоит самокомпиленный PostgreSQL 8.4.1 с патчами от 1С. Ну, естессно, крутистя база на всем этом и пытается работать. Все бы ничего, да вот засада. При генерации объемных отчетов постгрей дизертирует примерно вот так: http://s005.radikal.ru/i212/1011/a7/2f99f9eb375b.gif (Ошибка СУБД. ERROR: Out of memory. DETAIL: Failed on request of size 76)
Помониторил что творится на сервере. А в это время, пока отчет генерируется, процесс постгрея растет в памяти все больше и больше, примерно от 400 Мб до 2 Гб. И вот когда он достигает что то примерно 2,1 Гб происходит сие.
Конфиги.
Основные параметры postgresql.conf (естессна правленный, не дефолтный):
max_connections = 100
shared_buffers = 512MB
temp_buffers = 16MB
work_mem = 128MB
maintenance_work_mem = 1024M
max_stack_depth = 2MB
full_page_writes = off
wal_buffers = 1024kB
enable_mergejoin = off
random_page_cost = 2.0
cpu_tuple_cost = 0.001
cpu_index_tuple_cost = 0.0005
effective_cache_size = 512MB
Что подмечательно, что на дефолтном щадащем конфиге, хоть и с тормозами в работе 1С эти отчеты (хоть и очень долго, но) формируются.
Так вот подскажите, что нужно подкрутить, чтобы было все в порядке, и не в ушерб быстродействию, и избавитсья от этой ошибки со скрина.