Այս հոդվածում մենք կփորձենք մեր ուժերը հակադարձ ճարտարագիտության մեջ, կարելի է ասել: Մենք մեր կեղտոտ ձեռքերը կտեղավորենք յուրաքանչյուր վեբ սերվերի գլխարկի տակ՝ շահագործելով դրանք այնպես, որ ոչ ոք երբեք չի շահագործի:
Այս թեստը գնդաձև ձիու չափումն է վակուումում, ոչ այլ ինչ, քան ստացված տվյալներ, և այժմ մենք չգիտենք, թե ինչ անել դրա հետ:
Մեթոդաբանություն
Nginx-ի և Apache-ի օպերացիոն համակարգը Ubuntu 18.04 LTS-ն է, IIS Windows Server Core 2019-ի համար: Մինչ թեստերը բոլոր օպերացիոն համակարգերը ստացել են վերջին թարմացումները 04.12.2019 թվականի դեկտեմբերի XNUMX-ի դրությամբ:
Թեստերն իրականացվել են բացառապես HTTP-ի միջոցով։ Յուրաքանչյուր վեբ սերվեր աշխատում էր նույն էջով, անվճար Jekyll ձևանմուշ Codrops-ից:
Արտադրողականության թեստը կատարվել է 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 հենանիշերի արդյունքները, որպեսզի պատկերացում ունենաք խցանումների մասին:
Վիրտուալ մեքենայից վերցված տվյալները.
Արդյունքները:
TTFB:
Միջին TTFB-ն IIS-ի համար ամենափոքրն է՝ 0,5ms, ընդդեմ Apache-ի 1,4ms-ի և Nginx-ի՝ 4ms-ի:
Արտադրություն.
Նախ, եկեք տեսնենք, թե որքան լավ է յուրաքանչյուր սերվերի մասշտաբը հիմնված միջուկների քանակի վրա:
Գրաֆիկը ցույց է տալիս վեբ սերվերին փորձարկող զանգերի քանակը և հետաձգումը: Գրաֆիկը ցույց է տալիս, որ NGINX-ը մշակել է բոլոր հարցումների 98%-ը՝ կայքը տրամադրելով 20 ms կամ ավելի քիչ: IIS-ը, ինչպես Apache-ն, կատարել է բոլոր զանգերի վերջին 5%-ը համապատասխանաբար 76ms և 14ms:
Գրաֆիկը ցույց է տալիս սթրես թեստի ընթացքում մեկ հարցման մշակման միջին ժամանակը:
Ինչպես երևում է գրաֆիկներից, IIS-ը փչեց և՛ Apache-ն, և՛ Nginx-ը՝ զգալիորեն դանդաղեցնելով արագությունը բարձր ծանրաբեռնվածության պայմաններում:
IIS-ն ակնհայտորեն նախընտրում էր 4 միջուկը, քան XNUMX-ը, ցույց տալով ավելի ցածր ուշացումներ XNUMX-ի վրա, բայց նաև կտրականապես չէր նախընտրում մեկ միջուկը:
NGINX-ը լավ է տարածվում բոլոր 8 միջուկների վրա, և Apache-ի համար մեկ միջուկի սցենարը, թվում է, լավագույն ընտրությունն է:
Մասշտաբայնություն:
Nginx:
Հիմա եկեք նայենք մասշտաբայնությանը միջուկների հաճախականության և քանակի առումով:
Nginx-ը չի անցել 1% սահմանաչափով թեստեր 4 և 1 միջուկների համար, երբ այն գերազանցել է 2000 հարցումը, դադարեցրել է կապը փորձարկողի հետ։
Apache:
Apache-ն, ինչպես և Nginx-ը, մշակելով 2500 հարցում, հրաժարվեց և փակեց կապը։ Apache-ն ձախողեց թեստը 8, 4 և 1 միջուկների վրա՝ 1% սահմանաչափով, բայց բացի այդ, նա նույնպես ձախողեց թեստը մեկ միջուկի վրա 5% սահմանաչափով, ինչը ավելի վատ է, քան Nginx-ը։
IIS:
Թեստերի ընթացքում IIS-ը կուտակեց հարցումների հսկայական հերթ, բայց մշակեց դրանցից յուրաքանչյուրը: Ըստ երևույթին, հարցումների մշակման համար սահմանված ժամկետներ չկան:
Գծապատկերը ցույց է տալիս թեստն ավարտելու համար պահանջվող ժամանակը: Բոլորովին անհեթեթ փորձարկման կոնֆիգուրացիաները մերժվեցին: Դիագրամը ցույց է տալիս, թե որքան պահանջկոտ է IIS-ը, երբ խոսքը վերաբերում է ապարատային, և որքան հիանալի է NGINX-ը:
Scalability սկավառակից.
Nginx:
Հիմա եկեք դիտարկենք մասշտաբայնությունը միջուկների հաճախականության և քանակի և սկավառակի արագության առումով:
Այս անգամ Nginx-ը ձախողել է 4 թեստ՝ երկուսի փոխարեն։
Apache:
Apache-ն ձախողել է նույն թվով թեստեր, ինչ նախորդ անգամ:
IIS:
IIS-ը ցույց է տալիս գրեթե նույնական գրաֆիկ, կարծես սկավառակի սահմանափակումներ չկան: Ընդհանուր առմամբ, բոլոր սերվերների գրաֆիկան առանձնապես չի փոխվել, ինչը նշանակում է, որ նրանցից յուրաքանչյուրը ստատիկ տվյալները քեշել է RAM-ում և այնտեղից սպասարկել։ Այստեղ մենք տեսնում ենք հիմնական խոչընդոտը՝ հենց վեբ սերվերը:
Դեռ վաղ է եզրակացություններ անել այս թեստավորման հիման վրա, մենք դեռ չենք փորձարկել HTTPS-ը, սեղմումը և HTTP/2-ը Let's Encrypt-ի ուղիղ վկայականով: Այս մասին մենք կխոսենք հաջորդ հոդվածում:
Source: www.habr.com