Database
 sql >> Baza danych >  >> RDS >> Database

Testowanie obciążenia sieciowego za pomocą iPerf

Bycie administratorem bazy danych może być bardzo trudne, gdy trzeba rozwiązywać problemy z wydajnością. Serwer bazy danych jest tylko jednym z elementów ekosystemu aplikacji i rutynowo jest obwiniany za problem z wydajnością. SQL Server to jedna z tych czarnych skrzynek, których wielu nie rozumie, podobnie jak sieć SAN i sieć. Produkcyjni administratorzy baz danych, którzy monitorują swoje serwery, mogą szybko określić, czy SQL Server działa poza normalną linią bazową, jednak istnieją dwa główne obszary, na które mamy niewielki wgląd:sieć SAN i sieć. Administratorzy baz danych muszą regularnie współpracować z innymi inżynierami, jeśli chodzi o rozwiązywanie problemów z wydajnością, które nie są bezpośrednio związane z SQL Server. Możemy łatwo śledzić wydajność dysku, monitorując sys.dm_io_virtual_file_stats , o którym pisałem w Monitorowaniu opóźnień odczytu/zapisu; jednak śledzenie problemów z wydajnością sieci w programie SQL Server nie jest tak łatwe.

Słaba wydajność sieci może być cichym zabójcą wydajności aplikacji, a moje osobiste doświadczenie pokazało, że tak jest w wielu przypadkach. Często aplikacja zaczyna mieć problemy z wydajnością, a inżynier aplikacji mówi, że serwer aplikacji wygląda dobrze i zaczyna wskazywać palcem na bazę danych. Dostałem telefon, aby spojrzeć na serwer bazy danych i wszystkie wskazania wskazywały, że serwer bazy danych był w dobrym stanie (i tu pomaga monitorowanie kluczowych wskaźników wydajności i posiadanie linii bazowej!). Ponieważ zespoły ds. aplikacji i baz danych twierdziły, że wszystko jest w porządku, poprosiliśmy zespół sieciowy o sprawdzenie tego. Zespół sieciowy przyjrzy się kilku sprawom i również przedstawi wszystko po swojej stronie. Każdemu zespołowi rozwiązywanie problemów i przeglądanie ich systemów zajęło trochę czasu, podczas gdy wydajność aplikacji nadal spadała. Problem będzie następnie eskalowany, aż wszystkie zespoły zostaną poproszone o dołączenie do mostka konferencyjnego w celu wspólnego rozwiązywania problemów. W końcu ktoś zacząłby głębszy test sieci i ustalił, że mamy albo nasycenie portu, routing, albo inny złożony problem z siecią. Kilka kliknięć lub zmiana czegoś na ich końcu ostatecznie rozwiązałoby spowolnienie aplikacji.

Najważniejszym problemem sieciowym, z jakim spotkałem się w przypadku klientów, jest zwykle przepustowość podczas wykonywania kopii zapasowych. Wiele większych organizacji migruje do sieci 10 Gb dla infrastruktury podstawowej, jednak pracując zarówno z siecią fizyczną, jak i wirtualną, łatwo jest błędnie skonfigurować ustawienie lub port i obniżyć go do 1 Gb. W przypadku zwykłego ruchu sieciowego aplikacji możesz nie zauważyć pogorszenia wydajności, jednak gdy tylko zaczniesz kopiować setki GB danych do tworzenia kopii zapasowych, ten 1 GB zostanie nasycony, a zadania tworzenia kopii zapasowych i przywracania ucierpią.

Dla administratorów baz danych może być trudne nakłonienie innych do przyjrzenia się problemom, które według nich nie są ich problemem, ponieważ początkowe wskaźniki nie ujawniają problemu. Umiejętność uzbrajania się w dane przed skontaktowaniem się z innymi zespołami pomoże je zaangażować. Używając iPerf do wykonania wstępnego testu przepustowości, możesz szybko określić, czy uzyskujesz prędkości sieci, które powinieneś. Na przykład, jeśli korzystasz z sieci 10 Gb między serwerem aplikacji a serwerem bazy danych i przeprowadzasz test i otrzymujesz tylko 1 Gb, to wiesz, że coś jest nie tak. Jeśli możesz udokumentować to odkrycie, możesz śmiało poprosić inżynierów sieci o zbadanie problemu z przepustowością.

