Пам'ять, яка різко звільняється щодня приблизно в один і той же час


10

У мене є кілька віртуальних машин у Windows Azure, які запускають наш веб-сайт електронної комерції, і останнім часом ми почали використовувати Telegraf, InfluxDb та Grafana, щоб слідкувати за цими машинами. Після кількох тижнів збору даних я помітив дивну схему, пов’язану з метрикою " Доступна пам'ять" :

Щодня майже завжди в один і той же період дня я помічав, що вивільняється різка кількість пам'яті, яка через мої дуже обмежені навички DevOp не можу зрозуміти, що це викликає.

Ось діаграма, яка показує цю схему:

Непарний візерунок

Моє запитання: Що може призвести до подібного? Я відчуваю спокусу підозрювати, що витік пам'яті винен, але ... Вільна пам'ять ніколи не опускається нижче 70% і відбувається лише у двох віртуальних машинах з найбільшою кількістю трафіку!

Чи повинен я турбуватися, коли бачу щось подібне?

PS: Я дивився на збирання показників для приватних е-віртуальних байтів для кожного із служб Windows, який ми виконуємо, і для процесу w3wp ... хоча я прочитав, що ці показники не дуже надійні, щоб дізнатися, чи є у вас витік пам'яті, але, принаймні, я спробую отримати якусь тенденцію і побачити, чи вона співвідноситься із схемою, показаною вище.


2
Ви бачите звичайний збирач сміття чи кеш-пам'ять для чищення IMHO. Якою мовою зроблено ваш веб-сайт? (це може бути ваша програма, ваш веб-сервер і навіть система, яка проводить чистку)
Тенсібай

Це було те, що я теж підозрював ... Це робиться в ASP.NET MVC 4, тому теорія збору сміття має певний сенс. Крім того, зі сторони, показники, які я збирав під час процесу w3wp та служби Windows, виглядають абсолютно нормально.
António Sérgio Simões

Я майже нічого не знаю в ASP, але я припускаю, що є спосіб графічного споживання пам'яті та збору сміття, як у java, це повинно допомогти забезпечити це першопричиною.
Тенсібай

Відповіді:


7

Я бачив таку саму схему «пиляного зуба» в інших системах, зокрема інструменті даних на основі Java. Виходячи з вашого опису, я думаю, ви переглядаєте збирання сміття .NET (якщо припустити, що це .NET додаток.) ​​Java і .NET - це мови, що керуються пам'яттю, і рамки, які використовують збирання сміття.

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

Те, що це ваші сервери з найвищим трафіком, має сенс. Ви бачите, що .NET Framework виділяє пам'ять за потребою, тоді смітник збирається регулярно і повертає невикористану пам'ять за допомогою алгоритмів збору сміття. Якщо ви не відстежуєте конкретні проблеми з продуктивністю, я не думаю, що ця схема використання пам'яті не є проблемою.


Це дійсно .NET додаток, і з моїх досліджень за останні кілька днів має багато сенсу те, що ви та @Tensibai написали.
António Sérgio Simões

7

Я думаю, я з’ясував, чому цей графік виглядає так.

Я також збираю показники для лічильника загальної продуктивності додатків / помилок ASP.NET, і я помітив, що точно в той же час, коли трапляється сплеск пам’яті, показник Total Errors скидається на 0.

Згідно з повідомленням msdn, цей лічильник скидається до 0 кожного разу, коли відбувається перезапуск / відключення програми.

Це приводить мене до думки, що причина цієї картини пилових зубів, доступних для пам'яті, пов’язана з тим, що відбувається перезавантаження програми.

Ось як виглядають мої графіки:

Помилки Total ASP.NET додаток Сплеск пам’яті

ОНОВЛЕННЯ

Це відбувається тому, що приватні байти процесу W3WP досягли межі для переробки (у нас в пулі додатків налаштований ліміт приватних байтів). І придивившись уважно до діаграми приватних байтів, ми можемо побачити, що відбувається щось ненормальне, оскільки використання пам’яті стрибає від 650 МБ до 3,2 ГБ і через кілька годин стрибає з 3,6 ГБ до 16,6 ГБ! Це коли відбувається переробка.


2
Це набагато правдоподібніше пояснення. Раптове звільнення пам'яті відбувається майже виключно при перезапуску процесу. Механізми звільнення пам'яті запущених процесів ніколи не є такими різкими і рідко фактично звільняють пам'ять, а не звільняють деякий простір на попередньо виділеній купі.
Ірі Клоуда
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.