Гость
Форумы / WCF, Web Services, Remoting [игнор отключен] [закрыт для гостей] / Как найти где течет память? / 19 сообщений из 19, страница 1 из 1
15.12.2015, 11:45
    #39128260
Cat2
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как найти где течет память?
Есть служба на WCF. Служба диагностирует рабочие станции разными способами, используя

System.Management (WMI и PowerShell)
System.Diagnostics (Счетчики производительности)
System.DirectoryServices (Чтение из Active Directory)
System.IO; (Проверка наличия файлов)
Microsoft.Win32.RegistryKey (Чтение реестра)
Sysrem.Net (Сканирование портов)

Всякие настройки служба получает из базы MS SQL. Так в эту базу и пишутся в нее логи.

Пиковая нагрузка - 400 вызовов в секунду. Средняя - 50.

Память течет со страшной силой.
Сейчас за 5 часов занимаемая оперативная память выросла с 40 килобайт, до 900 килобайт.

Как найти где течет?
...
Рейтинг: 0 / 0
15.12.2015, 11:59
    #39128282
vagner
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как найти где течет память?
Cat2, COM (если используется) везде диспозишь?
...
Рейтинг: 0 / 0
15.12.2015, 12:00
    #39128284
SergMCMLXXX
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как найти где течет память?
А если в консольном виде запустить, тоже течёт?
...
Рейтинг: 0 / 0
15.12.2015, 12:23
    #39128325
Axeleron
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как найти где течет память?
Cat2Есть служба на WCF. Служба диагностирует рабочие станции разными способами, используя

System.Management (WMI и PowerShell)
System.Diagnostics (Счетчики производительности)
System.DirectoryServices (Чтение из Active Directory)
System.IO; (Проверка наличия файлов)
Microsoft.Win32.RegistryKey (Чтение реестра)
Sysrem.Net (Сканирование портов)

Всякие настройки служба получает из базы MS SQL. Так в эту базу и пишутся в нее логи.

Пиковая нагрузка - 400 вызовов в секунду. Средняя - 50.

Память течет со страшной силой.
Сейчас за 5 часов занимаемая оперативная память выросла с 40 килобайт, до 900 килобайт.

Как найти где течет?
Чаще всего память течет из-за не использования IDisposable объектов, поддерживающих этот интерфейс нативно. Это можно узнать либо через испектирование имплементации класса, либо использования конструкции using(). Но это в очень общих и грубых чертах.
...
Рейтинг: 0 / 0
15.12.2015, 12:24
    #39128327
Axeleron
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как найти где течет память?
Cat2System.Management (WMI и PowerShell)
System.Diagnostics (Счетчики производительности)
System.DirectoryServices (Чтение из Active Directory)
System.IO; (Проверка наличия файлов)
Microsoft.Win32.RegistryKey (Чтение реестра)
Sysrem.Net (Сканирование портов)

Всякие настройки служба получает из базы MS SQL. Так в эту базу и пишутся в нее логи.
Сходу, думаю в первыую очередь стОит проверить выделенное - так как объекты для работы с БД и файловой системой/сериализацией чаще всего дают 'течь'.
...
Рейтинг: 0 / 0
15.12.2015, 12:52
    #39128385
Cat2
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как найти где течет память?
vagnerCat2, COM (если используется) везде диспозишь?
COM не использую


SergMCMLXXXА если в консольном виде запустить, тоже течёт?
Сейчас попробую


AxeleronСходу, думаю в первыую очередь стОит проверить выделенное - так как объекты для работы с БД и файловой системой/сериализацией чаще всего дают 'течь'.
все вызовы обернуты в using создания коннекта
...
Рейтинг: 0 / 0
15.12.2015, 12:56
    #39128395
Axeleron
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как найти где течет память?
Cat2все вызовы обернуты в using создания коннекта
Не только коннекты надо оборачивать в using. EF или Sql команды используются?
...
Рейтинг: 0 / 0
15.12.2015, 13:15
    #39128427
buser
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как найти где течет память?
Cat2COM не использую
Блажен кто верует...
Возьмите какойнить профайлер... и посмотрите... кто память жрет...
Cat2Есть служба на WCF. Служба диагностирует рабочие станции разными способами, используя
Эм... это как? Я к тому, что интересная у вас архитектура... кто службу-то хостит?
P.S.: гадать можно до бесконечности...
...
Рейтинг: 0 / 0
15.12.2015, 13:27
    #39128455
Winnipuh
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как найти где течет память?
Cat2Есть служба на WCF. Служба диагностирует рабочие станции разными способами, используя

System.Management (WMI и PowerShell)
System.Diagnostics (Счетчики производительности)
System.DirectoryServices (Чтение из Active Directory)
System.IO; (Проверка наличия файлов)
Microsoft.Win32.RegistryKey (Чтение реестра)
Sysrem.Net (Сканирование портов)

