Analiza problemów wydajnościowych w środowisku SharePoint 2013 Marcin Ciężak Support Escalation Engineer 06/11/201 5
Zrozumieć SharePoint … 2 1.Projekt/budowa W jakim celu system był zbudowany? Czy spełnia te oczekiwania? 2.Konfiguracja W jaki sposób system został zaprojektowany (kto)? Czy mamy dostęp do dokumentacji i czy jest ona aktualizowana? Czy budowa systemu była zgodna z “Best Practice” i czy przewiduje skalowanie po stronie logicznej jak i fizycznej? Czy był stworzony tzw. Baseline? (Zebrane podstawowe dane wydajnościowe)
Diagnostyka… 3 Skala problemu Zebrane dane i informacjeAnaliza… Problem ze stroną?Skala determinuje zestaw narzędziSzukamy powtórzeń Problem z aplikacją? Pomocny dostęp do dokumentacji i logu zmian Porównujemy z “dobrym” zestawem (baseline) Problem z serwerem?
Skala problemu: 4 Dotarcie do zakresu/skali problem kluczowe SharePoint jest zależny od istniejącej infrastruktury (AD/DNS/Sieć itp.) “Skalowanie” zaczynamy od problemu wynikowego a nie od prawdopodobnej przyczyny: Przypadek wolnej strony (page.aspx): o Czy wyświetla się błąd? o A inne strony tej witryny (SPWeb)? o A strony z _Layouts? (settings.aspx) o A inne strony w danej kolekcji witryn? (SPSite) o Inna Aplikacja sieci web? o Centralna Administracja? o A bezpośrednio na serwerze? o Czy wszystkie serwery WFE tak, samo serwują powoli? o Czy wszyscy użytkownicy mają problem?
Informacje i Dane: 5 1. Wywiad: o Nie ma czegoś takiego jak problem losowy – jest tylko nie do końca rozumiany problem. o Od kiedy problem występuje? o Jeżeli nagle, to co się zmieniło w środowisku? Odpowiedź że nic, jest błędna i pytanie zadajemy do skutku… 2. Mając odpowiednie informacje i na podstawie skali wybieramy zestaw narzędzi: o Performance monitor + PAL ( o ULS – Unified Logging System o Fiddler ( o SQLdiag/SQLNexus ( o System Event Logs o Network Monitor/Message Analyzer/WireShark o LogParser (głównie do analizy logów IIS) o DebugDiag, WinDBG, HTTP.sys (ETW) i inne… o RAP as a Service for SharePoint Server – Oferta w ramach kontraktu Premier.
Narzędzia – PAL / Performance Monitor 6 PAL – analiza danych zebranych za pomocą Performance Monitor: o Prosty i logiczny w użyciu o Eksport szablonów za pomocą których tworzymy Data Collector Set o Dane prezentowane w czytelny sposób o Idealny do budowania BaseLine o Analizujemy nie tylko SharePoint (SQL, IIS, Exchange, AD) Analiza
Narzędzia - Fiddler 7 o Analiza wolno ładujących się stron o Operuje w warstwie aplikacyjnej (HTTP/SSL) o Możliwość przechwytywania zapytań (breakpoint) i ich modyfikacja “w locie”. Np. Podczas analizy wolnych/wadliwych skryptów JS lub problemów z kontrolką PeoplePicker o Możliwość odtwarzania ruchu po jego zapisaniu. o Bardzo pomocny w analizie problemów z Workflow Manager i niezastąpiony w walce z SharePoint Online Analiza
Narzędzia – SQL Diag/Nexus 8 1. SQLdiag – część instalacji: o Zbiera też dane dotyczące OS o Obciąża instancje, użycie należy zaplanować. o Dane można analizować w PALu. 2. SQLNexus (codeplex.com) o Prezentuje bardzo przyjazny raport wydajności o Można wygenerować szablon do użycia przez SQLdiag Analiza
Narzędzia – Pozostałe ważne… 9 1. ULSviewer: o podstawowe narzędzie w codziennej pracy o Pomocne we wstępnej analizie sytuacji gdy problem jest globalny (zdarzenia powiązane z użyciem pamięci, kategoria Performance, zdarzenia typu ExecutionTime) o Bezwzględnie skuteczny w przechwytywaniu problemów z wydajnością usługi Search 2. LogParser i LogParser Studio (GUI) o Idealny do analizy logów IIS o LPStudio usprawnia pisanie zapytań (T-Sql) o Może być również użyty do analizy logów systemowych jak i ULS – pomocny przy wstepnej analizie wydajności i wychwytywaniu “losowych” zachowań 3. Network Monitor / Message Analyzer/ WireShark o Skuteczny w analizie ruchu typu Authentication o Podstawowe narzędzie w walce ze słabym UPA o MA ciekawy, bo łączy w sobie wiele narzędzi (Fiddler + NetMon) Analiza
Typowe przyczyny problemów z wydajnością … 10 o Niekontrolowany i nie zaplanowany przyrost obiektów w listach. Np. Workflow History List, o niej wszyscy zapominają. Workflow Cleanup Timer Job NIE USUWA elementów na liście! o Nadużywanie “jakościowo” rozbudowanych list – czyli tworzenie setek kolumn z dużą ilością typów Lookup. o Nadużywanie zerwanego dziedziczenia uprawnień – obiekty na liście posiadają własne ACL. Przy ilościach elemntów powyżej kilku tysięcy, często dochodzi do “korupcji” elementów (brakujące ScopeID) o Niepoprawnie napisany kod np. Event Receiver łamiący uprawnienia, składniki WebPart nieefektywnie operujące na obiektach SPWeb/SPSite, używanie kolekcji SPList.Items[] zamiast metody SPList.GetItemById() o Źle wyskalowana farma – oczekiwania mocno przerastają możliwości sprzętu. o Zaniedbany serwer SQL - np. brak cyklicznej przebudowy statystyk, złe ustawienia pamięci i przyrostu plików. o “Zapomniana” i nieaktualna konfiguracja usługi Distributed Cache Analiza
© 2013 Microsoft Corporation. All rights reserved. Microsoft, Windows, and other product names are or may be registered trademarks and/or trademarks in the U.S. and/or other countries. The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft must respond to changing market conditions, it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after the date of this presentation. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION Dziękujemy Za Uwagę.