Za chwilę wdrożymy kilka witryn na niektórych nowych serwerach. Mam następujące pytania dotyczące pul aplikacji:
Wskazane wydaje się posiadanie jednej puli aplikacji na stronę internetową. Czy są jakieś zastrzeżenia do tego podejścia? Czy jedna pula aplikacji spowoduje zatrzymanie całego procesora, pamięci itp.?
Kiedy należy zezwolić na wiele procesów roboczych w puli aplikacji? Kiedy nie powinieneś
Czy można użyć limitu pamięci prywatnej, aby zapobiec zakłócaniu działania jednej puli aplikacji przez inną? Czy ustawienie zbyt niskiej wartości spowoduje, że prawidłowe żądania przetworzenia puli aplikacji bez uzyskania prawidłowej odpowiedzi?
Jaka jest różnica między limitami pamięci prywatnej i wirtualnej?
Czy istnieją ważne powody, aby NIE uruchamiać jednej puli aplikacji na witrynę?
źródło
Odpowiedzi:
To całkiem dobre podejście; nie ma żadnych dobrych powodów, aby myśleć o tym, że różne „witryny” (aplikacje) mają tę samą pulę. Chyba że muszą dzielić jeden zasób. Jedna aplikacja może teoretycznie pochłonąć dużo procesora lub pamięci, ale zmiana sposobu łączenia aplikacji nie wpłynie tak naprawdę na tak wiele.
Najlepiej zostaw to w spokoju, używając ustawień domyślnych. Chyba że naprawdę wiesz, co robisz, może to negatywnie wpłynąć na twoją stronę internetową / aplikację.
a) Teoretycznie
b) Tak, ustawienie niższej wartości może mieć negatywne skutki. Ponownie, chyba że masz określone potrzeby i wiesz, co robisz, po prostu zostaw je w spokoju.
To bardzo skomplikowane, oto szybki post, który może pomóc: http://cybernetnews.com/cybernotes-windows-memory-usage-explained/
Ponownie, jedynym powodem, dla którego mogę wymyślić, jest to, że istnieje jakiś „zasób współdzielony”, którego potrzebuje wiele aplikacji, to chciałbyś je uruchomić w tym samym procesie.
W aplikacjach i witrynach ogólnego zastosowania usługi IIS są dość dobrze skonfigurowane z wartościami domyślnymi.
****AKTUALIZACJA****
W związku z prośbą o dodatkowe informacje na temat nr 2 nie powinieneś tego robić, chyba że masz konkretną potrzebę. Nawet przy długo trwających działaniach serwera żądania są obsługiwane przy użyciu wielu wątków, a do obsługi długo działających zadań można użyć „Żądań asynchronicznych” (które zwalniają wątek puli wątków do obsługi innych żądań). Realistycznie nie mogę wymyślić żadnego dobrego powodu, aby zezwolić na wiele procesów dla jednej puli.
Gdy zaczniesz mówić o wielu procesach, potencjalnie możesz napotkać takie rzeczy, jak: utrata stanu sesji, ponieważ sesja jest aktywna w procesie 1, ale żądanie jest obsługiwane przez proces 2. Lub, co gorsza, musisz dowiedzieć się, jak to zrobić wykonać komunikację między procesami, co jest prawdziwym bólem.
Bez względu na to, z czego przychodzisz, jeśli chodzi o powód wielu procesów, byłbym skłonny założyć się, że istnieje lepszy sposób na poradzenie sobie z tym (zamiast uruchamiania innego procesu).
źródło
Zawsze konfiguruję dedykowaną pulę aplikacji dla strony internetowej. Scenariusze hostowania niedrogich witryn internetowych są uzasadnione, gdy duża liczba witryn na pulę aplikacji ma sens.
Limity pamięci są tak naprawdę tylko prymitywnymi progami bezpieczeństwa, aby zapobiec zużyciu przez witrynę wszystkich zasobów systemowych. Należy pamiętać, że jest to bardziej potencjalny problem w systemie Windows 2008 R2 x64 niż w IIS 6.0 x86, ponieważ aplikacje x86 miały naturalny pułap pamięci 2 GB. W IIS 7.5 jest znacznie łatwiej dla aplikacji z wyciekiem pamięci zużywać ogromne ilości pamięci.
Nie jestem też wielkim fanem pul aplikacji do recyklingu. Jeśli mam pulę aplikacji i jestem jedyną uruchomioną aplikacją, jeśli nie ma nic złego w naszym kodzie, prawdopodobnie nie ma potrzeby recyklingu puli aplikacji. A jeśli aplikacja jest wadliwa, ostatecznym właściwym działaniem byłoby naprawienie kodu.
źródło