Մեկ վայրկյանում ավարտվող վերակապակցումը ձեզ ասում է, որ հաճախորդը արագ է։ Այն չի ասում, թե արդյոք ինչ-որ բան դուրս պրծավ, մինչ թունելը անջատված էր։ Մեկ րոպե տևող վերակապակցումը ձեզ ասում է, որ հաճախորդը դանդաղ է, և դեռ չի ասում, թե արդյոք ուղիղ թրաֆիկը թույլատրված էր բացի ընթացքում։ Սրանք երկու չափումներ են, և kill switch-ի թեստը, որը հաղորդում է միայն առաջինը, չի փորձարկել անջատիչը։

Երկու դիտարկում, երկու առանձին վճիռ

Հասանելիության հարցը պարզ է. երբ թունելը նորից դարձավ օգտագործելի, և արդյոք պաշտպանված հավելվածին նոր կապ էր պետք այնտեղ հասնելու համար։ Կիրառման հարցը այլ է. որ փաթեթներ լքեցին մեքենան պաշտպանության անկման պահից մինչև դրա վերադարձի պահը։

Պատասխանեք դրանց առանձին գրառումներով։ Մի տող ասում է, որ բացը տևել է որոշակի քանակությամբ վայրկյան։ Մեկ այլ տող ասում է, թե արդյոք չպաշտպանված հարցումը հաջողվեց այդ բացի ընթացքում։ Դրանք մեկ անցավ կամ ձախողվեց-ի մեջ միավորելը թաքցնում է ամենակարևոր դեպքը. արագ վերակապակցում արտահոսքով։

Կառուցեք ժամանակաչափվող զոնդ

Օգտագործեք հարցում, որը անվնաս է, էժան և անկախ թունելի սեփական կառավարման ուղուց։ Ստորև բերված ցիկլը վայրկյանը մեկ տպում է ժամանակի դրոշմ, HTTP կարգավիճակ և անցած ժամանակ, և կախվելու փոխարեն բարձրաձայն ձախողվում է՝

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

Կարդացեք curl-ի ելքի կոդերը, ոչ միայն կարգավիճակը։ 28 նշանակում է, որ հարցման ժամկետը լրացել է, արգելափակված ուղին այսպիսի տեսք ունի։ 6 նշանակում է, որ անունների լուծումը ձախողվել է, ինչը այլ հայտնաբերում է և հաճախ ավելի հետաքրքիր։ 200-ը՝ բացի ընթացքում փոքր անցած ժամանակով, նշանակում է, որ թրաֆիկին թույլ են տվել դուրս գալ։

Գրեք ելքը ֆայլի մեջ և պահեք այն։ Տերմինալի պտտահոսքը ապացույց չէ, և հետաքրքիր մասը սովորաբար մեջտեղի երեք տողերն են։

Առաջացրեք իրական խափանում, ոչ կոկիկ

Հաճախորդի սեփական ընտրացանկից անջատումը փորձարկում է համագործակցային ուղին, որտեղ հաճախորդը ժամանակ ունի տեղադրելու իր արգելափակման կանոնները։ Փոխարենը սպանեք գործընթացը կամ կտրեք հիմքում ընկած կապը, և կփորձարկեք այն ուղին, որով անցնում է իրական խափանումը։

Յուրաքանչյուր գործարկիչ վարժեցնում է կոդի այլ ուղի։ Սերվերի կողմի խափանումը, տեղական կապի կորուստը և հաճախորդի վթարն ինքնուրույն կարող են տարբեր վիճակ թողնել, և դրանցից մեկը հավանաբար այն դեպքն է, որին ի վերջո կհանդիպեք։ Գործարկեք զոնդը առնվազն երկու գործարկիչով և նշեք արդյունքները ըստ գործարկիչի։

Կարդացեք մատյանը՝ տեսնելու, թե ինչպիսի տեսք ունի թույլատրված թրաֆիկը

200-ը կամ արագ կապի ձախողումը բացի ընթացքում արտահոսք է՝ անկախ ուղղությունից։ Բացի ողջ ընթացքում ժամկետի ավարտերը արգելափակման քաղաքականության սպասվող ձևն են։ Անունների լուծման հաջողությունը՝ կապերի ձախողման ժամանակ, հուշում է, որ լուծիչը դեռ հասանելի է, ինչը այլ տեսակի արտահոսք է։

Գոյություն ունեցող պորտերը խնամք են պահանջում։ Ծրագիրը կարող է շարունակել օգտագործել անջատումից առաջ բացած կապը, ուստի արտաքուստ կենդանի թրաֆիկը գուցե չապացուցի, որ նոր ուղին թույլատրվել է։ Պորտերի ցանկը ցույց է տալիս, թե արդյոք կապը նախորդում է իրադարձությանը՝

ss -tunp | grep -E 'ESTAB|SYN-SENT'
ip route get 198.51.100.7
resolvectl status | sed -n '1,20p'

Համեմատեք պորտի մեկնարկի ժամը անջատման ժամանակի դրոշմի հետ։ Խափանումից հին կապը վկայում է պորտի կրկնակի օգտագործման, ոչ արտահոսքի մասին, և այն որպես ձախողում հաղորդելը հաջորդ մարդուն ուղարկում է գոյություն չունեցող սխալի որոնման։

Գրանցեք արդյունքը թարմացումը վերապրող ձևով

Գրանցեք գործարկիչը, բացը վայրկյաններով, արդյոք որևէ չարգելափակված հարցում հաջողվեց, արդյոք անունների լուծումը հաջողվեց, և հաճախորդի ու օպերացիոն համակարգի տարբերակները։ Հինգ փաստերի այս հավաքածուն կարելի է համեմատել թողարկումների միջև, ինչը չի կարող անել արձակ մի պարբերություն։

Կրկին գործարկեք նույն թեստը հաճախորդի թարմացումից կամ պրոֆիլի փոփոխությունից հետո, որովհետև արգելափակման վարքը ներդրման մանրամասն է և այն շարժվում է։ Գրառման նպատակն է նկատել շարժումը մինչև այն միջադեպ դառնալը, ոչ թե հաճախորդին մեկ անգամ հավաստագրելը։

Առնչվող հոդվածներ