|
Утечки памяти в sp_xml_preparedocument
|
|||
---|---|---|---|
#18+
Всем привет! Стоит у нас DPA, который недавно стал показывать в топах задержек sp_xml_preparedocument, причем без количества вызовов, только время ожиданий. Стали думать и возник вопрос про утечки памяти, так как Код: sql 1.
уже показывает 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: ) С уважением, Князев Константин ... |
|||
:
Нравится:
Не нравится:
|
|||
26.02.2021, 14:55 |
|
Утечки памяти в sp_xml_preparedocument
|
|||
---|---|---|---|
#18+
Zelius, Вы не обрабатываете ошибки, что ли? TRY - CATCH. remove сам собой не выполнится. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.02.2021, 15:05 |
|
Утечки памяти в sp_xml_preparedocument
|
|||
---|---|---|---|
#18+
Владислав Колосов, не везде, считал что при разрыве сессии все хендлы очищаются. 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. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.02.2021, 15:09 |
|
Утечки памяти в sp_xml_preparedocument
|
|||
---|---|---|---|
#18+
Zelius, Проанализированный документ хранится во внутреннем кэше SQL Server. Средство синтаксического анализа MSXML использует одну восьмую всей памяти, доступной SQL Server. Во избежание проблем с недостатком памяти освободите память с помощью процедуры sp_xml_removedocument. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.02.2021, 16:00 |
|
Утечки памяти в sp_xml_preparedocument
|
|||
---|---|---|---|
#18+
Zelius, это ожидаемое поведение. Более того не только мемори лики могут быть, но и куча других приколов - скажем tempdb может разрастаться. Посмотрите в моем репозитории там примеров других найти можно много. Если коротко то лучше юзать XQuery. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.02.2021, 16:47 |
|
Утечки памяти в sp_xml_preparedocument
|
|||
---|---|---|---|
#18+
Sergey Syrovatchenko, спасибо, смотрю. из интересного - память на сервере вернулась к начальному значению до экспериментов и даже стала чуть меньше. ощущение, что просто было зарезервировано и потом вернулось в пул. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.02.2021, 17:34 |
|
Утечки памяти в sp_xml_preparedocument
|
|||
---|---|---|---|
#18+
Zelius, думаю, что на сервере имеются и сборщики мусора и дефрагментаторы памяти. Ситуация в отключением сеанса без явной очистки, полагаю, считается аварийной и там должны работать другие механизмы. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.02.2021, 17:55 |
|
|
start [/forum/topic.php?fid=46&fpage=32&tid=1685027]: |
0ms |
get settings: |
8ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
39ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
47ms |
get tp. blocked users: |
2ms |
others: | 11ms |
total: | 144ms |
0 / 0 |