powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Утечки памяти в sp_xml_preparedocument
7 сообщений из 7, страница 1 из 1
Утечки памяти в sp_xml_preparedocument
    #40048997
Zelius
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всем привет!

Стоит у нас DPA, который недавно стал показывать в топах задержек sp_xml_preparedocument, причем без количества вызовов, только время ожиданий. Стали думать и возник вопрос про утечки памяти, так как
Код: sql
1.
SELECT * FROM sys.dm_os_memory_objects WHERE type = 'MEMOBJ_MSXML'


уже показывает pages_in_bytes = 6 991 437 824 байт. проверили все процедуры - везде есть sp_xml_removedocument, sys.dm_exec_xml_handles(0) не показывает зависших хендлов. куда дальше копать, не понятно.

Решил провести эксперимент на стейдже - сделал 100 sp_xml_preparedocument без sp_xml_removedocument для XML около 60 КБ, sys.dm_exec_xml_handles(0) их показал, потом разорвал сессию и смотрю MEMOBJ_MSXML, в итоге до эксперимента pages_in_bytes был 2 031 616, после 100 sp_xml_preparedocument было 6 627 328, после отключения сессии стало 2 072 576. То есть получается утечка, в случае ошибки между prepare и remove? Кто-нибудь встречал информацию по этому поводу?

PS Microsoft SQL Server 2019 (RTM-CU8) (KB4577194) - 15.0.4073.23 (X64) Sep 23 2020 16:03:08 Copyright (C) 2019 Microsoft Corporation Developer Edition (64-bit) on Windows Server 2019 Standard 10.0 <X64> (Build 17763: )

С уважением, Князев Константин
...
Рейтинг: 0 / 0
Утечки памяти в sp_xml_preparedocument
    #40049005
Владислав Колосов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Zelius,

Вы не обрабатываете ошибки, что ли? TRY - CATCH. remove сам собой не выполнится.
...
Рейтинг: 0 / 0
Утечки памяти в sp_xml_preparedocument
    #40049011
Zelius
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Владислав Колосов,

не везде, считал что при разрыве сессии все хендлы очищаются.
msdnsp_xml_preparedocument returns a handle that can be used to access the newly created internal representation of the XML document. This handle is valid for the duration of the session or until the handle is invalidated by executing sp_xml_removedocument.
...
Рейтинг: 0 / 0
Утечки памяти в sp_xml_preparedocument
    #40049027
Владислав Колосов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Zelius,

Проанализированный документ хранится во внутреннем кэше SQL Server. Средство синтаксического анализа MSXML использует одну восьмую всей памяти, доступной SQL Server. Во избежание проблем с недостатком памяти освободите память с помощью процедуры sp_xml_removedocument.
...
Рейтинг: 0 / 0
Утечки памяти в sp_xml_preparedocument
    #40049049
Zelius, это ожидаемое поведение. Более того не только мемори лики могут быть, но и куча других приколов - скажем tempdb может разрастаться. Посмотрите в моем репозитории там примеров других найти можно много. Если коротко то лучше юзать XQuery.
...
Рейтинг: 0 / 0
Утечки памяти в sp_xml_preparedocument
    #40049067
Zelius
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sergey Syrovatchenko,

спасибо, смотрю.

из интересного - память на сервере вернулась к начальному значению до экспериментов и даже стала чуть меньше. ощущение, что просто было зарезервировано и потом вернулось в пул.
...
Рейтинг: 0 / 0
Утечки памяти в sp_xml_preparedocument
    #40049074
Владислав Колосов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Zelius,

думаю, что на сервере имеются и сборщики мусора и дефрагментаторы памяти. Ситуация в отключением сеанса без явной очистки, полагаю, считается аварийной и там должны работать другие механизмы.
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Утечки памяти в sp_xml_preparedocument
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]