Být správcem databáze může být velmi náročné v době, kdy musíte řešit problémy s výkonem. Databázový server je pouze jednou složkou aplikačního ekosystému a běžně je obviňován jako problém s výkonem. SQL Server je jednou z těch černých skříněk, kterým mnozí nerozumí, podobně jako SAN a síť. Produkční správci databází, kteří monitorují své servery, dokážou rychle identifikovat, zda SQL Server funguje mimo svou normální základní linii, nicméně existují dvě hlavní oblasti, do kterých máme jen malý přehled:SAN a síť. DBA musí pravidelně spolupracovat s dalšími inženýry, pokud jde o řešení problémů s výkonem, které přímo nesouvisejí se serverem SQL Server. Výkon disku můžeme snadno sledovat sledováním sys.dm_io_virtual_file_stats
, o kterém jsem psal v Monitoring Read/Write Latency; nicméně sledování problémů s výkonem sítě v rámci SQL Serveru není tak snadné.
Špatný výkon sítě může být tichým zabijákem výkonu aplikací a moje osobní zkušenost ukázala, že tomu tak je při mnoha příležitostech. Aplikace by často začala mít problémy s výkonem a aplikační inženýr by řekl, že aplikační server vypadá dobře, a začne ukazovat prstem na databázi. Nechal jsem si zavolat, abych se podíval na databázový server a všechny náznaky ukazovaly, že databázový server je v dobrém stavu (a tady pomáhá sledování klíčových ukazatelů výkonu a základní linie!). Protože aplikační a databázové týmy tvrdily, že je vše v pořádku, požádali jsme síťový tým, aby věci prověřil. Síťový tým by se podíval na několik věcí a také by dal na svou stranu jasno. Řešení problémů každého týmu a revize jejich příslušných systémů nějakou dobu trvaly, zatímco výkon aplikace stále trpěl. Problém by se pak stupňoval, dokud by všechny týmy nebyly požádány, aby se připojily ke konferenčnímu mostu a společně řešily problémy. Nakonec někdo zahájí hlubší test sítě a zjistí, že máme buď saturaci portu, směrování nebo nějaký jiný složitý problém se sítí. Několik kliknutí nebo změna něčeho na jejich konci by nakonec vyřešila pomalost aplikace.
Nejvýznamnější problém se sítí, se kterým jsem se u klientů setkal, se obvykle týká šířky pásma při provádění záloh. Mnoho větších organizací migruje na 10Gb sítě pro základní infrastrukturu, ale při práci s fyzickými i virtuálními sítěmi je snadné špatně nakonfigurovat nastavení nebo port a nechat je klesnout na 1Gb. Při běžném síťovém provozu aplikací si nemusíte všimnout snížení výkonu, ale jakmile se začnete pokoušet zkopírovat 100 GB dat pro zálohování, tento 1 GB se zaplní a vaše úlohy zálohování a obnovy utrpí.
Pro DBA může být náročné přimět ostatní, aby se podívali tak hluboko do problémů, o kterých si nemyslí, že jsou jejich problémem, protože počáteční indikátory problém neodhalí. Pokud se budete moci vyzbrojit daty, než oslovíte jiné týmy, pomůže jim to zapojit je. Použitím iPerf k provedení počátečního testu šířky pásma můžete rychle určit, zda dosahujete rychlosti sítě, kterou byste měli mít. Pokud například používáte 10Gb síť mezi aplikačním serverem a databázovým serverem a spustíte test a získáváte pouze 1Gb, pak víte, že něco není úplně v pořádku. Pokud dokážete toto zjištění zdokumentovat, můžete s důvěrou požádat své síťové inženýry, aby se na problém s šířkou pásma podívali.
Jak začnete používat iPerf? Nejprve si musíte stáhnout nástroj z iPerf.fr. Protože pracuji na Windows Server 2012, stáhl jsem si binární soubory Windows do svého počítače. Jakmile si stáhnete a rozbalíte balíček, budete muset spustit program z příkazového řádku. Stáhl jsem si iPerf 3.0.11, který je venku už skoro rok. Nezapomeňte si přečíst dokumentaci tohoto nástroje. Protože se jedná o nástroj příkazového řádku, existují desítky možností, které můžete použít. V níže uvedeném příkladu použiji pouze několik z nich, ale v závislosti na vaší situaci možná budete muset použít další možnosti, jako je zadání portu nebo zvětšení velikosti paketu. Upozorňujeme, že příkazy volby rozlišují malá a velká písmena.
Chcete-li použít iPerf, musíte k testování šířky pásma použít alespoň dva servery. Jakmile zkopírujete binární soubory na dva servery, musíte nejprve spustit iPerf listener na jednom ze serverů. K tomu spustím následující příkaz:
iperf3 -sTento příkaz spustí iPerf v režimu serveru a povolí pouze jedno připojení najednou.
Na druhém serveru budete muset spustit iPerf pomocí několika možností klienta. Nejprve zadáme -c pro určení režimu klienta. Také použijeme -t k určení času pro spuštění každého testu a -P k určení počtu současných připojení, která se mají vytvořit. Chceme specifikovat více připojení, abychom mohli síť pořádně zatížit. Pro tento test spustím následující příkaz:
iperf3 -c (název serveru nebo IP adresa prvního serveru) -t 30 -P 10Výše uvedený příkaz spustí 30sekundový test přenosu s 10 současnými připojeními.
Tento test jsem provedl na dvou virtuálních počítačích na mém Dell M6800, takže neexistovala fyzická síť, kterou by tyto virtuální počítače procházely.
Ze serveru 2 připojujícího se k serveru 1 jsem přenesl 7,57 GB s šířkou pásma 2,17 Gbit/s. Není to špatné pro několik virtuálních počítačů na notebooku.
Síťové statistiky / výstup iPerf:Server 2 se připojuje k serveru 1
Ze serveru 1, který se připojuje k serveru 2, jsem přenesl 6,98 GB s šířkou pásma 2,00 Gbit/s. Jak vidíte, v číslech je mírný rozdíl, ale stále relativně blízko. Pokud by se tato čísla výrazně lišila, musel bych prozkoumat příčinu.
Síťové statistiky / výstup iPerf:Server 1 se připojuje k Serveru 2
Je důležité provést tyto testy před uvedením do provozu a vytvořit si zvyk tyto testy pravidelně opakovat na vašich produkčních serverech. Musíte vědět, co je normální, pokud to nesledujete, nemůžete to měřit. Pokud víte, že na vašich serverech, virtuálním hostiteli nebo jakémkoli základním síťovém zařízení jsou prováděny aktualizace firmwaru, test iPerf před a po změnách vás může rychle upozornit na případné negativní vedlejší účinky.
Je také důležité provést tento test proti všem serverům, které jsou propojeny přímo s databázovým serverem, a všem serverům, se kterými je databázový server přímo propojen, jako jsou síťová zálohovací zařízení. IPerf funguje na Windows i Linuxu, takže je snadné testovat mezi dvěma operačními systémy.
Pro správce databází už síť nemusí být černou skříňkou, o které nic nevíte. Použití iPerf vás může upozornit na jakékoli problémy s šířkou pásma v síti mezi vaším databázovým serverem a jakýmkoli jiným serverem. Není důvod spoléhat se pouze na PING a TRACERT pro omezené řešení problémů se sítí. Stáhněte si iPerf a začněte dokumentovat šířku pásma sítě.