VPN սերվերի ծանրաբեռնվածության բացատրությունը՝ օգտատերեր, CPU թե վերինուղի
Ծանրաբեռնվածության ցածր ցուցանիշը կարող է նշանակել պարապ օգտատերեր, ազատ CPU կամ լայն վերինուղի։ Կարդացեք loadavg-ը, ինտերֆեյսի հաշվիչները և կարգավիճակի ֆայլը, նախքան այն արագ անվանելը։
0.4 ծանրաբեռնվածության վրա նստած դարպասը դեռ կարող է սողալ իր հետևում գտնվող յուրաքանչյուր օգտատիրոջ համար։ Միջին ծանրաբեռնվածությունը հաշվում է այն առաջադրանքները, որոնք կարող են կատարվել կամ խրվել են անընդհատ քնի մեջ, և չորս միջուկ ունեցող հոսթի վրա մեկ հագեցած պրոցեսը բավական է այն 1.0-ի ուղղությամբ մղելու համար, մինչ երեք միջուկ պարապ նստած են։ Այդ թիվը որպես պահուստ կարդալը վերջնակետի ընտրության ամենատարածված սխալն է։ Թունելն իրականում սահմանափակողը սովորաբար չորս բաներից մեկն է՝ մեկ զբաղված միջուկ, վերինուղին, դրա դիմացի հերթը կամ մեկ նստաշրջանի քաղաքականություն, որը ոչ ոք չի փաստաթղթավորել։
Միջին ծանրաբեռնվածությունը հաշվում է առաջադրանքներ, ոչ թողունակություն
Միջուկը նմուշառում է կատարման հերթը և մուտք-ելքի սպասող առաջադրանքների քանակը, այնուհետև հարթեցնում է երկուսն էլ մեկ, հինգ և տասնհինգ րոպեի ընթացքում։ Այդ սահմանման մեջ ոչինչ չի հիշատակում բայթեր, փաթեթներ կամ թունելներ։ Կախված պահոց ունեցող հոսթը կարող է բարձր ծանրաբեռնվածություն հաղորդել գրեթե առանց երթևեկության, և հոսթը, որը միջուկի տվյալների ուղիով գիգաբիթ է մղում, կարող է հարմարավետ ծանրաբեռնվածություն հաղորդել։
Հետևաբար ծանրաբեռնվածությունը թունելի աշխատանքի հետ կապելու համար պետք է տեսք յուրաքանչյուր միջուկով։ Եթե մեկ միջուկ ամբողջությամբ լցված է, վահանակի ընդհանուր տոկոսը դեռ լավ տեսք կունենա:
cat /proc/loadavg
mpstat -P ALL 1 1
top -H -b -n 1 | head -n 20
Երրորդ հրամանն այն է, որն ամենաշատն է նշանակում VPN հոսթերի վրա։ OpenVPN 2.x-ում օգտատիրոջ տարածությունում փաթեթների մշակումը մեծ մասամբ սերիականացված է յուրաքանչյուր պրոցեսի համար, ուստի մեկ զբաղված թելը կարող է դառնալ առաստաղը, մինչ վահանակը հաղորդում է առատ ազատ հզորության մասին։ Եթե ձեր դանդաղ շրջանում մեկ թելը զբաղեցնում է միջուկի մեծ մասը, հոսթը որպես ամբողջություն թերսարքայված չէ. այն սահմանափակված է այն չափման մեջ, որը պատահաբար նշանակություն ունի։
Ուշադրություն դարձրեք նաև ժամանակին։ Տասնհինգ րոպեի միջինները թաքցնում են այն պոռթկումը, որը փչացրել է զանգը, ուստի բողոքից հետո արված էկրանի նկարը թույլ ապացույց է։ Նմուշներ վերցրեք խնդրի ընթացքում և պահեք ժամանակի դրոշմանիշը ելքի հետ միասին։
Վերինուղին և դրա դիմացի հերթը
Ինտերֆեյսի հաշվիչները պատասխանում են թողունակության հարցին, որին CPU-ի թվերը չեն կարող։ Նրանք նաև տարանջատում են հզորությունը կորուստից, և դրանք տարբեր խափանումներ են՝ տարբեր լուծումներով:
ip -s link show dev eth0
tc -s qdisc show dev eth0
nstat -az TcpRetransSegs TcpExtTCPLostRetransmit
Ձեր փորձարկման ընթացքում իր հատկացված արագությանը մոտ գտնվող կապը հենց բացատրությունն է, և ազատ CPU-ի ոչ մի քանակություն դա չի փոխի։ qdisc տողը ավելացնում է այն մանրամասնությունը, որը կարևոր է ինտերակտիվ երթևեկության համար. կուտակումն ու կորուստները ձեզ ասում են՝ փաթեթները հերթում սպասու՞մ են մեկնելուց առաջ։ Ծավալուն վերբեռնման տակ լցվող հերթը ստեղծում է հենց այն ախտանիշը, որի համար մարդիկ մեղադրում են հեռավոր սերվերին՝ դանդաղ զանգեր կապի վրա, որը դեռ լավ է ցուցադրվում չափումներում։
Կրկնակի ուղարկման հաշվիչները բռնում են այն դեպքը, երբ փաթեթները մեկնում են, բայց երբեք մաքուր չեն հասնում։ Եթե դանդաղ պատուհանում կրկնակի ուղարկումները աճում են, և ինտերֆեյսը հեռու է հզորությունից, խնդիրը ուղու մեջ է, ոչ հոսթի վրա, և նույն քաղաքի մեկ այլ վերջնակետ տեղափոխվելը չի օգնի։
Նստաշրջանների թիվը նկարագրում է պահանջարկը, ոչ պահուստը
Յուրաքանչյուր հանրային գրացուցակ ցույց է տալիս միավոր միացված օգտատերեր, և դրանցից գրեթե ոչ մեկը չի ասում, թե ինչ են անում այդ օգտատերերը։ Քսան ինտերակտիվ աշխատանք կատարող նստաշրջան և չորս մեծ ֆայլեր ներբեռնող նստաշրջան նույն սարքաշարի վրա ստեղծում են շատ տարբեր ծանրաբեռնվածություններ։ Երկրորդ օրինաչափությունը անտեսանելի է օգտատերերի թվում, և հենց այն է, որ փչացնում է երեկոն։ Ուստի նստաշրջանների թիվը լավագույնս կարդալ որպես պահանջարկի ակնարկ՝ երբեք որպես ազատ հզորության մասին հայտարարություն։
| Number on the page | What it is really measuring | What it cannot tell you |
|---|---|---|
| Connected users | How many sessions hold an address | How much each one is transferring |
| Load or score | Whatever the operator chose to publish | Whether that definition matches your task |
| Uptime | How long since the process started | Current capacity, queue depth or packet loss |
| Distance or ping | Round-trip time on a small probe | Throughput under sustained transfer |
Ձեր վերահսկած հոսթի վրա կարգավիճակի ֆայլը տալիս է բացակայող չափումը։ OpenVPN գրում է պարբերական պատկեր, որը ներառում է մեկ հաճախորդի բայթային հաշվիչներ, և դա բավական է տեսնելու, թե արդյոք մեկ նստաշրջանն է պատասխանատու ամբողջ վերինուղու համար:
status /run/openvpn/server.status 10
# then, after at least one interval
grep -E "^CLIENT_LIST" /run/openvpn/server.status
Տասը վայրկյան տարբերությամբ երկու նմուշ այդ կուտակային հաշվիչները վերածում են մեկ հաճախորդի արագության։ Դա այն չափումն է, որը փոխարինում է օգտատերերի թիվը, և հենց այդպես էլ բացահայտում եք, որ մեկ սխալ կարգավորված հաճախորդ ամեն գիշեր նույն ժամին հագեցնում է կապը։
Մեկ նստաշրջանի սահմանները թաքնված են քաղաքականության մեջ
Սերվերը կարող է պարապ լինել և այնուամենայնիվ հրաժարվել ձեզ թողունակություն տալուց։ Արագության սահմանները, մեկ հաճախորդի թողունակության առաստաղները և երթևեկության ձևավորումը հաճախ կիրառվում են ընդհանուր անվան կամ լողավազանի համար, ուստի նույն դարպասի երկու օգտատեր կարող են բոլորովին տարբեր արդյունքներ ստանալ։ Մեխանիզմը նուրբ չէ, բայց դրսից անտեսանելի է, որովհետև թունելը երկու դեպքում էլ նորմալ է բարձրանում։
Ձևավորումը փնտրեք թունելի ինտերֆեյսում, ոչ ֆիզիկականում։ Ստուգեք՝ սահմանը հետևում է օգտատիրոջը, վկայականին, թե հասցեների լողավազանին։ Եթե ձեր փորձնական հաշիվը ընկնում է առանց սահմանի լողավազան, դուք կեզրակացնեք, որ սերվերը կարգին է, իսկ բողոքող օգտատերը սխալ է։ Այդ եզրակացությունը ավելի վատ է, քան ոչ մի եզրակացություն, որովհետև այն փակում է տոմսը։
Համեմատեք երկու վերջնակետ մեկ ֆիքսված առաջադրանքով
Հաճախորդի կողմի փորձը դեռ արժե անել, բայց միայն այն դեպքում, երբ փոփոխականները ամրագրված են։ Օգտագործեք նույն սարքը, նույն մուտքի ցանցը, նույն արձանագրությունը և նույն նպատակակետ ֆայլը, ապա կրկնեք նման հեռավորության վրա գտնվող երկրորդ վերջնակետի դեմ։ Ամեն ինչ, որ փոխվում է վազքների միջև, ներառյալ օրվա ժամը, աղտոտում է արդյունքը։
Գրանցեք անհաջողությունները նույնքան ուշադիր, որքան հաջողությունները։ Մի շարք, որտեղ երեք վերջնակետ աշխատում են, իսկ մեկը ժամկետանց է դառնում, ավելի տեղեկատվական է, քան չորս արագության թվեր, որովհետև այն մատնանշում է ուղու կամ քաղաքականության խնդիր, ոչ թե հզորության։ Յուրաքանչյուր դեպք գործարկեք առնվազն երկու անգամ. մեկ դանդաղ նմուշը ոչինչ չի ապացուցում ընդհանուր ցանցում։
Վերջապես, պահեք հավաքած թվերը դրանց աջակցող պնդման հետ միասին։ "Այս վերջնակետը կատարեց փոխանցումը նույն պատուհանում, որտեղ մյուսը խրվեց" պաշտպանելի է, մինչդեռ "այս վերջնակետն ավելի արագ է" հրավիրում է վեճի, որը հնարավոր չէ հաղթել գլխավոր էջի գնահատականով։ OpenVPN 2.6-ի ձեռնարկը փաստաթղթավորում է կարգավիճակի ֆայլը և ձևավորման ընտրանքները, եթե ձեզ հարկավոր են հոսթի կողմի ճշգրիտ հրահանգները։