Zašto dijeljenje datoteka preko VPN-a izgleda sporo: povratna putovanja, a ne Mbps
Protokoli za dijeljenje datoteka pretpostavljaju latenciju lokalne mreže. Brbljavi metapodaci, radnje s malim datotekama i problemi s MTU-om uzrokuju zastoje koje više propusnosti neće popraviti.
Otvaranje dijeljenog foldera preko VPN-a i čekanje dok popis direktorija mili poznato je iskustvo, a prvi poriv je okriviti propusnost. Obično je veza gotovo prazna. Protokol provodi vrijeme čekajući odgovore, a svako čekanje košta puno povratno putovanje koje lokalna mreža nikad nije naplaćivala. Popravite oblik posla i dijeljenje ponovno postaje upotrebljivo.
Udaljena radna kopija ima pogrešan oblik
SMB otvara datoteke, čita metapodatke i potvrđuje u mnogim malim razmjenama. Radna kopija sistema za kontrolu verzija na mapiranom disku pretpostavlja latenciju lokalnog datotečnog sistema i čita mnogo malih datoteka. Stolna baza podataka povlači stranice dok korisnik radi. Svako od toga pretvara kašnjenje u množilac, jer trošak raste s brojem razmjena koje radnja obavi; zato tunel od 40 ms pretvara nekoliko stotina radnji u nekoliko sekundi. Veličina korisnog tereta u toj računici gotovo je nevažna.
Trošak šifriranja mali je dio toga; gubitak je gori, jer jedno ponovno slanje plus srušen prozor zagušenja košta mnogo više od uključenih bajtova.
Brojite povratna putovanja prije megabajta
Izmjerite kašnjenje prije kupovine kapaciteta. Jedan ping kaže šta svaka razmjena plaća.
ping -c 10 fileserver.example.netSažetak daje najmanje, prosječno i najveće vrijeme povratnog putovanja, a raspršenje je jednako važno kao prosjek. Pomnožite prosjek s brojem razmjena koje obavi popis direktorija, pa uporedite s vremenom koje zaista promatrate. Ako se jedna velika datoteka prenosi brzo dok je pregledanje sporo, ograničenje su latencija i broj zahtjeva. Dodavanje deset puta većeg kapaciteta vezi koja se nikad ne zasićuje ne mijenja baš ništa.
Premjestite posao, ne bajtove
Promijenite gdje se posao odvija umjesto da plaćate širu cijev. Poslužite repozitorij umjesto da ga montirate i kopirajte u cjelini alatom koji šalje samo razlike.
rsync -av --info=progress2 ./project/ [email protected]:/srv/share/project/Posluživanje repozitorija, kao što čine hgweb ili udaljeni Git, pušta klijenta da radi na lokalnom klonu pa njegovi pozivi datotečnog sistema nikad ne prelaze tunel. rsync obilazi obje strane i šalje promijenjene blokove, uklanjajući većinu razmjena koje plaća naivno kopiranje. Stolna baza podataka pripada na serverski motor, a klijent se svodi na sučelje, ili cijeli klijent radi na unutrašnjem hostu. Svaka opcija mijenja koliko je latencije protokol izložen, i u tome je poanta.
Zastoj na istoj veličini simptom je MTU-a
Veliki prijenosi koji se zaustave nakon približno iste količine podataka, dok ping i male stranice rade, upućuju na veličinu paketa, a ne na propusnost.
ping -M do -s 1400 -c 3 fileserver.example.netUspješna proba znači da IP paket od 1428 bajtova prelazi put bez fragmentacije, jer ICMP i IP zaglavlja dodaju 28 bajtova. Neuspjeh sa zastavicom zabrane fragmentacije upućuje na to da je upotrebljivi MTU tunela manji nego što server pretpostavlja. Server koji šalje bafere od 9000 bajtova na put od 1500 bajtova prisiljava fragmentaciju ili odbacivanje, a otkrivanje MTU-a puta može tiho propasti kad se ICMP filtrira. Snižite MTU tunela, uključite mssfix na OpenVPN-u ili smanjite serverske bafere, pa ponovno pokrenite isti prijenos za potvrdu.
Izmjerite jaz koji je važan
Izvedite istu radnju na tri načina gdje to pravila dopuštaju: lokalno, preko tunela i preko izravne internet rute. Za svaki zabilježite vrijeme povratnog putovanja, brzinu jednog velikog toka i koliko traje popis direktorija ili otvaranje aplikacije. Usporedba lokalnog izvođenja s izvođenjem preko tunela pokazuje koji trošak prevladava. Kopija koja završi polako upućuje na problem brzine ili kašnjenja, a kopija koja umre u stalnoj točki na veličinu paketa ili uređaj koji čuva stanje na putu.
Kad samo prvih nekoliko megabajta vuče, pogledajte autentifikaciju i metapodatke; kad sve mili, pogledajte kapacitet i gubitak. Popravite odgovarajući uzrok i prestanite očekivati da se WAN veza ponaša kao kabel lokalne mreže.