Да ли знате просечно време одговора ваше веб странице? Да ли знате колико истовремених корисника може да поднесе ваш сајт?
Тестирање оптерећења је од суштинског значаја да веб апликације знају капацитет веб локације. Ако желите да изаберете веб сервер, онда је једна од првих ствари коју желите да урадите да извршите тестирање оптерећења и видите који вам добро функционише.
Бенцхмаркинг вам може помоћи да одлучите;
- Који веб сервер ради најбоље
- Број сервера који вам је потребан да бисте услужили к број захтева
- Која конфигурација вам даје најбоље резултате
- Који технолошки скупови имају бољи учинак
- Када ће ваш сајт радити спорије или ће се покварити
Постоји неколико онлајн алата за извођење теста стреса; међутим, ако тражите интерно решење или желите да мерите само перформансе веб сервера, онда можете користити АпацхеБенцх и алтернативно неке од доле наведених алата.
Користио сам Апацхе & Нгинк веб сервер на којем је хостован ДигиталОцеан да га тестирам.
Преглед садржаја
АпацхеБенцх
АпацхеБенцх (аб) је програм командне линије отвореног кода који ради са било којим веб сервером. У овом посту ћу објаснити како да инсталирам овај мали програм и извршим тест оптерећења да бих упоредио резултате.
Апацхе
Хајде да инсталирамо АпацхеБенцх помоћу команде иум.
yum install httpd-tools
Ако већ имате хттпд-алатке, можете ово занемарити.
Сада, да видимо какав је учинак за 5000 захтева са истовременошћу од 500.
[[email protected] ~]# ab -n 5000 -c 500 http://localhost:80/ This is ApacheBench, Version 2.3 <$Revision: 655654 $> Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/ Licensed to The Apache Software Foundation, http://www.apache.org/ Benchmarking localhost (be patient) Completed 500 requests Completed 1000 requests Completed 1500 requests Completed 2000 requests Completed 2500 requests Completed 3000 requests Completed 3500 requests Completed 4000 requests Completed 4500 requests Completed 5000 requests Finished 5000 requests Server Software: Apache/2.2.15 Server Hostname: localhost Server Port: 80 Document Path: / Document Length: 4961 bytes Concurrency Level: 500 Time taken for tests: 13.389 seconds Complete requests: 5000 Failed requests: 0 Write errors: 0 Non-2xx responses: 5058 Total transferred: 26094222 bytes HTML transferred: 25092738 bytes Requests per second: 373.45 [#/sec] (mean) Time per request: 1338.866 [ms] (mean) Time per request: 2.678 [ms] (mean, across all concurrent requests) Transfer rate: 1903.30 [Kbytes/sec] received Connection Times (ms) min mean[+/-sd] median max Connect: 0 42 20.8 41 1000 Processing: 0 428 2116.5 65 13310 Waiting: 0 416 2117.7 55 13303 Total: 51 470 2121.0 102 13378 Percentage of the requests served within a certain time (ms) 50% 102 66% 117 75% 130 80% 132 90% 149 95% 255 98% 13377 99% 13378 100% 13378 (longest request) [[email protected] ~]#
Као што видите, Апацхе је обрадио 373 захтева у секунди, а требало му је укупно 13,389 секунди да опслужи све захтеве.
Сада знате да подразумевана конфигурација може да испуни ове многе захтеве, тако да када направите било какве промене у конфигурацији, можете поново да урадите тест да бисте упоредили резултате и изабрали најбољи.
Нгинк
Хајде да тестирамо шта смо урадили за Апацхе да бисте могли да упоредите који од њих има бољи учинак.
[[email protected] ~]# ab -n 5000 -c 500 http://localhost:80/ This is ApacheBench, Version 2.3 <$Revision: 655654 $> Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/ Licensed to The Apache Software Foundation, http://www.apache.org/ Benchmarking localhost (be patient) Completed 500 requests Completed 1000 requests Completed 1500 requests Completed 2000 requests Completed 2500 requests Completed 3000 requests Completed 3500 requests Completed 4000 requests Completed 4500 requests Completed 5000 requests Finished 5000 requests Server Software: nginx/1.10.1 Server Hostname: localhost Server Port: 80 Document Path: / Document Length: 3698 bytes Concurrency Level: 500 Time taken for tests: 0.758 seconds Complete requests: 5000 Failed requests: 0 Write errors: 0 Total transferred: 19660000 bytes HTML transferred: 18490000 bytes Requests per second: 6593.48 [#/sec] (mean) Time per request: 75.832 [ms] (mean) Time per request: 0.152 [ms] (mean, across all concurrent requests) Transfer rate: 25317.93 [Kbytes/sec] received Connection Times (ms) min mean[+/-sd] median max Connect: 0 6 11.0 2 53 Processing: 5 19 8.2 17 53 Waiting: 0 18 8.2 16 47 Total: 10 25 17.4 18 79 Percentage of the requests served within a certain time (ms) 50% 18 66% 21 75% 21 80% 22 90% 69 95% 73 98% 75 99% 76 00% 79 (longest request) [[email protected] ~]#
ВОВ!
Да ли си видео то?
Нгинк је обрадио 6593 захтева у секунди! Победник.
Тако да видите само упоређивање са два веб сервера, добићете идеју који да одаберете за своју веб апликацију.
Горњи тест је на ЦентОС 6.8, 64 бит. Можете испробати више комбинација верзије ОС и веб сервера за оптималне резултате.
Не волите АпацхеБенцх из било ког разлога? Без бриге, постоји много других које можете користити за обављање ХТТП учитавања.
СИЕГЕ
СИЕГЕ је ХТТП услужни програм за тестирање оптерећења подржан на УНИКС-у. Можете ставити више УРЛ-ова у текстуалну датотеку за учитавање тестова. Можете инсталирати опсаду користећи иум.
# yum install siege
Покренимо тест са 500 истовремених захтева у трајању од 5 секунди.
[[email protected] ~]# siege -q -t 5S -c 500 http://localhost/ Lifting the server siege... done. Transactions: 4323 hits Availability: 100.00 % Elapsed time: 4.60 secs Data transferred: 15.25 MB Response time: 0.04 secs Transaction rate: 939.78 trans/sec Throughput: 3.31 MB/sec Concurrency: 37.97 Successful transactions: 4323 Failed transactions: 0 Longest transaction: 1.04 Shortest transaction: 0.00 [[email protected] ~]#
Да разбијемо параметре.
-к – да се покрене тихо (не приказује детаље захтева)
-т – трчање 5 секунди
-ц – 500 истовремених захтева
Као што видите, доступност је 100%, а време одговора је 0,04 секунде. Можете подесити параметар теста оптерећења на основу вашег циља.
Али
Али је релативно нов алат за тестирање оптерећења за анализу у реалном времену. Подржава више платформи за инсталацију, укључујући Доцкер.
Када се инсталира, покрените али да бисте видели детаље коришћења.
[email protected]:~# ali no target given Usage: ali [flags] <target URL> Flags: -b, --body string A request body to be sent. -B, --body-file string The path to file whose content will be set as the http request body. --debug Run in debug mode. -d, --duration duration The amount of time to issue requests to the targets. Give 0s for an infinite attack. (default 10s) -H, --header strings A request header to be sent. Can be used multiple times to send multiple headers. -k, --keepalive Use persistent connections. (default true) -M, --max-body int Max bytes to capture from response bodies. Give -1 for no limit. (default -1) -m, --method string An HTTP request method for each request. (default "GET") -r, --rate int The request rate per second to issue against the targets. Give 0 then it will send requests as fast as possible. (default 50) -t, --timeout duration The timeout for each request. 0s means to disable timeouts. (default 30s) -v, --version Print the current version. Examples: ali --duration=10m --rate=100 http://host.xz Author: Ryo Nakao <[email protected]> [email protected]:~#
Као што видите изнад, имате опцију да пошаљете ХТТП заглавља, трајање теста, ограничење брзине, временско ограничење и још много тога. Урадио сам брзи тест на вдзвдз алатима и ево како изгледа излаз.
Извештај је интерактиван и даје детаљне информације о кашњењу.
Гобенцх
Гобенцх је написан на језику Го и једноставном услужном програму за тестирање оптерећења за бенцхмарк перформансе веб сервера. Подржава више од 20.000 истовремених корисника што АпацхеБенцх не подржава.
Апацхе ЈМетер
ЈМетер је један од најпопуларнијих алата отвореног кода за мерење перформанси веб апликација. ЈМетер је апликација заснована на јава и не само веб сервер, већ је можете користити против ПХП-а, Јаве. АСП.нет, СОАП, РЕСТ итд.
ЈМетер је добио пристојан ГУИ, а најновија верзија 3.0 захтева Јава 7 или новију за покретање апликације. Морате испробати ЈМетер ако је ваш циљ да оптимизујете перформансе веб апликације.
врк
врк је још један модеран алат за мерење перформанси који оптерећује ваш веб сервер и даје вам детаље о кашњењу, захтеву у секунди, трансферу у секунди итд.
Помоћу врк-а можете одредити да покренете тест оптерећења са одређеним бројем нити.
Узмимо пример покретања теста у трајању од 5 минута са 500 истовремених корисника са 8 нити.
wrk –t8 –c500 -d300s http://localhost
Аутоцаннон
Инспирисан радом, аутоцаннон је написан у Ноде.јс. Можете га користити програмски, преко АПИ-ја или самосталног услужног програма. Све што вам треба је НодеЈС инсталиран као предуслов.
Можете да контролишете бројне везе, захтеве, трајање, раднике, временско ограничење, брзину везе и нудите мноштво опција за бенцхмарк ваших веб апликација.
Цурл-лоадер
цурл-лоадер је написан у Ц да симулира оптерећење апликације и подржава ССЛ/ТЛС. Уз тест веб странице, можете користити и овај алат отвореног кода за учитавање ФТП сервера.
Можете да направите план тестирања са мешавином ХТТП, ХТТПС, ФТП и ФТПС у једној конфигурацији серије.
хттперф
Тхе хттперф је алатка високих перформанси која се фокусира на мерила на микро и макро нивоу. Подржава ХТТП/1.1 и ССЛ протоколе.
Ако имате очекивани број истовремених корисника и желите да тестирате да ли ваш веб сервер може да испуни одређени број захтева, можете користити следећу команду.
httperf --server localhost --port 80 --num-conns 1000 --rate 100
Горња команда ће тестирати са 100 захтева у секунди за 1000 ХТТП захтева.
Тсунг
Тсунг је мулти-протоколски дистрибуиран алат за тестирање стреса за стрес ХТТП, СОАП, ПостгреСКЛ, ЛДАП, КСАМП, МиСКЛ сервер. Подржава ХТТП/1.0, ХТТП/1.1, а колачићи се аутоматски обрађују.
Генерисање извештаја је изводљиво са Тсунгом.
Закључак
Надам се да ће вам горњи алати за бенцхмаркинг дати идеју о перформансама вашег веб сервера и одлучити шта најбоље функционише за ваш пројекат.
Затим, не заборавите да пратите перформансе своје веб локације.