Утечка памяти windows как найти

Содержание
  1. Как найти и исправить утечки памяти в Windows 10/8/7
  2. Утечки памяти в Windows 10
  3. Предотвращение утечек памяти
  4. Устранение утечек памяти в Windows
  5. Устранение неполадок с утечкой памяти или исключением нехватки памяти в процессе BizTalk Server
  6. Аннотация
  7. Физическая память и использование памяти
  8. Большие сообщения
  9. Время, необходимое для воспроизведения утечки памяти
  10. Использование переключателя/3GB на 32 — разрядных компьютерах
  11. Использование настраиваемых компонентов
  12. Версия .NET Framework
  13. Число процессоров
  14. BizTalk 2006 и более поздние версии
  15. BizTalk 2004
  16. Пороги регулирования использования процессов и физической памяти
  17. Порог регулирования для восстановления
  18. Пакеты обновления и накопительные пакеты обновления для BizTalk Server
  19. хеапдекоммитфриблокксрешолд
  20. Операции преобразования
  21. Большие значения атрибутов и значения больших элементов
  22. Настраиваемые компоненты процесса продаж
  23. Потоковая передача в условиях большой нагрузки
  24. Попытаться упростить эту задачу
  25. Действия по устранению неполадок
  26. Использование журнала системного монитора
  27. Выбор данных для ведения журнала
  28. Получение файла дампа
  29. Способ 1: автоматический
  30. Способ 2: вручную
  31. Остановить ведение журнала системного монитора
  32. Анализ файла дампа

Как найти и исправить утечки памяти в Windows 10/8/7

Утечка памяти – это неправильное размещение ресурса в компьютерной программе из-за неправильного распределения памяти. Это происходит, когда неиспользуемая область ОЗУ остается невыпущенной. Утечку памяти не следует путать с утечкой пространства, которая относится к программе, использующей больше оперативной памяти, чем необходимо. Утечка памяти в системе Windows 10/8/7, как говорят, произошла, когда память просто недоступна, несмотря на то, что она не используется.

Утечки памяти в Windows 10

Прежде чем начать, вы должны знать, что утечка памяти – это проблема программного обеспечения для отладки – например, в Java, JavaScript, C/C ++, Windows и т. Д. Физическая замена ОЗУ или жесткого диска не требуется.

Почему это плохо

Очевидно, что утечка памяти – это плохо, потому что это ошибка, недостаток в системе. Но давайте выясним, как именно это влияет на систему:

  1. Поскольку память не освобождается, даже когда она не используется, это приводит к ее истощению.
  2. Исчерпание памяти приводит к старению программного обеспечения.
  3. Уменьшение доступной памяти приводит к увеличению времени отклика и снижению производительности системы.
  4. Неконтролируемая утечка памяти может в конечном итоге привести к сбою приложения.

Чтобы идентифицировать утечку памяти, программист должен иметь доступ к исходному коду программы.

Обнаружение утечки

Чтобы решить проблему, нам нужно сначала ее идентифицировать. Основные шаги по обнаружению утечки памяти:

  1. Подтверждение . Определение наличия утечки.
  2. Поиск утечки памяти в режиме ядра . Поиск утечки, вызванной компонентом драйвера режима ядра.
  3. Поиск утечки памяти в пользовательском режиме . Поиск утечки, вызванной драйвером пользовательского режима или приложением.

Распределение памяти

Существуют разные режимы, в которых приложения выделяют оперативную память. Если пространство не освобождается после использования, утечка памяти будет происходить независимо от режима выделения. Некоторые общие шаблоны распределения:

  1. Функция HealAlloc для выделения кучи памяти. Эквивалентами времени выполнения C/C ++ являются malloc и новые.
  2. Функция VirtualAlloc для прямого выделения из ОС.
  3. Kernel32 API для хранения памяти ядра для приложения. Пример, CreateFile, CreateThread.
  4. User32 API и Gdi32 API.

Предотвращение утечек памяти

Мы все знаем, что профилактика лучше лечения, поэтому есть несколько способов предотвратить утечку памяти.

Мониторинг привычек

Вы должны следить за ненормальным использованием ОЗУ отдельными программами и приложениями. Вы можете перейти в диспетчер задач Windows, нажав CTRL + SHIFT + ESC и добавить такие столбцы, как дескрипторы, объекты пользователя, объекты GDI и т. Д.

Это поможет вам легко отслеживать использование ресурсов.

Инструменты Microsoft для диагностики утечек памяти

Различные инструменты диагностируют утечки памяти для различных режимов выделения:

  1. Верификатор приложения диагностирует утечки кучи.
  2. UMDH (компонент средств отладки Windows) диагностирует утечки для отдельных процессов, отслеживая выделение кучи памяти.
  3. Trace Capture для тщательного анализа использования оперативной памяти.
  4. Xperf также отслеживает шаблоны распределения кучи.
  5. CRT Debug Heap не только отслеживает выделение кучи, но также позволяет использовать методы кодирования для минимизации утечек.
  6. JavaScript Memory Leak Detector отлаживает утечки памяти в кодах.

Советы по использованию

  1. Используйте ядра HANDLE и другие умные указатели для ресурсов Win32 и выделения кучи.
  2. Получите классы для автоматического управления ресурсами для выделения ядра из библиотеки ATL. Стандарт C ++ имеет auto_ptr для распределения кучи.
  3. Инкапсулируйте указатели COM-интерфейса в «умные указатели» с помощью _com_ptr_t или _bstr_t или _variant_t .
  4. Мониторинг кода .NET на предмет ненормального использования памяти.
  5. Избегайте множественных путей выхода для функций, чтобы к концу функции освободить выделения из переменных в большинстве блоков.
  6. Используйте собственные исключения только после освобождения всех выделений в блоке _finally. Оберните всю кучу и обработайте выделения в интеллектуальные указатели, чтобы использовать исключения C ++.
  7. Всегда вызывайте функцию PropVariantClear перед повторной инициализацией или удалением объекта PROPVARIANT.

