У меня есть служба C# .NET, работающая в процессе производства. Служба функционирует как TCP-сервер, на который клиенты регистрируются и делают запросы. При взгляде на диспетчер задач он, похоже, протекает около 10 МБ/день. Я, кажется, не замечаю их в dev (возможно, из-за гораздо меньшей активности трафика и клиента). При поиске я читал, что диспетчер задач может быть серьезно ошибочным, но я не уверен, насколько это точно или в каких обстоятельствах TM отображает неверную информацию.Устранение утечки памяти в службе .NET.
Для решения этой проблемы мне необходимо более внимательно следить за потреблением памяти. Проблема состоит в том, что утечка кажется, кажется, только в производстве, где развернутая служба была создана для Release. Кроме того, поскольку это служба, которая не может быть напрямую запущена VS с подключенным профилировщиком/отладкой, я не уверен, как лучше всего определить проблему с чем-то более точным, чем TM.
Любая групповая мудрость была бы высоко оценена, спасибо.
EDIT:
- Я добавил системный монитор счетчики для рядовых байт службы (7MB начать), а также CLR ает во всех кучах (30MB начать)
- Диспетчера задача говорит, что общая память составляет ~ 37 МБ, поэтому кажется, что это имеет смысл.
- Первой частью этого является предоставление услуги в течение дня и проверка моих счетчиков снова.
Если мои личные байты становятся огромными, но CLR mem примерно статичен, это указывает на неуправляемую утечку. Если оба становятся огромными, то это управляемая утечка.
Спасибо, ребята.
Почему бы не запустить сборку выпуска в тестовом режиме, чтобы увидеть, можете ли вы воспроизвести утечку? Это шаг 1. Идентификация утечки будет шагом 2 (с использованием профайлера памяти). – Oded
Я сделал это. К сожалению, объем трафика на порядок выше на порядок ниже. Таким образом, утечка менее очевидна. – kmarks2