Visual Studio lassú VPN-megosztáson: miért lesznek a mentések oda-vissza utak
A megosztáson át történő szerkesztés oda-vissza utakká teszi a mentést, a menüket és a változáskövetést. Helyezze a munkapéldányt helyi tárolóra, és egyetlen objektumként vigye át az előzményeket a bejárásuk helyett.
Egy megoldás, amely helyi lemezről egy másodperc alatt megnyílik, harminc másodperc alatt nyílik meg egy alagúton át elérhető megosztásról. Ritkán maga az alagút az ok. Ami megváltozik, az az, hogy a korábban helyi hívásokból álló műveletek szinkron oda-vissza utakká válnak, és a szerkesztő több ilyet is végrehajt, mielőtt az ablak megjelenik. Az alábbi mechanizmus megmagyarázza, miért drága mindegyik, és melyeket távolíthatja el.
Mit tesz a szerkesztő, amíg egy fájl nyitva van
A változáskövetést használó szerkesztő előfizetést tart minden nyitott fájlon. A helyi kötet a fájlrendszerből szolgálja ki ezt az előfizetést, hálózat nélkül. Megosztáson ugyanez a funkció ismétlődő metaadat-olvasásokká silányulhat, mert az értesítési modell nem viselkedik ugyanúgy SMB felett. A változáskövetés kikapcsolása korrekt első kísérlet, mivel a kérések egész osztályát szünteti meg az alagút érintése nélkül.
A projektrendszer saját forgalmat ad hozzá. Egy megoldás betöltése könyvtárakat sorol fel, projektfájlokat olvas, és esetleg SDK-kat vagy csomagokat kutat, és minden kutatás oda-vissza út, ha az útvonal távoli. A sok projektet tartalmazó megoldás megsokszorozza ezt a számot, ezért a nyitási idő gyorsabban nő, mint a fájlméretek sejtetnék.
Héjkeresések, amelyek a menü megjelenése előtt lejárnak
A Windows egy második akadályforrást ad, amelynek semmi köze az IDE-hez. Az Intéző és héjkiterjesztései minden alkalommal újra feloldják a korábban használt nyomtatókat, csatolt meghajtókat és parancsikonokat, amikor egy helyi menü megnyílik. Ha ezek a célok olyan hálózaton vannak, amelyet az alagút nem ér el, minden feloldás blokkol, amíg le nem jár egy időtúllépés, és csak ezután rajzolódik ki a menü. Ezért a jobb kattintás másodpercekig akadhat, miközben maga a fájl normálisan megnyílik.
Távolítsa el a halott leképezéseket és a nyomtatási sorokat, vagy csak azokat tartsa meg, amelyek a ténylegesen használt hálózaton léteznek. Ugyanez a logika vonatkozik mindenre, ami a háttérben old fel egy útvonalat, beleértve a legutóbbi fájlok listáit és a kitűzött mappákat.
net use
Get-Printer | Select-Object Name, PortName
Measure-Command { Get-ChildItem \files\proj | Out-Null }
Miért nyer a helyi munkapéldány
A megosztáson való közvetlen munka a legrosszabb elrendezés a szerkesztés-építés-tesztelés ciklushoz, mert a szerkesztő, a fordító és a verziókezelő kliens mindegyike külön olvassa azokat a távoli fájlokat. Mindegyikük a saját oda-vissza útját fizeti, és egy építés fájlonként egyszer fizet. A helyi példány a tárolón keresztüli feltolással a kis átkelések áradatát egyetlen szándékosra cseréli. A kapcsolat nem javult; az átkelések száma összeomlott.
Ez strukturális változás, nem hangolási gyakorlat, és éppen ezért működik akkor, amikor az alagút beállításai nem. Az is nyilvánvalóvá teszi a hibaüzemmódot: ha az építés helyi példánnyal is lassú, a megosztás soha nem volt a probléma.
Vigye át az előzményeket egyetlen objektumként
Amikor magának a tárolónak kell átkelnie az alagúton, küldje az előzményeket egyetlen objektumban a bejárásuk helyett. A csomag egyetlen fájl, és ezért egyetlen átvitel, míg a több ezer szabad objektumot bejáró checkout több ezer átkelésbe kerül. A Mercurial és a Git is támogatja ezt a formát.
hg bundle --base 9f2c1a7e outgoing.hg
hg unbundle outgoing.hg
git bundle create repo.bundle main
git clone repo.bundle repo
Az alapváltozat az a rész, amelyet el kell találni, mert ez dönti el, mennyi előzmény utazik. Mindent becsomagolni működik, és elpazarolja a kapcsolatot, míg az utolsó közös változástól csomagolni csak azt viszi át, ami a másik oldalról hiányzik.
Mérjen három műveletet, mielőtt a sávszélességet hibáztatja
Mérjen három dolgot külön: egy kis fájl megnyitva, egy könyvtár listázva, egy mentés befejezve. Ha mindhárom lassú a fájlszám arányában, a költség az oda-vissza utak. Ha az egyik elakad, míg a többi rendben van, időtúllépésre gyanakodjon egy elérhetetlen erőforrás felé, nem a sávszélességre. Jegyezze fel, melyik hálózaton volt a gép az egyes futásoknál, mert egy másik profilhoz újracsatlakozó laptop megváltoztathatja a választ a kísérletek között.
Ezután ismételje meg ugyanazt a hármat a projekt helyi példányával szemben. A különbség a megosztás ára, és ez az a szám, amelyet idézni kell, amikor valaki gyorsabb kapcsolatot javasol megoldásként.