Устранение утечек памяти в Windows

Так же, как различные способы предотвращения утечек памяти, существуют различные способы остановить утечки памяти.

1] Закройте процессы и перезапустите.

Если вы видите, что ненужный процесс занимает слишком много ОЗУ, вы можете завершить процесс в диспетчере задач. Вам нужно будет перезагрузить устройство, чтобы освободившееся пространство было доступно для использования другими процессами. Без перезагрузки проблема утечки памяти не будет решена. Одним из конкретных процессов, которые имеют ошибки для замедления работы ПК, является Runtime Broker. Попробуйте, если отключение, которое само по себе работает.

2] Инструменты диагностики памяти

Чтобы получить доступ к встроенному инструменту диагностики памяти для Windows:

  1. Сохраните всю вашу важную работу.
  2. Нажмите Win + R , чтобы открыть окно Выполнить .
  3. Введите команду mdsched.exe в окне Выполнить .
  4. Перезагрузите компьютер.
  5. После перезапуска выполните базовое сканирование или выберите параметры Расширенные , например Test mix ’или Количество проходов ’.
  6. Нажмите F10 , чтобы начать тестирование.

Это все еще временные исправления.

3] Проверить обновления драйверов

Устаревшие драйверы вызывают утечки памяти. Держите все драйверы обновленными:

  1. Нажмите Win + R и откройте окно Выполнить . Введите devmgmt.msc и нажмите Enter. Вы попадете в Диспетчер устройств .
  2. Проверьте устаревшие драйверы и обновите их все.
  3. Для обновлений, которые вы могли пропустить, проверьте в Центре обновления Windows.

Это было просто.

4] Оптимизация производительности

Настройка Windows на производительность будет управлять всем, включая планирование процессора и использование памяти, чтобы предотвратить утечки памяти. Следуй этим шагам:

  1. Нажмите правой кнопкой мыши на Этот компьютер ’и выберите настройки Дополнительно на левой панели.
  2. На вкладке “ Дополнительно ” перейдите в раздел “ Эффективность “, а затем “ Настройки “.
  3. Установите флажок Настроить для лучшей производительности и нажмите ОК .
  4. Перезапустите и проверьте, решена ли проблема.

Если это простое решение не сработало, попробуйте следующее решение.

5] Отключить программы, запускаемые при запуске

Отключение проблемных программ – единственный способ избавиться от проблемы утечки памяти. Зайдите в диспетчер задач и отключите программу, создающую проблемы. Если вы не знаете, какие программы создают проблемы, сделайте следующее:

  1. Перейдите в Диспетчер задач .
  2. Перейдите в “ Запуск “.
  3. Отключите автозапуск программ, которые вам не нужно запускать по умолчанию.

6] Дефрагментация жесткого диска

Хотя Windows 10 делает это для вас автоматически, вам может понадобиться время от времени выполнять дефрагментацию жестких дисков для оптимизации производительности:

  1. Перейдите на страницу “ Этот компьютер ” или “ Мой компьютер “.
  2. Щелкните правой кнопкой мыши системный жесткий диск (обычно диск C:).
  3. Перейдите на вкладку Инструменты и выберите Свойства ‘и выберите Оптимизировать ’.
  4. Выберите диск для дефрагментации и выберите « Анализировать ».

Перезагрузите компьютер после новой фрагментации.

7] Файл ClearPage при завершении работы

Сейчас становится все сложнее, но не волнуйтесь. Вот как очищать файл подкачки при каждом выключении:

  1. Введите regedit в поле поиска, чтобы запустить редактор реестра.
  2. Введите этот путь: HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlSession ManagerMemory Management
  3. Измените значение ClearPageFileAtShutDown на «1».
  4. Сохраните изменения и перезагрузите устройство.

Это должно сделать это.

9] Отключить суперпатч

Этот сервис Windows оптимизирует производительность за счет минимизации времени загрузки. Это позволяет Windows управлять использованием оперативной памяти. Жизнь после отключения Superfetch не удобна, но сделайте это, если нужно. По крайней мере, попробуйте это в одиночку, чтобы изолировать проблему:

  1. Найдите services.msc и перейдите в диспетчер служб.
  2. Найдите Superfetch и нажмите его правой кнопкой мыши, чтобы перейти в Свойства .
  3. Выберите « Стоп ».
  4. Также Отключить ’сервис из раскрывающегося меню.
  5. Перезагрузите компьютер и проверьте, не улучшилась ли производительность.

Включите Superfetch, если этот не работает.

10] Проверка на наличие вредоносных программ

Используйте стороннее антивирусное программное обеспечение или встроенный в Windows 10 Защитник Windows для сканирования и устранения вредоносных программ.Убедитесь, что антивирус обновлен для поддержки вашей ОС, чтобы он не стал причиной утечки памяти.

Каждое решение, которое вам когда-либо понадобится, чтобы найти или предотвратить утечку памяти, находится здесь. Вы можете прочитать больше об утечках памяти на MSDN и Microsoft.

Устранение неполадок с утечкой памяти или исключением нехватки памяти в процессе BizTalk Server

