Ошибка выделения памяти

1. KRV_it 31.01.17 05:52 Сейчас в теме
После обновления платформы каждый день у пользователей появляется ошибка: "Ошибка СУБД: Microsoft SQL Server Native Client 11.0: Ошибка выделения памяти HRESULT=80004005". Система Windows Server 2008, 20гб ОЗУ, стоит Microsoft SQL Server Standard (64-bit). Платформу сначала установила 8.3.9, сейчас 8.3.2197, основная база - УТ11.1. Ошибка уходит после рестарта. Кто сталкивался? В чем может быть проблема?
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. collider 31.01.17 05:56 Сейчас в теме
Память в MSSQL настроена или там стоят 2^31 мегабайт, которые по умолчанию?
3. KRV_it 31.01.17 06:25 Сейчас в теме
(2)Настроено Максимальный размер памяти - 10000Мб., для запроса - 2048.
4. drim87 31.01.17 07:41 Сейчас в теме
(3) Увеличьте шаг роста базы до 515мб, на файл журнала транзакций тоже самое, ограничений на максимальный размер лога быть не должно.
Далее в локальных политиках безопасности найдите строку локальные политики\назначение прав пользователей\выполнение задач по обслуживанию томов и добавьте в свойствах пользователя от которого запускается служба MS SQL Server. По дефолту это "NT Service\MSSQLSERVER"
Эта настройка позволит MS SQL Server мгновенно инициализировать место под создание новой базы и мгновенно расширять размер существующих.

Дополнительно можно системную базу temp разбить на несколько файлов (4 рекомендуется для крупных внедрений) и установите для каждого файла начальный размер 1024 и шаг роста 512.

agentesecreto; CD_SVEN; Evilleo; korzhishe; KRV_it; +5 Ответить
5. KRV_it 31.01.17 09:07 Сейчас в теме
(4)
Далее в локальных политиках безопасности найдите строку локальные политики\назначение прав пользователей\выполнение задач по обслуживанию томов и добавьте в свойствах пользователя от которого запускается служба MS SQL Server. По дефолту эт

- Спасибо. Попробую.
6. KRV_it 13.02.17 05:13 Сейчас в теме
(4) Ошибка появляется реже, но все равно падает. Судя по диспетчеру, sql съедает около 10Гб(ограничение), rphost 2-3,5Гб.
7. drim87 13.02.17 07:51 Сейчас в теме
(6) А что за ограничение? или это предположение?

"Сервер 1С Предприятия" х64 или х32?


8. collider 13.02.17 08:51 Сейчас в теме
(7) Память у SQL Сервера обязательно ограничивать. Иначе процедурный кэш забьёт всю память в сервере, которая есть.
Вопрос про разрядность сервера 1С очень хороший, кстати.
jobkostya1c_ERP; +1 Ответить
11. KRV_it 13.02.17 11:09 Сейчас в теме
10. drim87 13.02.17 09:50 Сейчас в теме
(6) меня напрягла цифра 10) потом уже перечитал первые посты и увидел что ограничение на оперативу.

Ссылку на статью по ошибке HRESULT=80004005 уже скинули постом выше. Еще можно и даже нужно настроить регламентные процедуры в MS SQL Server
https://its.1c.ru/db/content/metod8dev/src/developers/scalability/instructi­ons/i8105837.htm?_=1461223135#p4
12. KRV_it 13.02.17 11:10 Сейчас в теме
28. Sergoninfostarru 2 18.10.21 20:11 Сейчас в теме
(10) Ссылка на ИТС битая
John_Dow; SGordon1; k-d-c; Bukaska; +4 Ответить
19. netesoff 4 27.04.17 13:28 Сейчас в теме
(4) а можно немного подробнее, про рекомендацию разбиения. Встречал пару раз такое, но толком никто не смог объяснить что это дает и почему 4, а не 2 или 5.
или может есть занимательно чтиво на эту тему?
20. drim87 27.04.17 20:06 Сейчас в теме
(19)Это делается для ускорения ввода/вывода. Когда с tempdb работают несколько сессий возникает внутренняя конкуренция за ресурсы - соединения с файлом.
Лучше ставить от 2 до 8 в зависимости от количества ядер процессора (логичестких). Больше 8 ставить не нужно.
Минимальный размер выставляется 1024 для базы и 512мб лог для небольших баз - в большинстве случаев этих цифр более чем достаточно, если конечно у вас база измеряется не сотнями ГБ

