WorkingSet Spike tuż przed OutOfMemoryException

Badam incydent, w którym wyjątek OutOfMemoryException został wprowadzony do produkcji, dla „tradycyjnej” aplikacji serwera .NET. Moim celem jest zinterpretowanie określonej części danych zgromadzonych za pomocą Monitora wydajności i poszukiwanie wskazówek, jak przejść dalej. Zacznę od listy faktów:

Proces był już uruchomionyponad 20 dni aż do katastrofy.Rozbił się z powodu wyjątku typuSystem.OutOfMemoryException został rzucony.W przeszłości miały miejsce podobne zdarzenia. Podobnie trwadługi czas aby aplikacja uległa awarii.Proces był monitorowany przez Monitor wydajności za pomocą następujących liczników:# Bajty we wszystkich stertach,% czasu procesora, prywatne bajty, zestaw roboczy.Mynie może przechwytywanie zrzutów pamięci w środowisku produkcyjnym i nie byliśmy w stanie go odtworzyć.

Na pierwszym zrzucie ekranu można zobaczyć ogólne zachowanie liczników w ciągu 7 dni. Rzeczy są dość stabilne. Drugi zrzut ekranu pokazuje zachowanie w ostatniej chwili wokół awarii. Wyjątek OutOfMemoryException został zalogowany15:13:49.

Moje pytania to: 1. Jakieś pomysły, co robinagły wzrost zestawu roboczego oznaczać? Był ogólnie stabilny przy 650 tys. MB, aw 10 sekund wzrósł do 1,3 GB. 2. Czy powinienem skupić się na znalezieniu czegoś, co?uruchomił OOM tuż przed katastrofą, czy może byćczynnik akumulacyjny? Jak widzieliście, prywatne bajty i bajty na wszystkich stertach są dość stabilne.

questionAnswers(1)

yourAnswerToTheQuestion