MSMQ BeginPeek/PeekCompleted утечка памяти

При использовании Microsoft MessageQueue возникает утечка памяти, связанная с событием PeekCompleted. Я нашел связанный вопрос об обмене экспертами с 2005 года, но без правильного ответа / решения: http://www.experts-exchange.com/Programming/Misc/Q_21387840.html

Используя ANTS Memory Profiler, я вижу, что я получаю дополнительные закрепленные экземпляры Byte[], Int32[], System.Messaging.Interop.MQPROPVARIANTS[] и System.Threading.OverlappedData каждый раз, когда запускается PeekCompleted.

Цепочка ссылок: Byte[]

Мы уверены, что мы правильно используем MSMQ, и экспериментировали с разными вещами, такими как проверка расположения входящего объекта Message, точный вызов EndPeek и т. Д., Но не повезло. До сих пор не было написано простого кода, чтобы точно определить проблему, но, вероятно, это мой следующий шаг. Очевидно, есть вероятность, что мы используем его неправильно, но сейчас мы думаем, что на самом деле есть проблема с MSMQ. Утечка небольшая, но со временем она накапливается.

У кого-нибудь есть идеи, как устранить эту утечку памяти? Подобные переживания?

1 ответ

Убедитесь, что вы звоните только BeginPeek один раз. У нас также была эта проблема:

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

Наше решение: мы добавили счетчик рядом с каждым вызовом BeginReceive и счетчик в обработчике для полученных сообщений и обнаружили, что после 10000 сообщений (только на 12) счетчик немного отличается (но этого достаточно, чтобы вызвать утечку памяти в 500 МБ). сочетание закрепленных ручек и фрагментации памяти).

Почему мы изначально пропустили ошибку: она, похоже, не возникает в.Net v2, но появилась, когда мы перешли на.Net v4 на 64-битной базе данных с многопоточностью на многопроцессорной машине.

Другие вопросы по тегам