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

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.

VyacheslavShilov; muskul; agentesecreto; CD_SVEN; Evilleo; korzhishe; KRV_it; +7 Ответить
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С очень хороший, кстати.
VyacheslavShilov; n_mezentsev; jobkostya1c_ERP; +3 Ответить
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 5 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С, см. скриншот. Проблема ушла полностью!
Прикрепленные файлы:
n_mezentsev; KoVan; xslava2008; purgin; pioneeer; Sersh2010; mariyanna; dsoul777; Nuuq; SkyOl; Red_Devil; Designer1C; +12 Ответить
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
32. user2103760 30.08.24 16:57 Сейчас в теме
После обновления на новую платформу 8.3.25.1374 стало выкидывать из баз из-за ошибки "Microsoft OLE DB Provider for SQL Server: Ошибка выделения памяти HRESULT=80004005"
В моем случае резко возрасла нагрузка на ЦП до 100% из-за процесса rphost. В сеансах было большое количество фоновых задач.
Мне помогло в свойствах каждой базы установка галочки напротов "Блокировка регламентных заданий включена"
День прошел, ни одного вылета, загрузка процессора 5-10%.
33. user2103763 30.08.24 17:06 Сейчас в теме
После обновления на новую платформу 8.3.25.1374 стало выкидывать из баз из-за ошибки "Microsoft OLE DB Provider for SQL Server: Ошибка выделения памяти HRESULT=80004005"
В моем случае резко возрасла нагрузка на ЦП до 100% из-за процесса rphost. В сеансах было большое количество фоновых задач. Загрузка ОЗУ 45%.
Мне помогло в свойствах каждой базы установка галочки напротов "Блокировка регламентных заданий включена"
День прошел, ни одного вылета, загрузка процессора 5-10%.
Прикрепленные файлы:
36. rougudz 22.10.24 19:47 Сейчас в теме
(33) у меня кстати это помогло не особо. работают но все равно вылетают...
41. user2103763 25.10.24 14:36 Сейчас в теме
(36) Это временное решение лишь для того, чтобы стабилизировать на время поиск лучшего пути. Я его нашел.
1. Настроил во всех базах регламентные задания, чтобы они выполнялись гораздо реже и в разное время (это убрало частые загрузки процессора rphost-ом под 70-100%).
2. Уменьшил в свойствах рабочего сервера количества ИБ на процесс с 8 до 4 и больше ни одного вылета уже три недели.

Если кратко, как я понял, каждый процесс занимает 4 гигабайта памяти в 32-х битной 1С. Когда в одном процессе открыто много баз, чаще происходит переполнение этого процесса (например бух начал делать какой-то отчет) и сервер не успевает запустить новый процесс и всё падает. В свойствах даже есть параметр "Интервал превышения допустимого объема памяти". Но надо ориентироваться на размер ОЗУ.
У меня на серваке 32 гига, и так как баз 15, то максимум это 4 одновременных процесса по 4 гига. Запас по памяти для остальных нужд остается с избытком.
Прикрепленные файлы:
42. пользователь 25.10.24 14:38
Сообщение было скрыто модератором.
...
34. rougudz 21.10.24 18:26 Сейчас в теме
у меня теже грабли. но такое себе решение. как без регламентных заданий работать?
43. user2103763 25.10.24 14:40 Сейчас в теме
(34) в 41. окончательное решение с работающими регламентными заданиями
35. rougudz 21.10.24 18:39 Сейчас в теме
Похоже придется на 64-битный сервер переходить.
но как объяснить руководству что почем, если трата 50тр ничего не даст))
37. Online-Ufa 23.10.24 00:50 Сейчас в теме
(35) Если есть подписка ИТС ПРОФ на 12 мес., то можно бесплатно получить временную лицензию на сервер 1С:Предприятия 8 ПРОФ (x86-64) на две недели
38. rougudz 23.10.24 09:03 Сейчас в теме
(37)
получить временную лицензию на сервер 1С:Предприятия 8 ПРОФ

к сожалению у нас базовая(
39. Online-Ufa 23.10.24 10:56 Сейчас в теме
(38) Мы свои клиентам в таких случаях давали свой ключик со склада на время. Попробуйте обратиться к обслуживающему вас партнеру, может что-то тоже смогут предложить.
40. rougudz 23.10.24 11:51 Сейчас в теме
(39) ничего особо не предложили.справшивали
44. user2103763 25.10.24 14:41 Сейчас в теме
(35) в 41. окончательное решение с работающими регламентными заданиями. По началу тоже думал переходить на 64, но переход теперь можно отложить.
45. rougudz 25.10.24 15:36 Сейчас в теме
(44) нашли времнно ключ на 64 битный сервер. все взлетело и с заданиями всеми.
заказали, покупают.
Оставьте свое сообщение

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