OpenVPN brojači prometa naspram diskovnog I/O: tri različita broja
Bajtovi interfejsa, brojači znakova procesa i upisi na disk mjere različit rad. Uporedite ih prije nego dimenzionirate diskove prema obimu tunela.
Provedite veliki fajl kroz tunel i brojač interfejsa poraste za veličinu fajla. Ništa u tom broju ne znači da je isti obim stigao na disk. U ovim raspravama upoređuju se tri različita mjerenja i ona odgovaraju na tri različita pitanja: koliko je prometa prešlo jedan mrežni sloj, koliko je bajtova proces pročitao i zapisao kroz sistemske pozive i koliko je posla stiglo do sloja za pohranu.
Poređenje prvog s trećim uobičajena je greška i ona proizvodi ili fantomski problem s diskom ili plan kapaciteta koji zanemaruje upise koji se zaista dešavaju. Ta tri su razdvojiva i svako ima ispravnu upotrebu.
Tri broja koja se mješaju
Brojači interfejsa opisuju promet koji se obrađuje na mrežnom sloju. Oni su ispravan broj za propusnost, za veličinu tunela i za modele naplate koji naplaćuju tranzit.
Brojači znakova procesa opisuju bajtove prenesene kroz pozive čitanja i pisanja na bilo kojem deskriptoru, uključujući cijevi, terminale i znakovne uređaje. Oni su ispravan broj za pitanje koliko je proces zauzet na granici sistemskog poziva i nisu diskovni račun.
Brojači pohrane opisuju bajtove koje je kernel pokušao prenijeti u blokovski uređaj ili iz njega. Oni su ispravan broj za planiranje kapaciteta, uz napomenu da kernel dokumentuje vlastite granice obračuna: keširana čitanja ne postaju čitanja pohrane, a upis koji se kasnije otkaže ne postaje završen upis na uređaj.
| Measurement | Question it answers |
|---|---|
| Interface bytes | How much traffic crossed this layer |
rchar and wchar | How much data the process moved through system calls |
read_bytes and write_bytes | How much work reached the storage layer |
Zašto deskriptor fajla nije upis na disk
VPN u korisničkom prostoru razmjenjuje pakete s kernelom kroz TUN uređaj, koji je znakovni uređaj, a ne običan fajl. Čitanje iz njega predaje paket; pisanje u njega ubacuje paket. Nema stranice sadržaja fajla koja se priprema za pohranu i nema uključene putanje datotečnog sistema.
Zato zauzet tunel može pokazivati ogromne brojače znakova gotovo bez brojača pohrane. Proces je zaista prenio te bajtove i kernelu zaista nije trebao disk da to učini.
cat /proc/$(pgrep -n openvpn)/io
ip -s link show tun0
Prvi izlaz čitajte kao kumulativni od pokretanja procesa, a ne kao stopu. Drugi daje pogled interfejsa na isti promet. Veliki jaz između njih je očekivan i ne ukazuje na curenje, red ili pogrešnu konfiguraciju.
Odakle bajtovi zaista dolaze
Trajni izlaz ima vlastiti budžet i njime upravljaju operacije, a ne korisni teret. Opširni nivo dnevnika, lista klijenata koja se često mijenja ili greška koja se ponavlja u tijesnoj petlji mogu stvarati znatne upise dok tunel prenosi vrlo malo.
Statusna datoteka je snimak koji se prepisuje u intervalu, pa njen trošak zavisi od intervala i od toga koliko zapisa sadrži. Ona nije tekuća kopija prometa svakog klijenta, a skraćivanje intervala mijenja obim upisa bez promjene obima prometa.
Vlasništvo je važno kada tražite te upise. Ako servis predaje poruke demonu za dnevnike, dnevnik ili datoteku piše taj demon i bajtovi se pojavljuju u njegovom obračunu, a ne u vlastitim brojačima VPN procesa. Gledanje samo u VPN proces ne objašnjava ni aktivnost diska ni njeno odsustvo.
Ostale doprinositelje lako je previdjeti: čitanja certifikata i konfiguracije pri pokretanju, kuke koje pišu vlastite zapise, računovodstvene dodatke, ispise pri rušenju i nepovezane poslove na istom hostu. Nijedan od njih ne treba procjenjivati izjednačavanjem prometa tunela sa zapisanim bajtovima.
Ispravno čitanje svakog brojača
Tri detalja odlučuju da li poređenje nešto znači. Identitet procesa je važan jer restartovan servis poništava svoje brojače. Vremenski interval je važan jer su kumulativna cifra i grafikon po sekundi različita mjerenja. I jedinica je važna jer trenutna veličina datoteke dnevnika takođe nije stopa.
grep -E 'rchar|wchar|read_bytes|write_bytes' /proc/$(pgrep -n openvpn)/io
du -sh /var/log/openvpn 2>/dev/null
journalctl --disk-usage
Ako sumnjate na stvarne upise korisnog tereta, potražite komponentu čiji je posao da čuva teret: alat za hvatanje paketa, proxy koji kešira tijela, dodatak koji arhivira. Oni stvaraju promet prema pohrani koji raste s onim što se od njih traži da zabilježe i pripadaju zasebnoj političkoj odluci o zadržavanju i pristupu.
Planiranje kapaciteta s ispravnim brojem
Dimenzionirajte putanju paketa mrežnim brojevima: propusnost, kriptografska obrada i kretanje memorije. Dimenzionirajte pohranu izborima za posmatranje koje ste zaista napravili: nivo dnevnika, zadržavanje, interval statusa i svako hvatanje koje je namjerno omogućeno.
Držanje tih dvaju budžeta odvojenim takođe olakšava čitanje incidenata. Pun disk uz skroman promet tunela upućuje na dnevnike, hvatanja ili nešto nepovezano i brojač interfejsa to nikada neće objasniti. Zasićen link uz tih dnevnik upućuje na drugu stranu.
Poređenje koje je vrijedno je između mjerenja iste vrste. Bajtovi interfejsa naspram bajtova interfejsa kroz vrijeme govore vam o putanji. Upisi na disk naspram kapaciteta pohrane govore vam o zadržavanju. Unakrsno poređenje, promet naspram diska, samo izgleda smisleno i nikada nije.