Ошибка SDBL - недостаточно памяти #252598


#0 by vladon
Постоянно вылазит ошибка, особенно при обмене: "Ошибка SDBL. Для выполнения запроса недостаточно памяти. Размер выборки такой-то." Размеры выборок до 5 МБ. Всегда разные цифры. Хотя памяти более чем достаточно. Релиз 16-й. Вылазит очень часто, особенно в последнее время стала вылазить. Кто-нибудь сталкивался и как это лечить? Пока лечу перезапуском COM-приложения 1CV8, но это же не дело... :(
#1 by wicked
я также лечусь:(, и другого способа пока не нашел:(
#2 by vladon
а можно это делать автоматически? а то если подобное случается например в субботу утром, то там сообщений обмена накапливается по несколько сот мегабайт с каждого узла..
#3 by GUCCI
А у вас в 16 программа просто сама по себе не вылетает?
#4 by Neco
Попробуй советы из ветки:
#5 by vladon
сама по себе нет, только из-за ошибки SDBL этой.
#6 by vladon
модель Simple, размер лог-файла - 2048 МБ с автоувеличением.
#7 by vladon
хотя нет, вылетает, если сутками стоит.
#8 by GUCCI
Ни как не решили??? Просто у меня такая же беда, четко раз в 2 дня слетает на пустом месте!!!
#9 by vladon
я решил просто перезапуском :(
#10 by GUCCI
Мне сказали релиз обновить должно помочь!!! Кстати не знаешь как его на сервак сиавить? (опыта нет нефига)
#11 by GUCCI
А ты не на заводе "Начало" работаешь???
#12 by vladon
так же, как и клиента. просто updsetupsetup.exe вначале выгони всех юзеров, а то обидятся
#13 by vladon
что за завод "Начало"?
#14 by GUCCI
В Наб. челнах есть такой!!!
#15 by vladon
не знаю про такой. нет, не там работаю.
#16 by GUCCI
А релиз попробуй обнови!!!
#17 by Odavid
Ошибка "Ошибка SDBL. Недостаточно памяти связана" с тем, что SQL резервирует (по команде 1С-сервера) определенный объем листа (буфера)непрерывной памяти, где и выполняются операции с проведением-движением документов, обработкой запросов и т.д. Однако, если суммарный объем выдаваемых 1С-сервером (выдаваемых запросом) данных превышает этот порог (SQL-сервер не может все сразу впихнуть в выделенный ему блок памяти), то SQL рапортует о нехватке ФИЗИЧЕСКОЙ памяти (т.е. нехватке емкости выделенных под операции 1С блоков-листов памяти). К той ошибке обычно добавляется, сколько памяти не хватает (Размер выборки превышает ХХХХХХ байт). Это значит, что в блоке памяти, где сейчас выполняется запрос, не хватает еще стольких-то байт для удачного завершения запроса. Не следует забывать и о том, что в данный момент работают много пользователей, и кто-то из них в данный момент то же что-то проводит-вводит, а следовательно, уже занимает место в этих блоках памяти (до тех пор, пока 1С сервер не освободит их - т.е. тот другой пользователь закроет документ, или проведет документ и т.д.). 1С поддержка в частной переписке (случайно наткнулся ;) сообщила по этому поводу следующее (не дословно): "рекомендуется не использовать большие блоки данных при запросе". Т.е., другими словами, "мы вот протестировали документ на 100 строк - работает; а если в нем уже 1000 строк - так это ваши проблемы. Ну чего вы хотите от 1С за такие смешные деньги её стоимости". Поэтому вижу только пока два решения: Профилактические меры (помогают в 80% случаев и почти всегда - на начальном этапе, у тех, кто только-только столкнулся с этой проблемой и не успел еще "заиметь" множество "SDBL-не проводимых" памятоемких документов): 1) Перезагрузка сервера SQL. При перезагрузке сервера (SQL-сервера) происходит очищение страниц памяти, и есть большая доля вероятности, что теперь весь запрос "уберется" в буфере и пройдет (мы пока спасаемся так). 2) Выставить Dynamically configure SQL Server memory (на вкл Memory в свойствах SQL-сервера), и задать ползунком минимально выделяемый SQL-серверу объем памяти. Это позволит системе отдать SQL-серверу сразу минимально заданный объем памяти, чтоб он начинал крутится без задержек на "отъем" памяти, и не отдавая его другим приложениям (ну, и не занимая самой вроде как :). Это призвано ускорить как загрузку SQL-баз, так и работу. У нас 2 базы по 5 Гб постоянно занимают при работе 1,7-1,8 Гб памяти. Поэтому здесь я выделил SQL'ю минимально 1,5 Гб. Максимально оставил всю доступную память (до 3,5 Гб - но выше 2,1 Гб еще не поднимался). 3) Поставить опцию Reserve physical memory for SQL Server - она и позволяет физически системе резервировать по заданным в п.2 границам память для SQl. 4) Увеличение опции Minimum query memory, KB (там же на вкл Memory) с шагом Mх2 (по умолчанию 1024 -> 2048 -> 4096 -> и т.д.). Это увеличивает отводимый SQL-сервером объем страниц памяти под запросы пользователей, и тоже может помочь. Меры 1-4 хороши при условии, что на SQL-сервере ничего, кроме SQL не работает, иначе можно так навыделять память, система (или другие приложения) просто зависнут из-за того,что вся ОЗУ будет под SQL-сервером. А кардинально избавится от ошибки поможет только разбивка запроса на более мелкие блоки и, соответственно, исполнение его этими измельченными блоками. И это уже - задача по оптимизации запросов 1С-программиста на вашей фирме. Чтоб конкретно сел и разбивал на более мелкие куски каждый "неперевариваемый" запрос (выборку).
#18 by bgalin
подскажите, а можно где-нить в логах посмотреть был ли и когда был перезапуск COM-приложения 1CV8?
#19 by MaxS
было бы 8.1 сказал бы смотреть logcfg.xml
#20 by bgalin
хотите сказать в 8.0 такого нет?
#21 by shaggyboy
> что SQL резервирует (по команде 1С-сервера) определенный объем листа >(буфера)непрерывной памяти, где и выполняются операции с проведением-движением >документов, обработкой запросов полный бред. как в тестах TPC , базы работали?
#22 by hhhh
лучше обновить программиста. Чтобы писал нормальные запросы.
#23 by i-rek
неясно откуда инфа, но она противоречит массе других источников. Из которых выходит, что ошибка возникает из-за нехватки памяти не на сервере БД, а на сервере приложения. Помогает перезагрузка не сервера БД, а сервера приложения, перевод его на x64, переход на 8.1 и внедрение кластера
#24 by Freeman391
Вот официальный ответ 1С: Краткое содержание: Ошибка «Ошибка SDBL. Недостаточно памяти для выполнения запроса» Проблема При длительной работе сервера 1С:Предприятия без перезагрузки может возникать следующая ошибка: «Ошибка SDBL. Недостаточно памяти для выполнения запроса» При перезагрузке сервера 1С:Предприятия ошибка временно пропадает, затем (через некоторый промежуток времени) возобновляется. Причина Длительная работа сервера 1С:Предприятия под большой нагрузкой может приводить к фрагментации адресного пространства, доступного серверу для выполнения запросов. При этом часть адресного пространства оказывается недоступной для повторного использования, то есть объем доступного пространства постепенно уменьшается. Обратите внимание на то, что «расходуется» не физическая память (RAM), а именно адресное пространство - виртуальный набор уникальных «ячеек», доступных приложению для размещения информации. Решение Необходимо периодически выполнять перезагрузку сервера 1С:Предприятия. Частота перезагрузки подбирается индивидуально в каждом случае, в зависимости от того, через какое время после очередной перезагрузки начинает возникать сообщение об ошибке. ВНИМАНИЕ! Если в момент перезагрузки сервера к нему были подключены пользователи, то их работа завершится аварийно. При этом некоторые изменения могут оказаться несохраненными. Если организовать перезагрузку сервера с необходимой частотой не представляется возможным (например, при непрерывном цикле работы системы), переходите к нижеследующим рекомендациям. При настройках системы по умолчанию, серверу 1С:Предприятия 8.0 доступно 2 Гб адресного пространства. Имеется возможность, увеличить этот объем до 3 Гб. Для этого необходимо: * Добавить в файл Boot.ini операционной системы сервера предприятия флаг /3GB. Например: multidiskrdiskpartitionWINDOWS="Windows Server 2003, Enterprise" /fastdetect /3GB * Настроить компоненту сервера 1С:Предприятия 8.0 для работы с 3 Гб адресного пространства. Для этого следует зайти в Control Panel Administrative Tools Component Services Computers My Computer COM+ Applications 1CV8 Properties Advanced и включить флаг «Enable 3Gb support». Если этого оказалось недостаточно, то следует перейти на 1С:Предприятие 8.1. 1С:Предприятие 8.1. В 1С:Предприятии 8.1 значительно оптимизированы алгоритмы работы с памятью. В частности, начиная с версии 8.1.8, результаты больших выборок временно сохраняются в файле, а не в памяти, что позволяет выполнять запросы с большими выборками в ограниченном объеме адресного пространства. Если перехода на 1С:Предприятие 8.1 оказалось недостаточно, то следует рассмотреть одну из следующих возможностей: * Используйте кластер из нескольких рабочих процессов на одном рабочем сервере. Каждому рабочему процессу кластера будут доступны те же самые 3 Гб адресного пространства. Таким образом, общее количество доступного серверу адресного пространства увеличится до 3*N Гб, где N - количество рабочих процессов в кластере. * Используйте 64-разрядную версию 1С:Предприятия 8.1.
#25 by bgalin
Скажите кто-нить как все-таки посмотреть в системе, когда в последний раз был перезагружен сервер 1С:Предприятия?
#26 by Триша
SQL Server Management Studio для 2005
#27 by bgalin
я не про SQl server спрашиваю, а именно про сервер 1с:предприятия (про приложение COM+ 1cv8ю, про его перезагрузку)
#28 by NULLL
Блин. А у меня такое выскочило при выгрузке таблицы значений данных в другую ТЗ. Запросов вроде нту вообще в том месте где выскакивает ошибка. Кроме того база расперделенная по 6 городах. Перейтина 8.1 сложновато. Сейчас 8.0.16
Тэги: Админ
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С