Pracujemy z Asp.Net WebApi na 3 serwerach za HAProxy. HAProxy po prostu losowo rozdziela żądania między te 3 instancje.Jak wykrywać problemy z wysoką wydajnością procesora i długim czasem reakcji z programem Asp.NET Web Api
Te instancje łączą się z mongodb, redis i niektórymi usługami Windows.
Zwykle w3wp.exe używa około 30% procesora na każdym serwerze APi.
Od czasu do czasu (kilka razy na godzinę) jeden z serwerów api decyduje się na użycie dużej liczby procesorów. W korelacji z tym zachowaniem zaczynamy dostrzegać coraz dłuższe czasy odpowiedzi. Liczby stale rosną, dopóki HAProxy nie wyświetli 10000ms czasów odpowiedzi i zdecyduje się skierować żądania do innych dwóch serwerów. Wszystko to za 10-20 sekund. Po pewnym czasie serwer wraca do normalnego stanu i ponownie pobiera żądania. Po kilku minutach inny serwer robi dokładnie to samo. To się ciągnie i trwa.
Używamy New Relic, ale ponieważ aplikacja jest aplikacją WebApi, nie otrzymujemy żadnych użytecznych informacji. Monitorujemy wszystkie nasze serwery (usługi redis, mongo i windows) w zakresie wykorzystania procesora, wykorzystania pamięci, ruchu sieciowego i operacji we/wy, ale nie widzimy żadnego znaczącego obciążenia podczas wspomnianych przestojów.
Jak możemy wykryć przyczynę tego zachowania aplikacji?
Czy rozwiązałeś ten problem? Mam podobny problem z interfejsem sieciowym. W przypadku niektórych połączeń użytkownik nie otrzymuje odpowiedzi, a w3wp.exe uzyskuje wysokie zużycie pamięci. Czy możesz podzielić się swoją opinią na temat swojego problemu? –