|
Как найти где течет память?
|
|||
---|---|---|---|
#18+
Есть служба на 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 килобайт. Как найти где течет? ... |
|||
:
Нравится:
Не нравится:
|
|||
15.12.2015, 11:45 |
|
Как найти где течет память?
|
|||
---|---|---|---|
#18+
Cat2, COM (если используется) везде диспозишь? ... |
|||
:
Нравится:
Не нравится:
|
|||
15.12.2015, 11:59 |
|
Как найти где течет память?
|
|||
---|---|---|---|
#18+
А если в консольном виде запустить, тоже течёт? ... |
|||
:
Нравится:
Не нравится:
|
|||
15.12.2015, 12:00 |
|
Как найти где течет память?
|
|||
---|---|---|---|
#18+
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(). Но это в очень общих и грубых чертах. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.12.2015, 12:23 |
|
Как найти где течет память?
|
|||
---|---|---|---|
#18+
Cat2System.Management (WMI и PowerShell) System.Diagnostics (Счетчики производительности) System.DirectoryServices (Чтение из Active Directory) System.IO; (Проверка наличия файлов) Microsoft.Win32.RegistryKey (Чтение реестра) Sysrem.Net (Сканирование портов) Всякие настройки служба получает из базы MS SQL. Так в эту базу и пишутся в нее логи. Сходу, думаю в первыую очередь стОит проверить выделенное - так как объекты для работы с БД и файловой системой/сериализацией чаще всего дают 'течь'. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.12.2015, 12:24 |
|
Как найти где течет память?
|
|||
---|---|---|---|
#18+
vagnerCat2, COM (если используется) везде диспозишь? COM не использую SergMCMLXXXА если в консольном виде запустить, тоже течёт? Сейчас попробую AxeleronСходу, думаю в первыую очередь стОит проверить выделенное - так как объекты для работы с БД и файловой системой/сериализацией чаще всего дают 'течь'. все вызовы обернуты в using создания коннекта ... |
|||
:
Нравится:
Не нравится:
|
|||
15.12.2015, 12:52 |
|
Как найти где течет память?
|
|||
---|---|---|---|
#18+
Cat2все вызовы обернуты в using создания коннекта Не только коннекты надо оборачивать в using. EF или Sql команды используются? ... |
|||
:
Нравится:
Не нравится:
|
|||
15.12.2015, 12:56 |
|
Как найти где течет память?
|
|||
---|---|---|---|
#18+
Cat2COM не использую Блажен кто верует... Возьмите какойнить профайлер... и посмотрите... кто память жрет... Cat2Есть служба на WCF. Служба диагностирует рабочие станции разными способами, используя Эм... это как? Я к тому, что интересная у вас архитектура... кто службу-то хостит? P.S.: гадать можно до бесконечности... ... |
|||
:
Нравится:
Не нравится:
|
|||
15.12.2015, 13:15 |
|
Как найти где течет память?
|
|||
---|---|---|---|
#18+
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 дней триала, и посмотреть кто и что жрет ... |
|||
:
Нравится:
Не нравится:
|
|||
15.12.2015, 13:27 |
|
Как найти где течет память?
|
|||
---|---|---|---|
#18+
Cat2Сейчас за 5 часов занимаемая оперативная память выросла с 40 килобайт, до 900 килобайт. Ну и чего? Где причина для паники и саботажа? ... |
|||
:
Нравится:
Не нравится:
|
|||
15.12.2015, 14:02 |
|
Как найти где течет память?
|
|||
---|---|---|---|
#18+
ЕвгенийВCat2Сейчас за 5 часов занимаемая оперативная память выросла с 40 килобайт, до 900 килобайт. Ну и чего? Где причина для паники и саботажа? Я ошибся. Речь не про килобайты, а про мегабайты ... |
|||
:
Нравится:
Не нравится:
|
|||
15.12.2015, 14:07 |
|
Как найти где течет память?
|
|||
---|---|---|---|
#18+
ЕвгенийВCat2Сейчас за 5 часов занимаемая оперативная память выросла с 40 килобайт, до 900 килобайт. Ну и чего? Где причина для паники и саботажа?+1 Но если так хочется, то снимаете дамп с процесса и отлаживыайте память в Visual Studio Ultimate, или при помощи WinDbg, или ClrMD. Также можно попробовать приатачится к процессу при помощи той же студии, или CLR Profiler от Microsoft, или ANT Memory Profiler от Read Gate, или dotMemory от JetBrains, или .NET Memory Profiler от SciTech. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.12.2015, 14:13 |
|
Как найти где течет память?
|
|||
---|---|---|---|
#18+
AxeleronCat2все вызовы обернуты в using создания коннекта Не только коннекты надо оборачивать в using. EF или Sql команды используются? Команды тоже обернуты ... |
|||
:
Нравится:
Не нравится:
|
|||
15.12.2015, 14:14 |
|
Как найти где течет память?
|
|||
---|---|---|---|
#18+
Cat2ЕвгенийВпропущено... Ну и чего? Где причина для паники и саботажа? Я ошибся. Речь не про килобайты, а про мегабайты Для начала включите Performance Monitor на сервере и посмотрите динамику изменения расхода управляемой памяти. Если она продолжает постоянно расти, то утечка, а если тупо вышла на некий уровень, то ничего страшного, просто код насоздавал вот столько объектов. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.12.2015, 14:15 |
|
Как найти где течет память?
|
|||
---|---|---|---|
#18+
buserCat2COM не использую Блажен кто верует... Возьмите какойнить профайлер... и посмотрите... кто память жрет... Cat2Есть служба на WCF. Служба диагностирует рабочие станции разными способами, используя Эм... это как? Я к тому, что интересная у вас архитектура... кто службу-то хостит? P.S.: гадать можно до бесконечности... Пользователь с веб-страницы вызывает через AJAX вызывает веб-сервисы. Веб-сервисы по именованным каналам вызывают службу. Скуль, служба и IIS крутятся на одном сервере. Ни скуль, ни IIS больше положенного не жрут ... |
|||
:
Нравится:
Не нравится:
|
|||
15.12.2015, 14:18 |
|
Как найти где течет память?
|
|||
---|---|---|---|
#18+
Cat2Axeleronпропущено... Не только коннекты надо оборачивать в using. EF или Sql команды используются? Команды тоже обернутыТолько пристальным взглядом на код искать не эффективно. Снимите дамп и проанализируйте. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.12.2015, 14:19 |
|
Как найти где течет память?
|
|||
---|---|---|---|
#18+
skyANACat2пропущено... Я ошибся. Речь не про килобайты, а про мегабайты Для начала включите Performance Monitor на сервере и посмотрите динамику изменения расхода управляемой памяти. Если она продолжает постоянно расти, то утечка, а если тупо вышла на некий уровень, то ничего страшного, просто код насоздавал вот столько объектов. Ползет все время вверх, пока не забивает всю оперативку. Я просто не рискнул продолжать дальше смотреть когда файл подкачки расти начнет ... |
|||
:
Нравится:
Не нравится:
|
|||
15.12.2015, 14:21 |
|
Как найти где течет память?
|
|||
---|---|---|---|
#18+
Даже так: https://www.google.ru/webhp?sourceid=chrome-instant&ion=1&espv=2&ie=UTF-8#q=windbg wcf memory leak ... |
|||
:
Нравится:
Не нравится:
|
|||
15.12.2015, 14:33 |
|
|
start [/forum/topic.php?fid=19&msg=39128555&tid=1396814]: |
0ms |
get settings: |
10ms |
get forum list: |
11ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
33ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
61ms |
get tp. blocked users: |
2ms |
others: | 9ms |
total: | 148ms |
0 / 0 |