В этой статье описывается устранение неполадок с утечкой памяти или исключением нехватки памяти в серверном процессе BizTalk на сервере Microsoft BizTalk Server.

Исходная версия продукта: BizTalk Server 2010, 2009
Исходный номер статьи базы знаний: 918643

Аннотация

Распространенной причиной является утечка памяти. Возможно, вам потребуется выполнить несколько действий, чтобы найти определенную причину утечки памяти или исключения нехватки памяти в Microsoft BizTalk Server. В этой статье обсуждаются важные моменты, которые следует учитывать при оценке использования памяти и возможных проблем, связанных с памятью. Ниже приведены возможные соображения.

  • Физическая память
  • Обработка больших сообщений
  • Использование параметра/3gb
  • Использование настраиваемых компонентов
  • Какая версия Microsoft .NET Framework работает в системе
  • Число процессоров
Читайте также:  Версия windows не требующая активации

При использовании памяти в диспетчере задач Microsoft Windows процесс BizTalk Server может привести к утечке памяти, если в диспетчере задач Microsoft Windows используется более 50 процентов физического ОЗУ. Утечка памяти может привести к ошибке нехватки памяти при увеличении использования памяти до тех пор, пока процесс не завершится до истечения объема системной памяти или пока процесс не перестанет работать. Для устранения этой неисправности необходимо учитывать следующее:

Физическая память и использование памяти

Так как это может повлиять на половину объема физической памяти, используйте использование памяти в качестве рекомендации. Например, если сервер BizTalk Server имеет 4 гигабайта (ГБ) ОЗУ, а процесс сервера BizTalk использует около 500 мегабайт (МБ) ОЗУ, это может привести к невозможности утечки памяти. Если процесс сервера BizTalk использует около 1 ГБ ОПЕРАТИВной памяти, может возникнуть утечка памяти или высокая объем памяти. Использование памяти может быть вызвано длительными хранимыми процедурами или согласованием. Убедитесь, что вы знаете, какой объем памяти, используемой узлом BizTalk, обычно использует, чтобы определить, происходит ли утечка памяти или высокая память.

Большие сообщения

Когда BizTalk Server обрабатывает большие сообщения, система, вероятно, вызывает утечку памяти. Тем не менее, сообщения могут использовать большой объем памяти.

Кроме того, обратите внимание, что использование высокого объема памяти может быть ожидаемым, если BizTalk Server обрабатывает большие сообщения. Возможно, вы захотите обновить оборудование, чтобы обеспечить соответствие требованиям к производительности сервера BizTalk в вашей среде.

Время, необходимое для воспроизведения утечки памяти

Утечки памяти могут возникать немедленно или накапливаться со временем. Оба сценария являются общими.

Использование переключателя/3GB на 32 — разрядных компьютерах

Как правило, процесс может получить доступ к 2 ГБ виртуального адресного пространства. Параметр /3gb является возможностью для систем, требующих более адресации памяти. Этот параметр позволяет увеличить объем памяти, используемой для обработки сообщений. Однако параметр/3gb позволяет использовать только 1 ГБ адресации памяти для операций в режиме ядра. Кроме того, этот параметр может увеличить риск истечения памяти пула.

Если параметр/3gb включен в 32-разрядной версии Windows, то этот процесс может получить доступ к 3 ГБ виртуального адресного пространства, если этот процесс поддерживает большое количество адресов. Процесс является большим адресом, связанным с тем, что для исполняемого файла установлен флаг IMAGE_FILE_LARGE_ADDRESS_AWARE в заголовке изображения. Так как процесс BizTalk имеет большое значение для поддержки адресов, в BizTalk будет выгодно использовать параметр/3gb.

Если экземпляр сервера BizTalk (32-разрядный экземпляр) работает в 64-разрядной версии Windows (AMD64), то преимущества процесса BizTalk из адресного пространства памяти 4 ГБ, так как в BizTalk используется большая адресация. Таким образом, перемещение приложений с большим объемом памяти на сервер 64 бит может оказаться лучшим решением.

64-разрядный процесс BizTalk в 64-разрядной версии Windows (AMD64) содержит 8 ТБ адресации памяти.

Кроме того, следует учитывать виртуальные байты и частные байты, используемые процессом. Экземпляр узла BizTalk (это приложение .NET Framework) может получить сообщение об ошибке «недостаточно памяти», чтобы значение размера виртуального байта достигнет 2 ГБ. Такая ситуация может возникнуть, даже если максимальный адрес памяти для процесса в 32-разрядной версии Windows (без параметра/3gb) РАВЕН 2 ГБ. Чтобы узнать, почему может возникать такая ситуация, посетите следующий веб-сайт Майкрософт Developer Network (MSDN):
Мониторинг производительности ASP.NET и оповещение администраторов

Параметр/3gb также увеличивает максимальное число байтов исключительного пользования для процесса BizTalk от 800 мб до 1800 Мб. Для получения дополнительных сведений о производительности приложений .NET Framework с включенным параметром/3gb , перейдите к главе 17 — Настройка производительности приложений .NET.

В следующей таблице приведена сводка этих сведений и приводятся практические пределы для виртуальных байтов и байтов исключительного пользования.

Процесс Windows Адресация памяти (с большим процессом, поддерживающим адресацию) Практический лимит для виртуальных байтов Практический лимит для байтов исключительного пользования
32-разрядная 32-разрядная 2 ГБ 1400 МБ 800 МБ
32-разрядный 32 — бит с параметром/3GB 3 ГБ 2400 МБ 1800 МБ
32-разрядная 64-разрядная 4 ГБ 3400 МБ 2800 МБ
64-разрядная 64-разрядная 8 ТБ Неприменимо Неприменимо