Jak zacząć korzystać z iPerf? Najpierw musisz pobrać narzędzie z iPerf.fr. Ponieważ pracuję na Windows Server 2012, pobrałem pliki binarne Windows na mój komputer. Po pobraniu i rozpakowaniu pakietu będziesz musiał uruchomić program z wiersza poleceń. Pobrałem iPerf 3.0.11, który jest dostępny od prawie roku. Koniecznie przeczytaj dokumentację tego narzędzia. Ponieważ jest to narzędzie wiersza poleceń, możesz użyć dziesiątek opcji. W poniższym przykładzie użyję tylko kilku z nich, jednak w zależności od Twojej sytuacji może być konieczne użycie innych opcji, takich jak określenie portu lub zwiększenie rozmiaru pakietu. Pamiętaj, że w poleceniach opcji rozróżniana jest wielkość liter.

Aby korzystać z iPerf, musisz użyć co najmniej dwóch serwerów, aby przetestować przepustowość. Po skopiowaniu plików binarnych na dwa serwery musisz najpierw uruchomić odbiornik iPerf na jednym z serwerów. W tym celu uruchomię następujące polecenie:

iperf3 -s

To polecenie uruchamia iPerf w trybie serwera i zezwala tylko na jedno połączenie na raz.

Na drugim serwerze będziesz musiał uruchomić iPerf za pomocą kilku opcji klienta. Najpierw określimy -c, aby określić tryb klienta. Użyjemy również -t do określenia czasu uruchomienia każdego testu i -P do określenia liczby jednoczesnych połączeń do wykonania. Chcemy określić wiele połączeń, aby odpowiednio obciążyć sieć. W tym teście uruchomię następujące polecenie:

iperf3 -c (nazwa serwera lub adres ip pierwszego serwera) -t 30 -P 10

Powyższe polecenie uruchomi 30-sekundowy test transmisji z 10 równoczesnymi połączeniami.

Przeprowadziłem ten test na dwóch maszynach wirtualnych na moim Dell M6800, więc nie było fizycznej sieci, przez którą te maszyny wirtualne mogłyby przejść.

Z serwera 2 łączącego się z serwerem 1 otrzymałem 7,57 GB przeniesionych z przepustowością 2,17 Gbit/s. Nieźle jak na kilka maszyn wirtualnych na laptopie.

Statystyki sieci / dane wyjściowe iPerf:serwer 2 łączy się z serwerem 1

Z serwera 1 łączącego się z serwerem 2 otrzymałem 6,98 GB przeniesionych z przepustowością 2,00 Gbit/s. Jak widać, jest niewielka różnica w liczbach, ale nadal stosunkowo blisko. Gdyby te liczby były drastycznie różne, musiałbym zbadać przyczynę.

Statystyki sieci / dane wyjściowe iPerf:serwer 1 łączy się z serwerem 2

Ważne jest, aby przeprowadzać te testy przed przejściem do produkcji i wyrobić sobie nawyk regularnego powtarzania tych testów na serwerach produkcyjnych. Musisz wiedzieć, co jest normalne, jeśli tego nie monitorujesz, nie możesz tego zmierzyć. Jeśli wiesz, że na Twoich serwerach, wirtualnym hoście lub jakimkolwiek podstawowym sprzęcie sieciowym przeprowadzane są aktualizacje oprogramowania układowego, test iPerf przed i po zmianach może szybko ostrzec Cię o wszelkich negatywnych skutkach ubocznych.

Ważne jest również, aby przeprowadzić ten test na wszystkich serwerach, które łączą się bezpośrednio z serwerem bazy danych oraz na wszystkich serwerach, z którymi serwer bazy danych bezpośrednio się łączy, takich jak sieciowe urządzenia do tworzenia kopii zapasowych. IPerf działa zarówno w systemie Windows, jak i Linux, co ułatwia testowanie między dwoma systemami operacyjnymi.

Dla administratorów baz danych sieć nie musi już być czarną skrzynką, o której nic nie wiesz. Korzystanie z iPerf może ostrzegać o wszelkich problemach z przepustowością w sieci między serwerem bazy danych a dowolnym innym serwerem. Nie ma powodu, aby polegać tylko na PING i TRACERT w przypadku ograniczonego rozwiązywania problemów z siecią. Pobierz iPerf i zacznij dokumentować przepustowość sieci.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL SELECT DISTINCT:Najlepsze praktyki dotyczące wydajności

  2. Wizualizacja danych w Microsoft Power BI

  3. Jak czytać i interpretować błędy SQL

  4. Podziel duże operacje usuwania na porcje

  5. Zapytania SQL