Отварянето на споделена папка през VPN и чакането списъкът на директорията да пълзи е познато преживяване, а първият инстинкт е да обвиним честотната лента. Обикновено връзката е почти празна. Протоколът прекарва времето си в чакане на отговори и всяко чакане струва цяла обиколка, каквато локалната мрежа никога не е начислявала. Поправете формата на работата и споделянето отново става използваемо.

Отдалеченото работно копие е с грешна форма

SMB отваря файлове, чете метаданни и потвърждава в много малки размени. Работно копие на система за контрол на версиите върху монтиран диск предполага латентност на локална файлова система и чете много малки файлове. Настолна база данни дърпа страници, докато потребителят работи. Всяко от тях превръща закъснението в множител, защото цената расте с броя размени, които операцията извършва; затова тунел с 40 мс превръща няколкостотин операции в няколко секунди. Размерът на полезния товар е почти без значение в тази аритметика.

Разходите за криптиране са малка част от това; загубата е по-лоша, защото едно повторно предаване плюс сринат прозорец за претоварване струват много повече от въпросните байтове.

Бройте обиколките преди мегабайтите

Измерете закъснението, преди да купувате капацитет. Един ping ви казва какво плаща всяка размяна.

ping -c 10 fileserver.example.net

Обобщението дава минимално, средно и максимално време за обиколка, а разсейването е също толкова важно, колкото средното. Умножете средното по броя размени, които прави един списък на директория, и го сравнете с времето, което наистина наблюдавате. Ако един голям файл се предава бързо, докато разглеждането е бавно, ограничението са латентността и броят заявки. Добавянето на десет пъти повече капацитет към връзка, която никога не се насища, не променя абсолютно нищо.

Преместете работата, не байтовете

Променете къде се извършва работата, вместо да плащате за по-широка тръба. Сервирайте хранилището, вместо да го монтирате, и копирайте наведнъж с инструмент, който изпраща само разликите.

rsync -av --info=progress2 ./project/ [email protected]:/srv/share/project/

Когато хранилището се сервира, както прави hgweb или отдалечено Git, клиентът работи върху локален клонинг, така че извикванията му към файловата система никога не пресичат тунела. rsync обхожда двете страни и изпраща променените блокове, премахвайки повечето размени, които плаща наивното копиране. Настолната база данни принадлежи на сървърен двигател, а клиентът се свежда до интерфейс, или целият клиент работи на вътрешен хост. Всяка опция променя на каква латентност е изложен протоколът, и това е смисълът.

Зависванията при еднакъв размер са симптом на MTU

Големите трансфери, които спират след приблизително еднакво количество данни, докато ping и малките страници работят, сочат към размера на пакета, а не към честотната лента.

ping -M do -s 1400 -c 3 fileserver.example.net

Успешна проба означава, че IP пакет от 1428 байта преминава пътя без фрагментация, тъй като заглавките на ICMP и IP добавят 28 байта. Неуспех със флага за забрана на фрагментацията подсказва, че използваемият MTU на тунела е по-малък, отколкото сървърът предполага. Сървър, който изпраща буфери от 9000 байта по път от 1500 байта, налага фрагментация или отпадане, а откриването на MTU по пътя може да се провали тихо, когато ICMP е филтриран. Намалете MTU на тунела, включете mssfix в OpenVPN или свийте сървърните буфери, после пуснете същия трансфер отново за потвърждение.

Измерете разликата, която има значение

Изпълнете същата операция по три начина, където политиката позволява: локално, през тунела и по директен интернет път. За всеки отбележете времето за обиколка, скоростта на един голям поток и колко време отнема списък на директория или отваряне на приложение. Сравнението на локалното изпълнение с това през тунела показва коя цена доминира. Копие, което завършва бавно, подсказва проблем със скоростта или закъснението, докато копие, което умира в постоянна точка, подсказва размер на пакета или устройство със състояние по пътя.

Когато пълзят само първите мегабайти, гледайте удостоверяването и метаданните; когато всичко пълзи, гледайте капацитета и загубите. Поправете съответната причина и спрете да очаквате WAN връзка да се държи като кабел на локална мрежа.

Подобни статии