Для получения дополнительных сведений о адресации памяти для 32 – разрядных VS и 64 — для Windows и Windows Server, посетите страницу пределы памяти для Windows и Windows Server.

В следующей таблице приведены сведения о поддержке PAE и 3 ГБ для разных версий сервера BizTalk Server.

Продукт ТРУДНО 3 ГБ
BizTalk Server 2004 Да Нет
BizTalk Server 2006 Да Да
BizTalk Server 2006 R2 Да Да
BizTalk Server 2009 Да Да

Если необходимо включить параметр/3gb в соответствии с требованиями к производительности компьютера, на котором работает сервер BizTalk Server, можно рассмотреть добавление серверов в группу BizTalk. Это позволяет масштабировать экземпляры ведущего приложения с интенсивным использованием памяти.

Компоненты BizTalk, которые запускаются в процессе служб IIS, также могут быть полезны при включенном параметре/3gb .

Параметр/3gb не поддерживается на компьютерах под управлением Windows SharePoint Services 2,0 или более поздних версий или SharePoint Portal Server 2003 или более поздней версии. Параметр/3Gb windows Server 2003/3gb не поддерживается в Windows SharePoint Services 2,0 или более поздних версий, а также в SharePoint Portal Server 2003 с пакетом обновления 2 (SP2) или более поздней версии.

Использование настраиваемых компонентов

Если вы используете пользовательские компоненты, такие как конвейеры или компоненты служб, вам необходимо знать, что именно делают эти компоненты. Кроме того, следует убедиться в потенциальном влиянии этих компонентов на использование памяти. Распространенная проблема с памятью, возникающая при преобразовании компонента в документ. Операция преобразования занимает много памяти. При преобразовании документа сервер BizTalk Server передает поток сообщений в класс Microsoft .NET Framework XslTransform в рамках процесса BizTalk.

Еще одна распространенная проблема возникает при интенсивной обработке строк. Интенсивное манипулирование строкой может потреблять множество воспоминания. Для получения дополнительных сведений о способах повышения производительности посетите страницу улучшения производительности управляемого кода.

Версия .NET Framework

Microsoft .NET Framework 2,0 и .NET Framework 1,1 имеют различные параметры памяти. Таким образом, вы можете увидеть различные результаты между ними. Если вы используете .NET Framework, убедитесь, что установлен последний пакет обновления 1 (SP1) для .NET Framework. Эти пакеты обновления устраняют несколько известных проблем с памятью.

Число процессоров

Общеязыковая среда выполнения (CLR) имеет следующие сборщики мусора (GC):

Если компьютер, на котором работает сервер BizTalk Server, является многопроцессорной системой, платформа .NET Framework использует серверную версию ядра выполнения. Это значение установлено по умолчанию. Сборщик мусора сервера предназначен для максимальной пропускной способности. Кроме того, сборщик мусора сервера масштабируется для обеспечения высокой производительности. Этот сборщик мусора выделяет память, а затем освобождает память для обеспечения высокой производительности системы. Таким образом, компьютер, на котором работает сервер BizTalk Server вместе с некоторыми компонентами .NET Framework, может иметь утечку памяти. Однако в этом сценарии ожидаемое поведение является самым высоким уровнем использования памяти. Если на компьютере не хватает системной памяти или процесс перестает работать из-за недостаточного количества адресов памяти, может существовать условие утечки памяти.

Если компьютер, на котором работает сервер BizTalk Server, является однопроцессорной системой, .NET Framework использует версию подсистемы выполнения для рабочей станции. Это поведение по умолчанию. Алгоритм выделения сборщика мусора рабочей станции не предназначен для масштабирования или максимальной пропускной способности. Этот сборщик мусора использует параллельные методы сборщика мусора. Эти методы предназначены для приложений с сложными пользовательскими интерфейсами. Такие приложения могут требовать более агрессивной сборки мусора.

В этот раздел, описание метода или задачи включены действия, содержащие указания по изменению параметров реестра. Однако при неправильном изменении реестра могут возникать серьезные проблемы. Таким образом, необходимо внимательно выполнить эти действия. Для дополнительной защиты создайте резервную копию реестра, прежде чем редактировать его. Так вы сможете восстановить реестр, если возникнет проблема. Для получения дополнительных сведений о резервном копировании и восстановлении реестра ознакомьтесь со статьей резервное копирование и восстановление реестра в Windows.

В некоторых случаях может потребоваться запуск в многопроцессорной системе версии рабочей станции. Можно использовать следующий раздел реестра, чтобы перейти к версии ядра выполнения, рабочей станции.

BizTalk 2006 и более поздние версии

Создайте следующий CRL Hosting строковый раздел реестра с соответствующими значениями:

  • Разделе HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\BTSSvc$BizTalkHostName\CLR Hosting
  • Имя значения: тип
  • Данные значения: WKS

BizTalk 2004

Создайте следующий CRL Host строковый раздел реестра с соответствующими значениями:

  • Разделе HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\BTSSvc\CLR Hosting
  • Имя значения: тип
  • Данные значения: WKS

Ниже приведены распространенные причины и способы их устранения.

Пороги регулирования использования процессов и физической памяти

Пороги использования памяти процесса и регулирования использования физической памяти можно изменить в BizTalk Server 2006 и более поздних версиях.

По умолчанию для параметра регулирования использования памяти процесса задано значение 25. Если это значение превышено, а использование памяти для процесса BizTalk превышает 300 МБ, может произойти условие регулирования. На сервере 32 бит можно увеличить значение использования памяти процесса до 50. На 64 разрядном сервере это значение можно увеличить до 100. Это позволяет процессу BizTalk увеличить потребление памяти перед регулированием.