https://support.microsoft.com/en-us/help/2154845/recommendations-to-reduce-allocation-contention-in-sql-server-tempdb-database
21. h00k 51 28.04.17 00:16 Сейчас в теме
(19)
толком никто не смог объяснить что это дает и почему 4, а не 2 или 5.

Выше параллельность и скорость работы, в общем случае.

Смысл рекомендации такой же как и у MaxDoP = 1 для MS SQL - потому что, в большинстве случаев, 4 (по количеству физических ядер процессора) лучше чем 1 и имеет больший смысл чем 9-10.
На самом деле оптимальное значение необходимо подбирать экспериментальным путём, проводя тестирование после каждого изменения настроек. Но, это дорого, долго и не все это умеют.


В общих чертах описано и на итс, и в библиотеке типовых вопросов крупных внедрений. А на подробное описание в разделе MS SQL ссылку уже дали.
9. v3rter 13.02.17 09:22 Сейчас в теме
И снова 8.3.9... Возможно, ошибка платформы, как в свое время было с 8.3.5 http://forum.infostart.ru/forum9/topic124984/

У Гилева ещё есть http://www.gilev.ru/errsql/ http://www.gilev.ru/err80004005/ и вместо битой ссылки с гилевского сайта - http://web.archive.org/web/20150426042635/http://tutorials.aspfaq.com/8000xxxxx-errors/80004005-errors.html

Я бы вернулся на 8.3.8 и ограничил максимум оперативы для SQL.
13. KRV_it 13.02.17 11:11 Сейчас в теме
(9)Возвращалась, не помогло. На сколько ограничить?
14. drim87 13.02.17 11:47 Сейчас в теме
(13)
Возвращалась, не помогло. На сколько ограничить?


У Вас уже стоит ограничение по памяти.

Вообще судя по всему у вас происходит переполнение. Выше Вам давали ссылку на статью
http://www.gilev.ru/err80004005/

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

Суть проблемы: важно, что под это сообщение об ошибке могут подпадать разные причины, но у них есть общая часть для 1С — это не достаточно оперативной памяти. А еще точнее неэффектиное использование ресурсов памяти. Отсюда косвенные способы победить проблему: путем рестарта сервера (на некотрое время становиться больше доступной памяти) или перейти на 64-разрядный сервер приложений.

1С:Предприятие 8.2. Лицензия на сервер (x86-64)

По опыту проблема связана с хранением данных в реквизите хранилище значений либо наличием в таблице config двоичных данных БОЛЬШЕ 120 mb.

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

В 8.1.11 появился переключатель «запрет на фоновые задания» в
момент создания базы.

Готов пояснить, фоновые задания сами по себе не зло, но регламентные процедуры
с полнотекстовым поиском — вещь в себе — и память она может через какое время
съедать ресурсы rphost.exe, что на другие операции не останеться, и просто
базу блокировать
т.е. другими словами, после первого шага уже можно проверять — возможно проблема «уйдет».
2. Перезапустить сервер

Второй шаг является частным случаем для вашего случая и после него тоже
есть смысл проверять работоспособность. Однако поскольку существуют утечки памяти http://www.gilev.ru/1c/memleak, то через некоторое время после рестарта пролема может вернуться.
3) делаем бэкап средствами sql

Делать резервное копирование рекомендую при любых действиях, когда может потребоваться «возврат» к предыдущему состоянию данных

4) снимаем базу с поддержки, выгружаем cf

убиваем в менежмент консоли базе данных в таблице config запись более 120Мб, делаем «загрузить конфигурацию» (не объединение) убиваем в менежмент консоли базе данных в таблице config запись более 120Мб, делаем «загрузить конфигурацию» (не объединение)

вот пример работоспособности этого приема

http://partners.v8.1c.ru/forum/thread.jsp?id=543293

или

1. Открыть конфигратор;
2. Снял конфигурацию с поддержки, ПРИ ЭТОМ КОНФИГУРАЦИЮ НЕ СОХРАНЯЛ!
3. Далее Сохранить конфигурацию в файл (не сохраняя измененной конфигурации);
4. В SQL для требуемой базы выполнил следующую команду:
DELETE FR OM dbo.Config WH ERE DataSize > 125829120
5. Загрузить сохраненную конфигурацию обратно.

