PowerShell i IIS 15: Administracja WebAppPool

1-lis-2016

Ponieważ WebApplicationPool jest dla IIS furtką do korzystania z zasobów, to wymaga ona szczególnych czynności administracyjnych. Najczęstszym problemem rozwiązywanym przez administratora jest spadek wydajności dla aplikacji wykorzystującej wybrany application pool. Może to być powodowane (i najczęściej jest) przez wadliwy kod aplikacji WebSite, która np. nie zwalnia zajmowanej pamięci. Na szczęście w tym przypadku można wymusić restart aplikacji bez powodowania zatrzymania obsługi użytkowników i tym samym niedostępności usługi.

Aby po stronie IIS zrestartować Application Pool można skorzystać z polecenia Restart-WebAppPool:

iis151

Warto przy tym zauważyć, jak przebiega taki proces restartu:

  • Najpierw jest tworzony nowy Worker Process. Jest on od tej pory wykorzystywany do obsługi nowych napływających połączeń od strony klientów
  • Stary Worker Process jest utrzymywany tak długo, aż wszystkie rozpoczęte przez ten worker żądania zostaną obsłużone
  • Po zakończeniu obsługi ostatniego żądania przez stary worker proces, jest on usuwany.

W efekcie cała pamięć zajmowana przez stary worker proces zostaje zwolniona, ale użytkownicy w żadnym momencie nie stracili możliwości obsługi ich żądań. Jest to zupełnie inny scenariusz niż np. zatrzymanie i uruchomienie pool-i za pomocą Stop-WebAppPool oraz Start-WebAppPool:

iis152

Komentarze są wyłączone

Autor: Rafał Kraik