Пороговое значение регулирования использования физической памяти имеет значение, заданное по умолчанию: 0. Это пороговое значение измеряет общий объем системной памяти. Таким образом, если настроено значение, отличное от 0, это может произойти, если процесс, не являющийся BizTalk, использует высокую память.

Порог регулирования для восстановления

Пороговые значения, используемые по умолчанию при восстановлении памяти, могут привести к чрезмерному чрезмерному восстановлению при запуске согласований на 64 разрядном узле. Дополнительные сведения об этой ошибке приведены в разделе свойства по умолчаниюдля восстановления.

64 — битовые узлы поддерживаются в BizTalk Server 2006 и более поздних версиях.

На эквивалентном оборудовании в 32-разрядном экземпляре узла, наблюдаемое значение, которое используется при выполнении одних и тех же согласований, является номинальным по умолчанию с использованием порогов регулирования.

Так как 64-разрядная архитектура обеспечивает расширенное адресное пространство памяти (16 ТБ вместо 4 ГБ), 64-разрядный экземпляр узла выделяет больше памяти, чем 32-разрядные экземпляры узла. Это может привести к превышению порогового значения регулирования памяти по умолчанию.

Чтобы обойти эту проблему, измените значения виртуалмеморисроттлингкритериа и приватемеморисроттлингкритериа в файле BTSNTSvc64.exe.config. Используйте счетчики системного монитора \Процесс\виртуал bytes и \Процесс\привате bytes, чтобы определить максимальный объем памяти, выделенный экземпляром согласования.

Задайте для обоих свойств значение оптималусаже в соответствии со следующими сведениями:

  • Виртуалмеморисроттлингкритериа: \процесс\виртуал байтов значение + 10%
  • Приватемеморисроттлингкритериа: \процесс\привате байтов значение + 10%

Задайте для обоих свойств максималусаже значение оптималусаже + 30%

Например, если значение счетчика \Процесс\виртуал Byte Performance Monitor для экземпляра оркестрации составляет 5 784 787 695 байт (5 517 МБ), задайте значение оптималусаже для виртуалмеморисроттлингкритериа равным 6 069 мб (5 784 787 695 * 1,10 = 6 363 266 464,5 байт).

Установите значение максималусаже для виртуалмеморисроттлингкритериа равным 7 889 мб (6 363 266 464,5 * 1,30 = 8 272 246 403,85 байт).

Если значение счетчика \Процесс\привате bytes Performance Monitor составляет 435689400 байт (415 МБ), задайте значение оптималусаже для приватемеморисроттлингкритериа равным 457 мб (435689400 * 1,10 = 479258340 байт).

Установите значение максималусаже для приватемеморисроттлингкритериа равным 594 мб (479258340 * 1,30 = 623035842).

Для этого примера в файле BTSNTSvc64.exe.config будут указаны следующие значения для сокращения регулирования.

Счетчик системного монитора Выделенная память оптималусаже максималусаже
Байты \Процесс\виртуал 5 784 787 695 байт (5517 МБ) 6069 7889
Байты \Процесс\привате 435 689 400 байт (415 МБ) 457 594

Затем эти значения будут представлены в файле BTSNTSvc64.exe.config следующим образом:

Чтобы определить, на каком экземпляре узла работает согласование, можно выполнить обработку идентификатора в счетчиках монитора \Бизталк: Мессагинг\ид Process и \Процесс\ид Process. Затем проверьте среднее значение, отображаемое для счетчиков системного монитора \Процесс\виртуал Bytes and \Процесс\привате bytes.

Сведения, которые пользователь должен заметить даже в том случае, если высокая степень восстановления Скиммингсе может привести к значительному снижению производительности при BizTalkMsgBoxDb выполнении базы данных на сервере SQL server 2008.

Пакеты обновления и накопительные пакеты обновления для BizTalk Server

Пакеты обновления и накопительные пакеты обновления для BizTalk Server включают последние исправления. Сюда входят те, которые влияют на известные System.OutOfMemoryException проблемы.

хеапдекоммитфриблокксрешолд

По умолчанию HeapDeCommitFreeBlockThreshold значение параметра реестра равно 0. Значение 0 означает, что диспетчер кучи отменяет каждую доступную страницу 4 килобайт (КБ). Операции отмены фиксации могут привести к фрагментации виртуальной памяти. Размер HeapDeCommitFreeBlockThreshold параметра в диспетчере кучи зависит от типа работы, выполняемой системой. Размер 0x00040000 является рекомендуемым начальным значением.

Прежде чем изменять значение раздела реестра, примите во внимание следующие сведения HeapDeCommitFreeBlockThreshold :

  • Это изменение относится только к проблемам с фрагментированием памяти.
  • Это изменение относится ко всей системе. Поэтому большинство процессов будет использовать больше памяти при запуске.
  • Это изменение следует учитывать только для тех систем, у которых есть сервер BizTalk Server в качестве основной задачи.

Чтобы уменьшить фрагментацию виртуальной памяти, можно увеличить размер HeapDeCommitFreeBlockThreshold параметра в диспетчере кучи, изменив значение следующего раздела реестра в разделе HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager :

  • Имя значения: Хеапдекоммитфриблокксрешолд
  • Тип значения: REG_DWORD
  • Data Value: 0x00040000 (рекомендуемое начальное значение).
  • Значение по умолчанию: отсутствует

Операции преобразования

