ՎԵԲ սերվերների ճակատամարտ. Մաս 1 – HTTP կապից դուրս.

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

Այս թեստը գնդաձև ձիու չափումն է վակուումում, ոչ այլ ինչ, քան ստացված տվյալներ, և այժմ մենք չգիտենք, թե ինչ անել դրա հետ:

ՎԵԲ սերվերների ճակատամարտ. Մաս 1 – HTTP կապից դուրս.

Մեթոդաբանություն

Nginx-ի և Apache-ի օպերացիոն համակարգը Ubuntu 18.04 LTS-ն է, IIS Windows Server Core 2019-ի համար: Մինչ թեստերը բոլոր օպերացիոն համակարգերը ստացել են վերջին թարմացումները 04.12.2019 թվականի դեկտեմբերի XNUMX-ի դրությամբ:

Թեստերն իրականացվել են բացառապես HTTP-ի միջոցով։ Յուրաքանչյուր վեբ սերվեր աշխատում էր նույն էջով, անվճար Jekyll ձևանմուշ Codrops-ից: ՈՒղեցույց. Յուրաքանչյուր վեբ սերվերում անջատված էր gzip սեղմումը:

Արտադրողականության թեստը կատարվել է Httpd-գործիքներով՝ փաստարկներով.

ab -n 50000 -c 500 http://192.168.76.204:80/

Սերվերները սահմանափակված էին 10, 5 և 1 տոկոս միջուկով 8, 4 և մեկ միջուկում: Փորձարկման նստարանը 9900K@5400 ՄՀց համակարգիչ էր, ինչը նշանակում է, որ 10% սահմանաչափ ստացող սերվերը ստանում է մոտ 540 ՄՀց մեկ միջուկի համար:

TTFB թեստն իրականացվել է այն ժամանակ, երբ սերվերը սկզբում բեռնվել և չափվել է DevTools-ի միջոցով, արդյունքը ստանալուց հետո սերվերն անջատվել է և հետ է վերադարձվել նախորդ անցակետին՝ ցանկացած տեսակի քեշի տեսքը վերացնելու համար:

Փորձարկիչը և վեբ սերվերը գտնվում էին նույն հոսթի և նույն վիրտուալ անջատիչի վրա:

Սկավառակի ենթահամակարգն անհապաղ գնահատելու համար ATTO և CrystalDIskMark հենանիշերի արդյունքները, որպեսզի պատկերացում ունենաք խցանումների մասին:

Վիրտուալ մեքենայից վերցված տվյալները.ՎԵԲ սերվերների ճակատամարտ. Մաս 1 – HTTP կապից դուրս.
ՎԵԲ սերվերների ճակատամարտ. Մաս 1 – HTTP կապից դուրս.
ՎԵԲ սերվերների ճակատամարտ. Մաս 1 – HTTP կապից դուրս.
ՎԵԲ սերվերների ճակատամարտ. Մաս 1 – HTTP կապից դուրս.

Արդյունքները:

TTFB:

ՎԵԲ սերվերների ճակատամարտ. Մաս 1 – HTTP կապից դուրս.
Միջին TTFB-ն IIS-ի համար ամենափոքրն է՝ 0,5ms, ընդդեմ Apache-ի 1,4ms-ի և Nginx-ի՝ 4ms-ի:

Արտադրություն.

Նախ, եկեք տեսնենք, թե որքան լավ է յուրաքանչյուր սերվերի մասշտաբը հիմնված միջուկների քանակի վրա:

ՎԵԲ սերվերների ճակատամարտ. Մաս 1 – HTTP կապից դուրս.
Գրաֆիկը ցույց է տալիս վեբ սերվերին փորձարկող զանգերի քանակը և հետաձգումը: Գրաֆիկը ցույց է տալիս, որ NGINX-ը մշակել է բոլոր հարցումների 98%-ը՝ կայքը տրամադրելով 20 ms կամ ավելի քիչ: IIS-ը, ինչպես Apache-ն, կատարել է բոլոր զանգերի վերջին 5%-ը համապատասխանաբար 76ms և 14ms:

ՎԵԲ սերվերների ճակատամարտ. Մաս 1 – HTTP կապից դուրս.
ՎԵԲ սերվերների ճակատամարտ. Մաս 1 – HTTP կապից դուրս.
ՎԵԲ սերվերների ճակատամարտ. Մաս 1 – HTTP կապից դուրս.
Գրաֆիկը ցույց է տալիս սթրես թեստի ընթացքում մեկ հարցման մշակման միջին ժամանակը:

Ինչպես երևում է գրաֆիկներից, IIS-ը փչեց և՛ Apache-ն, և՛ Nginx-ը՝ զգալիորեն դանդաղեցնելով արագությունը բարձր ծանրաբեռնվածության պայմաններում: 

IIS-ն ակնհայտորեն նախընտրում էր 4 միջուկը, քան XNUMX-ը, ցույց տալով ավելի ցածր ուշացումներ XNUMX-ի վրա, բայց նաև կտրականապես չէր նախընտրում մեկ միջուկը:

NGINX-ը լավ է տարածվում բոլոր 8 միջուկների վրա, և Apache-ի համար մեկ միջուկի սցենարը, թվում է, լավագույն ընտրությունն է:

Մասշտաբայնություն:

Nginx:

Հիմա եկեք նայենք մասշտաբայնությանը միջուկների հաճախականության և քանակի առումով: 

ՎԵԲ սերվերների ճակատամարտ. Մաս 1 – HTTP կապից դուրս.
Nginx-ը չի անցել 1% սահմանաչափով թեստեր 4 և 1 միջուկների համար, երբ այն գերազանցել է 2000 հարցումը, դադարեցրել է կապը փորձարկողի հետ։

Apache:

ՎԵԲ սերվերների ճակատամարտ. Մաս 1 – HTTP կապից դուրս.
Apache-ն, ինչպես և Nginx-ը, մշակելով 2500 հարցում, հրաժարվեց և փակեց կապը։ Apache-ն ձախողեց թեստը 8, 4 և 1 միջուկների վրա՝ 1% սահմանաչափով, բայց բացի այդ, նա նույնպես ձախողեց թեստը մեկ միջուկի վրա 5% սահմանաչափով, ինչը ավելի վատ է, քան Nginx-ը։

IIS:

ՎԵԲ սերվերների ճակատամարտ. Մաս 1 – HTTP կապից դուրս.
Թեստերի ընթացքում IIS-ը կուտակեց հարցումների հսկայական հերթ, բայց մշակեց դրանցից յուրաքանչյուրը: Ըստ երևույթին, հարցումների մշակման համար սահմանված ժամկետներ չկան:

ՎԵԲ սերվերների ճակատամարտ. Մաս 1 – HTTP կապից դուրս.
Գծապատկերը ցույց է տալիս թեստն ավարտելու համար պահանջվող ժամանակը: Բոլորովին անհեթեթ փորձարկման կոնֆիգուրացիաները մերժվեցին: Դիագրամը ցույց է տալիս, թե որքան պահանջկոտ է IIS-ը, երբ խոսքը վերաբերում է ապարատային, և որքան հիանալի է NGINX-ը:

Scalability սկավառակից.

Nginx:

Հիմա եկեք դիտարկենք մասշտաբայնությունը միջուկների հաճախականության և քանակի և սկավառակի արագության առումով: 

ՎԵԲ սերվերների ճակատամարտ. Մաս 1 – HTTP կապից դուրս.
Այս անգամ Nginx-ը ձախողել է 4 թեստ՝ երկուսի փոխարեն։

Apache:

ՎԵԲ սերվերների ճակատամարտ. Մաս 1 – HTTP կապից դուրս.
Apache-ն ձախողել է նույն թվով թեստեր, ինչ նախորդ անգամ:

IIS:

ՎԵԲ սերվերների ճակատամարտ. Մաս 1 – HTTP կապից դուրս.
IIS-ը ցույց է տալիս գրեթե նույնական գրաֆիկ, կարծես սկավառակի սահմանափակումներ չկան: Ընդհանուր առմամբ, բոլոր սերվերների գրաֆիկան առանձնապես չի փոխվել, ինչը նշանակում է, որ նրանցից յուրաքանչյուրը ստատիկ տվյալները քեշել է RAM-ում և այնտեղից սպասարկել։ Այստեղ մենք տեսնում ենք հիմնական խոչընդոտը՝ հենց վեբ սերվերը:

Դեռ վաղ է եզրակացություններ անել այս թեստավորման հիման վրա, մենք դեռ չենք փորձարկել HTTPS-ը, սեղմումը և HTTP/2-ը Let's Encrypt-ի ուղիղ վկայականով: Այս մասին մենք կխոսենք հաջորդ հոդվածում:

ՎԵԲ սերվերների ճակատամարտ. Մաս 1 – HTTP կապից դուրս.

Source: www.habr.com

Добавить комментарий