Administruję serwerem Windows 2008 (cóż, na Amazon EC2) z uruchomionymi usługami IIS i aplikacją sieciową .NET4. Któregoś dnia dostałem alert o pamięci i poszedłem i spojrzałem, i na pewno pamięć procesu powiększyła się z czasem przez jakiś powolny wyciek. Niewiele wzrosła, tak jak 60M do 200M, ale wystarczająco dużo działo się z pudełkiem, że przekroczyło nasz dość niski próg (75%), aby uruchomić monitor.
Po ponownym przetworzeniu puli aplikacji i zwolnieniu pamięci zauważyłem, że po przejrzeniu statystyk zauważyłem, że miejsce wymiany zostało znacznie wykorzystane i że więcej niż 1 GB zostało zwolnionych dzięki temu recyklingowi.
Może to podstawowe pytanie, ale jestem facetem z UNIX-em i jestem przyzwyczajony do tego, że nie przyzwyczajam się, dopóki nie zabraknie ci pamięci. To pole nigdy nie przekroczyło 75% użycia pamięci. Czy jest to rzecz związana z Windows, platformą .NET czy Amazon? Podejrzewam, że w tej aplikacji jest znacznie większy wyciek pamięci niż się spodziewałem - nie przecieka z 60M do 200M, przecieka z 60M do 1,2GB, ale znaczna część z tego robi się „zimna” i zmuszana do wymiany?
W puli aplikacji mam ustawiony recykling pamięci, ale włącza on pełną pamięć, więc ta aplikacja może stać się naprawdę duża, zanim zacznie się automatycznie.
Mógłbym skonfigurować regularny recykling na czas, ale to obejście. Poproszę programistę, aby naprawił aplikację, ale muszę zrozumieć, co się dzieje z użyciem wymiany, aby upewnić się, że rozumiem to dobrze.
Edytuj z większą ilością informacji: pamięć instancji: zamiana 1,7 GB: 4,5 GB
Widzę proces w3wp.exe w taskmgr pokazujący, że pamięć: 211,000k. Ale kiedy go zrestartowałem (znajduje się we własnej puli aplikacji i jest to jedyna aplikacja na pudełku), zużycie pamięci spadło do normalnego punktu początkowego wynoszącego 60 mln i jak zwolniono 1 GB + wymiany. W taskmgr właśnie miałem zwykłą statystykę Memory (prywatny zestaw roboczy), ale widziałem zmianę wymiany poprzez inne monitorowanie (Cloudkick). Cofając się i patrząc na to dzisiaj, pamięć wraca do 195M w procesie (łącznie 1,2 GB), a swap wkradł się z 1,0 GB do 1,1 GB, ale nie do końca, tam gdzie był (wykresy w czasie, to jest powolne pełzanie).
Nie martwię się o tę konkretną aplikację, a bardziej o zrozumienie, kiedy Windows zamienia się i jak z niej korzysta, oraz o co należy się martwić w związku z danym użyciem pamięci i zamiany systemu Windows.