Когда BizTalk Server выполняет операции преобразования XML на достаточно больших сообщениях в порте получения, в порте отправки или в XLANG XSL преобразования загружаются все сообщения в памяти.

Чтобы устранить проблему, воспользуйтесь одним из указанных ниже способов.

  • Сократите количество сообщений, обрабатываемых сервером BizTalk Server одновременно.
  • Уменьшите размер XML-сообщения, которое преобразуется.

System.Policy.Security.Evidence Объект часто используется в преобразованиях и может занимать большой объем памяти. Если карта содержит скрипты functoid , использующие встроенные C# (или любые другие встроенные языки), сборка создается в памяти. System.Policy.Security.Evidence Объект использует объект фактической сборки вызова. В этом случае создается корневой объект, который не удаляется до перезапуска службы BizTalk.

Большая часть BizTalk по умолчанию functoids реализована в виде встроенного скрипта. Эти элементы могут привести к System.Byte[] сбору объектов в памяти. Чтобы свести к минимуму потребление памяти, рекомендуется поместить любую карту, которая использует их, functoids в небольшую сборку. Затем сослаться на эту сборку. Используйте приведенную ниже диаграмму, чтобы определить, какой functoids сценарий используется встроенным сценарием, а functoids не с помощью встроенного скрипта.

Во втором столбце Да означает, что он functoid реализован в виде встроенного скрипта и что он приведет к System.Byte[] сбору объектов в памяти. Нет означает, что это functoid не реализовано в виде встроенного скрипта и не приведет к System.Byte[] сбору объектов в памяти.

функтоидс Встроенные скрипты?
Все строковые Функтоидс Да
Все математические Функтоидс Да
Все логические Функтоидс, за исключением Иснил Да
Логическая Иснил функтоид Нет
Все даты и время Функтоидс Да
Все Функтоидс преобразования Да
Все научные Функтоидс Да
Все накопительные Функтоидс Да
Все базы данных Функтоидс Нет
Расширенные Функтоидс Встроенные скрипты?
Циклическое функтоид Нет
Функтоид сведение по сопоставлению значений Нет
Утверждение функтоид Нет
Средство извлечения таблиц функтоид Нет
Циклическая таблица функтоид Нет
Написание сценариев функтоид с помощью встроенного языка C # Да
Написание скриптов функтоид с помощью встроенного JScript.NET Да
Написание скриптов для функтоид с помощью встроенного Visual Basic .NET Да
Написание скриптов для функтоид с помощью встроенного XSLT Нет
Создание сценариев функтоид с помощью встроенного шаблона XSLT-вызова Нет
Выполнение скрипта для внешней сборки функтоид вызовов Нет
Пустое значение функтоид Нет
Функтоид сопоставления значений Нет
Массовое копирование функтоид Нет
Итерация функтоид Нет
Функтоид индекса Нет
Число записей функтоид Нет

BizTalk Server 2006 и более поздние версии значительно улучшают управление памятью для больших документов. Для этого BizTalk Server реализует Настраиваемое пороговое значение размера сообщения для загрузки документов в память во время операций преобразования. По умолчанию пороговое значение размера сообщения составляет 1 МБ. Для получения дополнительных сведений о параметре Трансформсрешолд посетите страницу обработки больших сообщений в BizTalk Server.

Большие значения атрибутов и значения больших элементов

Когда сервер BizTalk Server выполняет конвейер приема или конвейер отправки для XML-документа, полезная нагрузка обрабатывается в памяти, если документ содержит одну или несколько из следующих сущностей:

  • Большие значения атрибутов
  • Значения больших элементов
  • Крупный атрибут или теги элементов

Чтобы устранить эту проблему, ограничьте размер этих сущностей. Если этот метод невозможен, убедитесь, что экземпляр BizTalk HOST не обрабатывает несколько документов одновременно.

Настраиваемые компоненты процесса продаж

Вы используете пользовательский компонент конвейера, загружающий весь поток в память. Все компоненты, входящие в состав сервера BizTalk Server, за исключением преобразований, поддерживают потоковую передачу. Эти компоненты не используют столько памяти во время потоковой передачи. Однако пользовательские компоненты конвейера могут не поддерживать потоковую передачу.

Потоковая передача в условиях большой нагрузки

При интенсивной нагрузке на узлы отправки недостаточно памяти. BizTalk Server отправляет конвейеры и отправляет адаптеры для поддержки потоковой передачи. В потоковой передаче каждый компонент загружает небольшой фрагмент потока в память. Так как каждое сообщение содержит другие структуры данных, а также контекст сообщения, который может быть значительным или небольшим, это поведение влияет на поведение сервера BizTalk при большой нагрузке.

Поведение сервера BizTalk Server зависит от того, что обработчик загружает предварительно настроенное количество сообщений. Количество сообщений, загружаемых ядром, зависит от значений, которые отображаются в полях ловватермарк и хигхватермарк Adm_serviceClass таблицы. Adm_serviceClass Таблица находится в базе данных управления BizTalk. Эти значения управляют количеством сообщений, которые сервер BizTalk обрабатывает или отправляет одновременно.

Значение хигхватермарк — это общее количество сообщений, обрабатываемых ядром одновременно. Значение по умолчанию — 200 сообщений на ЦП. Таким образом, на 8-процессорном сервере Узел отправки попытается обрабатывать сообщения 1 600 (200 * 8) одновременно.

Если предполагается, что каждое сообщение равно 50 КБ, то оно будет равно 80 МБ (1 600 * 50 = 80000 КБ).

