Jak ograniczyć pamięć używaną przez aplikację w IIS?

17

Procesy robocze IIS zajmują dużo pamięci na naszych serwerach. Chcę ograniczyć pamięć, z której może korzystać każda aplikacja. Nie jestem pewien, czy powinienem ustawić limit pamięci wirtualnej, czy prywatny. Każda aplikacja w naszym IIS znajduje się we własnej puli aplikacji.

Jeśli ustawię limit pamięci prywatnej na 500 MB, a limit pamięci wirtualnej na 3 GB. Kiedy pula aplikacji jest przetwarzana? Czy recyklinguje po osiągnięciu 500 MB lub po osiągnięciu 3 GB.

Kishore
źródło
Gdzie są te opcje „Limit pamięci wirtualnej” i „Limit pamięci prywatnej”, o których mówisz?
Pułkownik Panic
1
@ ColonelPanic Na IIS7.5 znajdują się w Advanced Settings -> Recyclingsekcji puli aplikacji .
ngm

Odpowiedzi:

16

IIS przestrzega obu tych limitów.

Jeśli ustawisz limit prywatnych bajtów 500 MB, gdy tylko proces roboczy spróbuje zatwierdzić 501 MB, IIS rozpali nowy proces roboczy i zabije stary.

Jeśli ustawisz limit pamięci wirtualnej 3 GB, jak tylko proces roboczy spróbuje zarezerwować 3,001 GB, IIS rozpali nowy proces roboczy i zabije stary.

Jeśli korzystasz z platformy 64-bitowej, pamiętaj, że aplikacja ASP.NET agresywnie rezerwuje pamięć wirtualną. Jako przykład mam aplikację na farmie, która wykorzystuje tylko 88 MB prywatnych bajtów, ale teraz ma rozmiar wirtualny 5,4 GB. Uważam, że rezerwacja pamięci wirtualnej jest funkcją fizycznej pamięci RAM na serwerze. Ważne jest również, aby zrozumieć, że na platformie 64-bitowej rezerwowanie dużych części pamięci wirtualnej ma zerowy wpływ na wydajność.

Zasadniczo, jeśli masz problemy z zużyciem pamięci na serwerze IIS, ustawieniem, które chcesz ograniczyć, jest pamięć prywatna / bajty, co odpowiada faktycznemu zużyciu pamięci.

Dominic D.
źródło
Dzięki Dominic, czy jest sposób, aby ustawić proces korzystania z prywatnej pamięci 500 Mb, a kiedy przekroczy ten limit, zacznij używać pamięci wirtualnej na dysku bez recyklingu?
kishore,
2
Nie, że jestem świadomy. W aplikacji ASP.NET, gdy zaczniesz mieć problemy z bajtami zatwierdzania, zasadniczo masz 3 opcje. 1. Przetwarzaj proces po osiągnięciu limitu lub w nocy o godzinie wyłączonej (oczywiście nie jest to preferowane i nie zapomnij poprawnie zarządzać danymi sesji, jeśli recykling odbywa się w oknie użytkowania) 2. Uzyskaj dodatkową pamięć fizyczną dla aplikacji (dodaj RAM do farmy serwerów lub przejścia do innej farmy, może to być najprostsze rozwiązanie w zależności od sytuacji). 3. Zmodyfikuj aplikację, tak aby bardziej efektywnie wykorzystywała pamięć. (Najlepsza opcja, ale może być trudna do wdrożenia)
Dominic D
Zauważyłem również agresywną rezerwację pamięci w kilku aplikacjach ASP.NET. Czy ktoś może polecić jakieś dobre zasoby na ten temat do nauki? Chciałbym dowiedzieć się więcej o tym, jak i dlaczego tak się dzieje ... Zauważyłem, że im więcej dostępnej pamięci, tym więcej pamięci przydzielają aplikacje.
Tom Pažourek