Testi i kill switch: matni boshllëkun, jo vetëm rilidhjen
Një rilidhje e shpejtë dëshmon se klienti është i shpejtë. Regjistroni çfarë doli nga makina gjatë boshllëkut, bashkë me nxitësin që përdorët, përndryshe testi mati vetëm gjysmën.
Një rilidhje që përfundon në një sekondë ju thotë se klienti është i shpejtë. Nuk ju thotë nëse diçka iku ndërsa tuneli ishte jashtë. Një rilidhje që zgjat një minutë ju thotë se klienti është i ngadaltë, dhe ende nuk ju thotë nëse trafiku i drejtpërdrejtë u lejua në boshllëk. Këto janë dy matje, dhe një test kill switch që raporton vetëm të parën nuk e ka testuar çelësin.
Dy vëzhgime, dy verdikte të ndara
Pyetja e disponueshmërisë është e thjeshtë: kur tuneli u bë përsëri i përdorshëm, dhe a iu desh aplikacionit të mbrojtur një lidhje e re për të arritur atje. Pyetja e zbatimit është ndryshe: cilat paketa u larguan nga makina nga momenti kur mbrojtja ra deri në momentin kur u kthye.
Përgjigjuni atyre me regjistrime të ndara. Një rresht thotë se boshllëku zgjati një numër të caktuar sekondash. Një rresht tjetër thotë nëse një kërkesë e pambrojtur pati sukses gjatë atij boshllëku. Bashkimi i tyre në një të vetëm kaluar ose dështuar fsheh rastin që ka më shumë rëndësi: një rilidhje e shpejtë me një rrjedhje.
Ndërtoni një sondë që mund ta matni në kohë
Përdorni një kërkesë që është e padëmshme, e lirë dhe e pavarur nga kanali i kontrollit i vetë tunelit. Cikli më poshtë shtyp një vulë kohe, një status HTTP dhe kohën e kaluar një herë në sekondë, dhe dështon me zë të lartë në vend që të rrijë varur:
while true; do
printf '%s ' "$(date +%H:%M:%S)"
curl -sS -o /dev/null -w '%{http_code} %{time_total}\n' --max-time 2 https://example.com || echo "curl-exit-$?"
sleep 1
done
Lexoni kodet e daljes së curl, jo vetëm statusin. 28 do të thotë se kërkesa skadoi, kështu duket një rrugë e bllokuar. 6 do të thotë se zgjidhja e emrave dështoi, që është një gjetje tjetër dhe shpesh më interesante. 200 me kohë të shkurtër të kaluar gjatë boshllëkut do të thotë se trafikut iu lejua të dalë.
Shkruani daljen në një skedar dhe mbajeni. Historia e terminalit nuk është provë, dhe pjesa interesante zakonisht janë tre rreshta në mes.
Shkaktoni një dështim të vërtetë, jo një të rregullt
Shkëputja nga menuja e vetë klientit teston rrugën bashkëpunuese, ku klienti ka kohë të instalojë rregullat e tij të bllokimit. Vrisni procesin në vend të kësaj, ose prisni lidhjen bazë, dhe testoni rrugën që ndjek një dështim i vërtetë.
Çdo nxitës ushtron një rrugë kodi të ndryshme. Një ndërprerje në anën e serverit, humbja e një lidhjeje lokale dhe rrëzimi i klientit mund të lënë secili një gjendje të ndryshme, dhe njëri prej tyre është me gjasë rasti që do të hasni në fund. Vraponi sondën me të paktën dy nxitës dhe etiketoni rezultatet sipas nxitësit.
Lexoni regjistrin për të parë si duket trafiku i lejuar
Një 200 ose një dështim i shpejtë lidhjeje gjatë boshllëkut është rrjedhje, në çfarëdo drejtimi që tregon. Skadimet gjatë gjithë boshllëkut janë forma e pritur e një politike bllokimi. Zgjidhja e emrave që ka sukses ndërsa lidhjet dështojnë sugjeron se zgjidhësi është ende i arritshëm, që është një rrjedhje e një lloji tjetër.
Soketat ekzistuese kërkojnë kujdes. Një program mund të vazhdojë të përdorë një lidhje që e hapi përpara shkëputjes, prandaj trafiku që duket i gjallë mund të mos provojë se një rrugë e re u lejua. Lista e soketave tregon nëse një lidhje është më e vjetër se ngjarja:
ss -tunp | grep -E 'ESTAB|SYN-SENT' ip route get 198.51.100.7 resolvectl status | sed -n '1,20p'
Krahasoni kohën e nisjes së soketës me vulën e kohës së shkëputjes. Një lidhje më e vjetër se ndërprerja është provë e ripërdorimit të soketës, jo e një rrjedhjeje, dhe raportimi i saj si dështim e dërgon personin tjetër të gjuajë një gabim që nuk ekziston.
Regjistroni rezultatin në një formë që i mbijeton një përditësimi
Shkruani nxitësin, boshllëkun në sekonda, nëse ndonjë kërkesë e pabllokuar pati sukses, nëse zgjidhja e emrave pati sukses, dhe versionet e klientit dhe të sistemit operativ. Ai grup prej pesë faktesh mund të krahasohet midis versioneve, gjë që një paragraf proze nuk mund ta bëjë.
Vraponi përsëri të njëjtin test pas një përditësimi të klientit ose një ndryshimi profili, sepse sjellja e bllokimit është detaj implementimi dhe lëviz. Qëllimi i regjistrit është të vini re lëvizjen përpara se ajo të bëhet incident, jo ta certifikoni klientin një herë.