Чтобы устранить эту проблему, можно изменить значение хигхватермарк и значение ловватермарк в базе данных. Значения, которые вы используете, зависят от размера сообщений. Для сервера BizTalk Server 2006 и более поздних версий можно изменить параметры регулирования узла по умолчанию.

Попытаться упростить эту задачу

Если определена утечка памяти, попробуйте определить причину, удалив пользовательские компоненты или выполнив сопоставление. Кроме того, попробуйте воспроизвести ошибку с помощью простого согласования или простого решения. Как правило, следует создавать отдельные узлы получения для адаптеров получения. Кроме того, необходимо создать отдельные узлы отправки для адаптеров отправки. При использовании этого метода каждый адаптер может работать в отдельном процессе. Таким образом, если в процессе BizTalk Server возникают условия нехватки памяти, вы узнаете, какие компоненты задействованы.

Действия по устранению неполадок

Для устранения неполадок, связанных с нехватка памяти, используйте средство диагностики отладки для мониторинга выделения памяти с течением времени. Средство диагностики отладки может создавать и анализировать файл дампа утечки памяти (DMP). При устранении неполадок с утечками памяти необходимо присоединить Leaktrack.dll , прежде чем высокая память будет воспроизведена для захвата роста памяти с течением времени. Leaktrack.dll входит в состав средства диагностики отладки.

Установите средство диагностики отладки.

Следующий файл доступен для скачивания из центра загрузки Майкрософт:
Загрузить пакет средства диагностики отладки

Для получения дополнительных сведений о том, как скачать файлы поддержки Майкрософт, ознакомьтесь со статьей Получение файлов поддержки Майкрософт из веб-служб.

Корпорация Майкрософт проверила этот файл на наличие вирусов. Корпорация Майкрософт использовала последнее антивирусное программное обеспечение, которое было доступно на момент публикации файла. Файл хранится на серверах с расширенными возможностями безопасности, которые помогают предотвратить несанкционированные изменения файла.

Используйте системный монитор для сбора данных о производительности системы. Эти данные могут предоставлять важные показатели эффективности среды BizTalk Server. Цель состоит в том, чтобы собрать производительность процесса с течением времени. Поэтому включите ведение журнала системного монитора, прежде чем произойдет утечка памяти.

Использование журнала системного монитора

В следующих разделах описано, как использовать ведение журнала системного монитора.

Выбор данных для ведения журнала

Чтобы выбрать данные для ведения журнала, используйте метод, соответствующий вашей операционной системе:

    Для Windows Server 2008 и Windows Server 2008 R2

В меню Администрирование откройте Монитор надежности и производительности.

Щелкните правой кнопкой мыши системный монитор, щелкните создать , а затем выберите группу сборщиков данных.

В поле имя введите описательное имя, а затем нажмите кнопку Далее.

Запишите корневой каталог и нажмите кнопку Далее.

Выберите запустить группу сборщиков данных сейчаси нажмите кнопку Готово.

Разверните узел группы сборщиков данных, разверните элемент Определение пользователя , а затем выберите нужный файл.

Щелкните правой кнопкой мыши Журнал системного монитораи выберите пункт свойства.

Нажмите кнопку Добавить на вкладке счетчики производительности . Выберите следующие объекты и нажмите кнопку Добавить после выбора каждого объекта:

  • Исключения среды CLR .NET
  • Память CLR .NET
  • BizTalk: обмен сообщениями
  • BizTalk: ТДДС
  • Память
  • Процесс
  • Процессор
  • Согласование КСЛАНГ/s

Если SQL Server является локальным, добавьте также следующие объекты:

  • SQLServer: базы данных
  • SQLServer: Общая статистика
  • SQLServer: диспетчер памяти

Нажмите кнопку ОК.

Измените значение поля интервал для выборки на 5 секунд.

Значение интервала выборки и время начала отслеживания — субъективный. Эти значения зависят от того, когда утечка памяти воспроизводится. Так как файл журнала может быть большим, укажите интервал, в который вы можете получить информацию, не перебрасывая сервер.

Нажмите кнопку ОК.

Чтобы остановить сбор данных, нажмите кнопку остановить в меню Action (действие ).

Для Windows Server 2003 или Windows XP

Разверните раздел журналы и оповещения производительности.

Щелкните правой кнопкой мыши журналы счетчикови выберите пункт новые параметры журнала. Откроется диалоговое окно » Создание параметров журнала «.

В поле имя введите описательное имя, а затем нажмите кнопку ОК.

Запишите путь к файлу журнала. (Вы также можете щелкнуть вкладку файлы журнала , а затем выбрать Настройка , чтобы изменить расположение файла журнала.)

Нажмите кнопку Добавить счетчики.

Выберите все счетчики и все экземпляры.

В списке объект производительности выберите следующие объекты. Нажмите кнопку Добавить после выбора каждого объекта.

  • Исключения среды CLR .NET
  • Память CLR .NET
  • BizTalk: обмен сообщениями
  • BizTalk: ТДДС
  • Память
  • Процесс
  • Процессор
  • Согласование КСЛАНГ/s

Если SQL Server является локальным, добавьте также следующие объекты:

  • SQLServer: базы данных
  • SQLServer: Общая статистика
  • SQLServer: диспетчер памяти

Нажмите кнопку Закрыть.

Измените значение интервала выборки данных на 5 секунд.

Значение интервала выборки данных и время начала отслеживания — субъективный. Эти значения зависят от того, когда утечка памяти воспроизводится. Так как файл журнала может быть большим, укажите интервал, в который вы можете получить информацию, не перебрасывая сервер.

