Chciałbym przeprowadzić analizę naszego serwera NFS, aby pomóc wyśledzić potencjalne wąskie gardła w naszych aplikacjach. Na serwerze działa SUSE Enterprise Linux 10.
Rzeczy, które chcę wiedzieć, to:
- Które pliki są uzyskiwane przez klientów
- Przepustowość odczytu / zapisu dla poszczególnych klientów
- Narzut narzucony przez inne wywołania RPC
- Czas spędzony na oczekiwaniu na inne żądania NFS lub dyskowe operacje we / wy na obsługę klienta
Wiem już o dostępnych statystykach /proc/net/rpc/nfsd
i tak naprawdę napisałem blog opisujący je dogłębnie. To, czego szukam, to sposób na głębsze kopanie i pomoc w zrozumieniu, jakie czynniki wpływają na wydajność widzianą przez konkretnego klienta. Chcę przeanalizować rolę, jaką serwer NFS odgrywa w działaniu aplikacji w naszym klastrze, dzięki czemu mogę wymyślić sposoby najlepszej optymalizacji.
linux
performance
nfs
Kamil Kisiel
źródło
źródło
Odpowiedzi:
Pomysł, spróbuj sniffować ruch nfs za pomocą wireshark. Może ci powiedzieć, który użytkownik uzyskał dostęp do jakiego pliku:
źródło
Muszę powiedzieć o wszystkich * dostępnych narzędziach statystycznych dla jednego, nfsstat jest zdecydowanie najgorszy! Daje to możliwość spojrzenia na kilka liczników, ale to wszystko. Jeśli spojrzysz na nie dwa razy, musisz wykonać próbę ustalenia, o ile zmienił się każdy licznik, a jeśli chcesz poznać szybkość zmian, musisz podzielić przez liczbę sekund między próbkami. Szczerze mówiąc, nfsstat datuje się na wiele lat, kiedy rzeczy były jeszcze dość prymitywne i nikt nie chce zmieniać formatu wyjściowego, ponieważ prawdopodobnie spowodowałoby to wiele problemów.
Jeśli chodzi o używanie funkcji Collectl do monitorowania NFS, zapewnia on wyjście nfsstat w znacznie łatwiejszym do odczytania formacie, ale co jeszcze lepsze, możesz pozwolić mu działać przez wiele godzin lub dni i odtwarzać dane zebrane w tle. Jeśli chodzi o żądanie sprawdzenia, co robią procesy, Collectl może również gromadzić dane procesu, w tym ilość operacji we / wy każdego procesu, a nawet odtwarzać je, pokazując najwyższych użytkowników we / wy. Możesz także skorzystać z najwyższej funkcji w czasie rzeczywistym.
Jeśli chcesz obejrzeć motyw dysku, kolekcjoner może to zrobić i wyświetlić wszystko na skoordynowanym ekranie.
Sprawdź to ... -mark
źródło
Collectl (szczególnie jego podsystem NFS ) to bardzo miłe narzędzie, które może być przydatne do analizy, ale nie pasuje do listy wymagań. Nie znam żadnego takiego narzędzia dla Linuksa.
(Proszę dodam to off-topic UWAGA: Nie jest oprogramowanie, które pasuje do Twoich wymagań: Sun DTrace opartej Analytics (PDF) . - ale niestety nie jest dostępny w systemie Linux Znajdziesz wiele wspaniałych przykładów w blogu Brendana Gregga ilustrujące możliwości tego narzędzia).
źródło
Sprawdź nfsstat. Nie pokazuje wszystkiego, co chcesz, ale przynajmniej dobry podzbiór.
http://linux.die.net/man/8/nfsstat
źródło
Moim zdaniem to właśnie podkreśla problem z dzisiejszymi narzędziami. Tutaj wymieniono co najmniej 3, w tym nfsstat, iostat i iotop. Potem padła wzmianka o wireshare i nfsreplay. Czy to naprawdę brzmi jak normalny sposób robienia rzeczy? Poza wireshark z jest kategorią samą w sobie, czy nie wolisz 1 narzędzia?
W przypadku programów otwierających, chociaż uważam, że wyjście iostatu jest bardzo przydatne, zbyt trudno jest odczytać te wszystkie liczby 0,00 w liczbach. Collectl zgłasza dokładnie te same dane, ale znacznie łatwiej sformatował oczy. Wiesz już, co myślę o nfsstat, a ponieważ narzędzie Collectl może odtwarzać dowolne dane, nie ma potrzeby używania narzędzia do odtwarzania. Jeśli chodzi o „iotop”, funkcja kolekcjonowania może także pokazywać procesy posortowane według dowolnych zawartych we / wy.
Więc masz to wszystko w zestawie, wraz ze znacznikami czasu. Jeśli potrzebujesz krótszego interwału monitorowania, możesz zawsze podkręcić próbkowanie do 0,1 lub 0,5 sekundy lub cokolwiek pomiędzy, chociaż wygenerujesz więcej narzutu, jeśli będziesz monitorować procesy tak szybko, ale zrobiłbyś to za pomocą dowolnego narzędzia do monitorowania procesu.
OSTATECZNY bonus to wszystko, co zbierasz za pomocą Collectl, który możesz załadować do arkusza kalkulacyjnego i łatwo wydrukować LUB użyć colplot, który jest częścią Collectl-utils.
-znak
źródło
Możesz spróbować
nfswatch
ze strony http://nfswatch.sourceforge.netMożesz zobaczyć przykładowe wyniki na http://prefetch.net/blog/index.php/2009/06/16/monitoring-nfs-operations-with-nfswatch/
nfswatch
jest trochę podobnytop
(choć nie jestem pewien, czy istnieje tryb wsadowy). Po uruchomieniu możesz zmienić zmianę wyświetlania, naciskając klawisz (np. „C”, aby wyświetlić klientów NFS korzystających z serwera NFS).Jednak w moich krótkich testach
nfswatch
wydaje się , że nie działa z NFSv4.źródło
W tej chwili nie mam lepszych odpowiedzi, jednak można dość dokładnie śledzić IO dysku
Daje to bardzo przydatne dane, w szczególności średni rozmiar kolejki i czas oczekiwania (w ms) dla Twoich operacji we / wy. Pokazuje dość łatwo, jeśli twoje dyski są wąskim gardłem, a jeśli wąskim gardłem jest liczba operacji we / wy lub przepustowość.
Potem z
Zobaczysz połączenia klienta i bajty przesyłane z każdego klienta w czasie rzeczywistym. zapętlić na nim ciągłe dane. Stworzenie skryptu zapewniającego ciągłe dane byłoby dość łatwe ... Pracuję nad tym :)
Teraz, aby uzyskać IO na proces, możesz użyć doskonałego iotop . Jednak nadal musisz znaleźć sposób na dopasowanie procesów nfsd do klientów.
Co do tego, które pliki są uzyskiwane przez który klient, utknąłem. W rzeczywistości pliki aktualnie odczytywane / zapisywane z klienta NFS nawet nie pojawiają się w wynikach lsof.
Aby rozwinąć sieć, użyj watch -d, aby zobaczyć, jak rzeczy się zmieniają i sortują według hosta
źródło
Może chcesz sprawdzić nfsreplay. Może ci pomóc dowiedzieć się, co się dzieje. Również można znaleźć informacje i linki tutaj użyteczne
źródło