Взято с http://www.forum.mista.ru/topic.php?id=465608



можно попробывать и более радикальный шаг здесь:
удаляем (в менежмент консоли) в базе данных таблицу «config»

DR OP TABLE [dbo].[Config]
5) делаем «загрузить конфигурацию» (не объединение) из cf

после этого проверяем, проблема уходит.
Показать

http://www.gilev.ru/err80004005/
15. KRV_it 22.03.17 06:52 Сейчас в теме
(14)Не помогли и эти действия, все равно примерно раз в день выдает ошибку. При чем создается впечатление, что проблемы с объемными операциями. После завершения которых, память как будто не освобождается, хотя если смотреть на загрузку и "съедаемую" процессами память все стандартно.
16. drim87 22.03.17 07:45 Сейчас в теме
(15)
ь на загрузку и "съедаемую" процессами память все стандартно.

Да если честно - ожидаемо) Проблемы не столько в объемных операциях сколько в суммарном использовании "виртуального адресного пространства" для 32 битного процесса. Как правило эти проблемы решает сервер х64. Можно конечно пробовать выкручиваться например попробовать почаще обновлять статистику и очистку процедурного кеша - но как и способ выше далеко не всем помогает.
17. Гость 10.04.17 14:44
та же песня... УТ 11. сервер 64! GB RAM (из них 32 съел SQL(x64)). процессы rphost - 2-3 ГБ, платформа 8.3.8.2054 (х32) (замечаю, что их не бывает больше 2-3)
Раньше перезапускал процессы: агента сервера 1С и SQL. Сейчас обратил внимание, что перезапуска ТОЛЬКО Сервера 1С достаточно, проблема уходит. Вывод - проблема в сервере 1С. Может конфигурацию попробовать обновить (сейчас 11.2.3.185, не совсем свежая).

Очистка процедурного кэша - без результата.
18. gmtv 12 27.04.17 11:45 Сейчас в теме
Решили увеличением количества рабочих процессов на сервере 1С, см. скриншот. Проблема ушла полностью!
Прикрепленные файлы:
xslava2008; purgin; pioneeer; Sersh2010; mariyanna; dsoul777; Nuuq; SkyOl; Red_Devil; Designer1C; +10 Ответить
22. KRV_it 28.04.17 07:11 Сейчас в теме
(18) Сейчас такие настройки:
Прикрепленные файлы:
xslava2008; Designer1C; +2 Ответить
23. nazirovramzil 22.03.18 08:46 Сейчас в теме
(22) Кто нибудь смог решить проблему? Столкнулся с такой же задачей. На новом сервере, на новой базе такая ошибка.
24. AlexHorsse 14.01.19 18:39 Сейчас в теме
(18)Мне помогло, тьфу 3 раза. Получается, что чем больше баз одновременно работающих, тем меньше памяти выделяется для каждой в рамках единственного процесса?
29. Timur001 16 27.03.22 17:47 Сейчас в теме
(18)У меня количество ИБ на процесс 8, а количество соединений на процесс 256, это правильные настройки? Они стояли по умолчанию и каждый день выходит "Ошибка СУБД: Microsoft SQL Server Native Client 11.0: Ошибка выделения памяти HRESULT=80004005". Если установить как у вас на скрине параметры это не повлияет негативно на работу?
30. user1871018 10.11.22 19:52 Сейчас в теме
(29) Получилось устранить? Точно такая же ситуация как у вас
31. user629927_designer_79 24.10.23 11:08 Сейчас в теме
(18) Спасибо, мне помогло. Не получится ли так, что завтра все это дело грохнется? Насколько живуча данная настройка?
Было
Количество ИБ на процесс 8,
Количество соединений на процесс 256,
Стало
Количество ИБ на процесс 1,
Количество соединений на процесс 20
25. katavy 24.11.20 18:58 Сейчас в теме
переход с х86 на х64 решает проблему. Остальное не помогает
26. semenoof 18.01.21 23:30 Сейчас в теме
Сервер изначально х64. ОЗУ 32. Сервер чистый. Заливал базу. Полезла эта ошибка. Было как п.18. Поправил как п.22. База залилась нормально.
27. HOLIV 07.05.21 12:40 Сейчас в теме
а у меня наоборот появилась после установки как в п.22
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот