Pula aplikacji IIS Wysokie użycie procesora pomimo braku żądań


10

Niedawno przeprowadziłem migrację zestawu serwerów Windows Server 2008 R2 / IIS 7.5 na nowe serwery z systemem Windows Server 2012 / IIS 8.

Występują dziwne zachowania z IIS. Mamy 2 identyczne serwery, każdy serwer obsługuje 2 strony internetowe, każdy w swojej własnej puli aplikacji. Kod każdej strony internetowej jest identyczny. (Dosłownie ... te same pliki dll i wszystko, tylko nieco inna konfiguracja).

Pule aplikacji są ustawione na cykliczne odtwarzanie zgodnie z harmonogramem co 24 godziny, ale podczas tego 24-godzinnego okresu użycie procesora przez proces roboczy w3wp wzrasta o 12,5% (serwer ma 8 procesorów, więc nie sądzę, że to jest przypadek).

Gdy użycie procesora gwałtownie wzrośnie, NIE ZWRACA się, dopóki aplikacja nie zrestartuje się. O ile mogę stwierdzić, w tej chwili aplikacja nic nie robi i nie obsługuje ŻADNYCH żądań. Mogę zablokować cały ruch do serwera, a użycie procesora po prostu tam pozostanie. Mogę nawet zrestartować stronę internetową, a użycie procesora pozostaje takie samo. Jedynym sposobem zresetowania użycia procesora jest ponowne uruchomienie lub ponowne uruchomienie puli aplikacji, na której działa.

Jestem nieco pewien, że ten problem nie ma nic wspólnego z moim kodem, ale coś w rodzaju złej konfiguracji IIS lub zmiany w IIS 8, która źle działa z konfiguracją sprzętu czy coś takiego?

Nie jestem pewien, czy to ważne, czy nie, ale są to serwery Rackspace Performance Cloud.

Oto zrzut ekranu pokazujący obciążenie procesora w miarę upływu czasu na tych serwerach (zielone strzałki wskazują czasy, w których pula aplikacji jest odtwarzana ponownie. Widać, że każdy plateau stanowi integralną wielokrotność 12,5%:

wprowadź opis zdjęcia tutaj

Czy ktoś zauważył to zachowanie? Znalazłem to pytanie z 2009 roku, gdy ktoś miał coś, co wydaje się być tym samym problemem w IIS 6:

Usługi IIS w3wp używają wysokiej mocy procesora bez ruchu

Każda pomoc jest mile widziana

Odpowiedzi:


1

Miałem dokładnie ten sam problem z Sharepoint 2013 i IIS 8 w 2012 roku ... Nigdy nie kłopotaliśmy się, ale zamiast tego obniżyliśmy do wersji SP2013 w 2008 R2 i wszystko było dobrze.


2
mężczyzna. po całej pracy, którą właśnie włożyłem w migrację, nie jest to odpowiedź, na którą liczyłem ...: /
Leland Richardson,

1

Można spróbować użyć narzędzia Debug Diagnostic aby wyśledzić , co jest przyczyną problemu. Zwykle służy do rozwiązywania problemów z awariami i wyciekami pamięci, ale może pomóc w ustaleniu, który składnik jest przyczyną problemu.


Jak używać programowo narzędzia diagnostycznego debugowania, kiedy high CPU or RAM more 90%?
Kiquenet,

@Kiquenet Możesz spróbować zrobić zrzut pamięci procesu, a następnie przeanalizować go na innym komputerze. Mam do czynienia z podobnym problemem i byłem w stanie przechwycić zrzut w <1 min na serwerze przy ~ 100% obciążeniu procesora
Piyush Saravagi

tak, a następnie przechwycić zrzut w <1 min na serwerze przy programowym zużyciu ~ 100% procesora ?
Kiquenet

1

To naprawdę wygląda jak jakiś kod utknął w nieskończonej pętli.

Nadchodzi żądanie, IIS zaczyna je obsługiwać, coś (prawdopodobnie błąd) wyzwala to zachowanie, wątek roboczy wchodzi w nieskończoną pętlę i przypisuje procesor do 100%, a następnie pozostaje w ten sposób, dopóki pula aplikacji nie zostanie ponownie przetworzona.

Nawet jeśli nie pojawią się żadne nowe żądania, procesor pozostaje w użyciu, ponieważ zablokowany wątek nigdy się nie kończy.

Czasami nowe żądanie ponownie wyzwala to zachowanie , a następnie otrzymujesz dwa zablokowane procesory (lub trzy lub cztery ...).

Recykling puli aplikacji kończy oczywiście wszystkie wątki robocze, w ten sposób problem zostaje rozwiązany ... aż do powtórzenia się.


0

Możesz dołączyć profiler procesora do procesu w3wp i sprawdzić, co się tam dzieje. Powinieneś być w stanie zobaczyć, co zużywa cykle procesora.


jak dołączyć profiler procesora do procesu w3wp programowo, gdy wysoki procesor lub pamięć RAM przekraczają 90% ?
Kiquenet,

0

Wygląda mi na nieskończoną pętlę. Widziałem to kilka razy, mimo że IIS mówi, że nie ma żadnych zaległych żądań. Nie jestem pewien, jak to może być, ale właśnie to byś zobaczył. Trudność polega na tym, że IIS nie rejestruje żądań, dopóki się nie zakończą, więc ustalenie, które żądanie wyzwala takie zachowanie, jest trudne.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.