Нажмите кнопку ОК. Чтобы остановить сбор данных, щелкните правой кнопкой мыши имя журнала счетчика и выберите команду остановить.

Получение файла дампа

Чтобы получить файл дампа, воспользуйтесь одним из указанных ниже способов.

Способ 1: автоматический

Для захвата дампа памяти рекомендуется создать правило утечки памяти и обработку с помощью Дебугдиаг. Правило утечки памяти и обработкиLeaktrack.dllавтоматически прикрепляет * *. Используется для отслеживания выделения памяти. Чтобы создать правило утечки памяти и обработки утечек, выполните следующие действия:

Запустите средство диагностики отладки 1,1.

Выберите память и утечку дескрипторов, а затем нажмите кнопку Далее.

Выберите процесс Btsntsvc.exe, а затем нажмите кнопку Далее.

На странице » Настройка правила утечек » выполните следующие действия:

Установите флажок начать отслеживание памяти немедленно, когда правило активируется . В противном случае вы можете указать время прогрева до того, как LeakTrack.dll будет вставлен в процесс BTSNTSvc.exe.

Нажмите кнопку настроить, а затем выполните указанные ниже действия.

Подтвердите, что выбрано правило аварийного восстановления. При выборе этого параметра дамп памяти будет создан автоматически, если процесс BTSNTSvc.exe прекратится.

Установите флажок создать Userdump при достижении виртуального байта и оставьте значение по умолчанию 1024.

Установите флажок и все дополнительные флажки и оставьте значение по умолчанию 200. При выборе параметра достижимости виртуального байта дамп памяти будет автоматически создан при использовании виртуальной памяти 1024 МБ. Если размер виртуальной памяти увеличивается на 200 МБ, будет автоматически создан другой дамп памяти.

Нажмите кнопку сохранить & закрыть.

Нажмите кнопку Далее.

На странице » Выбор расположения и имени правила » нажмите кнопку Далее.

Путь к файлу дампа также можно изменить в поле Расположение Userdump на этой странице.

Нажмите кнопку Готово , чтобы сделать правило активным.

Состояние правила теперь отслеживается. При каждом создании дампа памяти его значение увеличится в столбце » число Userdump » на вкладке » правила «. По умолчанию используется расположение дампа памяти C:\Program Files\DebugDiag\Logs .

Способ 2: вручную

Вы также можете вручную присоединить Leaktrack.dll и получить файл дампа памяти вручную. Это позволяет управлять моментом создания дампа памяти. Для этого выполните следующие действия:

  1. Запустите средство диагностики отладки 1,1.
  2. Выберите вкладку Процессы.
  3. Щелкните процесс Btsntsvc.exe правой кнопкой мыши и выберите пункт Отслеживание утечек.
  4. В диалоговом окне средство отладки диагностики нажмите кнопку Да, а затем нажмите кнопку ОК.

Создайте правило аварийного восстановления для наблюдения за одним Btsntsvc.exe процессом в случае остановки процесса до создания дампа памяти:

  1. Запустите средство диагностики отладки 1,1.
  2. Выберите сбой, а затем нажмите кнопку Далее.
  3. Выберите конкретный процесс, а затем нажмите кнопку Далее.
  4. Выберите один и тот же процесс Btsntsvc.exe, а затем нажмите кнопку Далее.
  5. На странице Расширенная конфигурация (необязательно) нажмите кнопку Далее.
  6. В диалоговом окне Выбор расположения дампа и имени правила (необязательно) нажмите кнопку Далее.
  7. Выберите активировать правило, а затем нажмите кнопку Готово.

Когда процесс достигает 60 процентов до 80 процентов оперативной памяти, щелкните процесс Btsntsvc.exe правой кнопкой мыши и выберите команду создать полную Userdump. Если процесс BizTalk завершается до того, как вы сможете создать дамп пользователя, правило сбоя вступит в силу и создаст дамп памяти.

Остановить ведение журнала системного монитора

Если вы захватываете дамп памяти и данные системного монитора, остановите ведение журнала системного монитора около двух минут после создания дампа памяти.

Анализ файла дампа

Для определения причины утечки памяти можно использовать средство диагностики отладки для анализа файла дампа. Для этого выполните следующие действия:

  1. Перейдите на вкладку Расширенный анализ .
  2. Нажмите кнопку Добавить файлы данныхи найдите DMP файл.
  3. Выберите скрипт анализа нехватки памяти и нажмите кнопку начать анализ.

По умолчанию при завершении анализа в папке будет создан файл отчета об анализе (файл с расширением MHT) C:\Program Files\DebugDiag\Reports . Файл отчета также будет отображаться в браузере. Файл отчета содержит результаты анализа. Кроме того, в файле отчета могут содержаться рекомендации по устранению утечек памяти.

При использовании настраиваемых библиотек DLL можно добавить путь к настраиваемым PDB-файлам для анализа. Для этого выполните следующие действия:

  1. Откройте средство диагностики отладки.
  2. В меню Сервис выберите пункт Параметры и параметры.
  3. В поле путь поиска символов для отладки введите путь к символам.

Если вам нужна помощь по анализу файла дампа, обратитесь в службу поддержки пользователей Майкрософт. Чтобы получить полный список номеров телефонов служб поддержки клиентов и сведения о затратах на поддержку, перейдите в службу поддержки.

Перед обращением в службу поддержки пользователей необходимо сжать файл дампа, журнал системного монитора, файл отчета анализа и обновленные журналы событий (evt-файлы). Вам может потребоваться отправить эти файлы в инженер службы поддержки BizTalk Server.

Читайте также:  Как установить ftp сервер linux
Оцените статью