Всякие настройки служба получает из базы MS SQL. Так в эту базу и пишутся в нее логи.

Пиковая нагрузка - 400 вызовов в секунду. Средняя - 50.

Память течет со страшной силой.
Сейчас за 5 часов занимаемая оперативная память выросла с 40 килобайт, до 900 килобайт.

Как найти где течет?

Надо взять профайлер от redgate, у них 14 дней триала, и посмотреть кто и что жрет
...
Рейтинг: 0 / 0
15.12.2015, 14:02
    #39128530
ЕвгенийВ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как найти где течет память?
Cat2Сейчас за 5 часов занимаемая оперативная память выросла с 40 килобайт, до 900 килобайт.

Ну и чего? Где причина для паники и саботажа?
...
Рейтинг: 0 / 0
15.12.2015, 14:07
    #39128543
Cat2
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как найти где течет память?
ЕвгенийВCat2Сейчас за 5 часов занимаемая оперативная память выросла с 40 килобайт, до 900 килобайт.

Ну и чего? Где причина для паники и саботажа?
Я ошибся. Речь не про килобайты, а про мегабайты
...
Рейтинг: 0 / 0
15.12.2015, 14:13
    #39128551
skyANA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как найти где течет память?
ЕвгенийВCat2Сейчас за 5 часов занимаемая оперативная память выросла с 40 килобайт, до 900 килобайт.

Ну и чего? Где причина для паники и саботажа?+1

Но если так хочется, то снимаете дамп с процесса и отлаживыайте память в Visual Studio Ultimate, или при помощи WinDbg, или ClrMD.

Также можно попробовать приатачится к процессу при помощи той же студии, или CLR Profiler от Microsoft, или ANT Memory Profiler от Read Gate, или dotMemory от JetBrains, или .NET Memory Profiler от SciTech.
...
Рейтинг: 0 / 0
15.12.2015, 14:14
    #39128555
Cat2
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как найти где течет память?
AxeleronCat2все вызовы обернуты в using создания коннекта
Не только коннекты надо оборачивать в using. EF или Sql команды используются?
Команды тоже обернуты
...
Рейтинг: 0 / 0
15.12.2015, 14:15
    #39128558
skyANA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как найти где течет память?
Cat2ЕвгенийВпропущено...

Ну и чего? Где причина для паники и саботажа?
Я ошибся. Речь не про килобайты, а про мегабайты Для начала включите Performance Monitor на сервере и посмотрите динамику изменения расхода управляемой памяти.
Если она продолжает постоянно расти, то утечка, а если тупо вышла на некий уровень, то ничего страшного, просто код насоздавал вот столько объектов.
...
Рейтинг: 0 / 0
15.12.2015, 14:18
    #39128563
Cat2
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как найти где течет память?
buserCat2COM не использую
Блажен кто верует...
Возьмите какойнить профайлер... и посмотрите... кто память жрет...
Cat2Есть служба на WCF. Служба диагностирует рабочие станции разными способами, используя
Эм... это как? Я к тому, что интересная у вас архитектура... кто службу-то хостит?
P.S.: гадать можно до бесконечности...
Пользователь с веб-страницы вызывает через AJAX вызывает веб-сервисы. Веб-сервисы по именованным каналам вызывают службу.
Скуль, служба и IIS крутятся на одном сервере. Ни скуль, ни IIS больше положенного не жрут
...
Рейтинг: 0 / 0
15.12.2015, 14:19
    #39128566
skyANA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как найти где течет память?
Cat2Axeleronпропущено...

Не только коннекты надо оборачивать в using. EF или Sql команды используются?
Команды тоже обернутыТолько пристальным взглядом на код искать не эффективно. Снимите дамп и проанализируйте.
...
Рейтинг: 0 / 0
15.12.2015, 14:21
    #39128568
Cat2
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как найти где течет память?
skyANACat2пропущено...

Я ошибся. Речь не про килобайты, а про мегабайты Для начала включите Performance Monitor на сервере и посмотрите динамику изменения расхода управляемой памяти.
Если она продолжает постоянно расти, то утечка, а если тупо вышла на некий уровень, то ничего страшного, просто код насоздавал вот столько объектов.
Ползет все время вверх, пока не забивает всю оперативку. Я просто не рискнул продолжать дальше смотреть когда файл подкачки расти начнет
...
Рейтинг: 0 / 0
15.12.2015, 14:32
    #39128591
skyANA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как найти где течет память?
...
Рейтинг: 0 / 0
15.12.2015, 14:33
    #39128592
skyANA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как найти где течет память?
...
Рейтинг: 0 / 0
Форумы / WCF, Web Services, Remoting [игнор отключен] [закрыт для гостей] / Как найти где течет память? / 19 сообщений из 19, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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