Kā veikt tīmekļa servera veiktspējas etalonu?

Vai zināt savas vietnes vidējo atbildes laiku? Vai zināt, cik daudz lietotāju vienlaikus var apstrādāt jūsu vietne?

Slodzes pārbaude ir būtiska, lai tīmekļa lietojumprogrammas zinātu vietnes jaudu. Ja vēlaties izvēlēties tīmekļa serveri, viena no pirmajām lietām, ko vēlaties darīt, ir veikt slodzes pārbaudi un redzēt, kurš no tiem jums ir piemērots.

Salīdzinošā novērtēšana var palīdzēt jums pieņemt lēmumu;

  • Kurš tīmekļa serveris darbojas vislabāk
  • Nepieciešamo serveru skaits, lai apkalpotu x pieprasījumu skaits
  • Kura konfigurācija sniedz vislabākos rezultātus
  • Kuras tehnoloģiju grupas darbojas labāk
  • Kad jūsu vietne darbosies lēnāk vai sabojāsies

Ir vairāki tiešsaistes rīki stresa testa veikšanai; tomēr, ja meklējat iekšēju risinājumu vai vēlaties salīdzināt tikai tīmekļa servera veiktspēju, varat izmantot ApacheBench un alternatīvi dažus no tālāk uzskaitītajiem rīkiem.

Esmu izmantojis Apache un Nginx tīmekļa serveri, kas mitināts vietnē DigitalOcean lai to pārbaudītu.

ApacheBench

ApacheBench (ab) ir atvērtā pirmkoda komandrindas programma, kas darbojas ar jebkuru tīmekļa serveri. Šajā ziņojumā es paskaidrošu, kā instalēt šo mazo programmu un veikt slodzes testu, lai salīdzinātu rezultātus.

Apache

Instalēsim ApacheBench, izmantojot komandu yum.

yum install httpd-tools

Ja jums jau ir httpd-tools, varat to ignorēt.

Tagad apskatīsim, kā tas darbojas 5000 pieprasījumiem ar 500 vienlaicību.

[[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] ~]#

Tātad, kā redzat, Apache ir apstrādājis 373 pieprasījumus sekundē, un kopējo pieprasījumu apkalpošanai bija nepieciešamas 13,389 sekundes.

  Kā atiestatīt Fitbit Inspire 2, nezaudējot datus

Tagad jūs zināt, ka noklusējuma konfigurācija var apkalpot šos daudzos pieprasījumus, tāpēc, veicot konfigurācijas izmaiņas, varat vēlreiz veikt pārbaudi, lai salīdzinātu rezultātus un izvēlētos labāko.

Nginx

Pārbaudīsim to pašu, ko veicām Apache, lai jūs varētu salīdzināt, kura no tām darbojas labāk.

[[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] ~]#

WOW!

Vai tu to redzēji?

Nginx apstrādāja 6593 pieprasījumus sekundē! Uzvarētājs.

Tātad, salīdzinot ar diviem tīmekļa serveriem, jūs iegūsit priekšstatu, kuru izvēlēties savai tīmekļa lietojumprogrammai.

Iepriekš minētais tests ir uz CentOS 6.8, 64 bitu. Lai iegūtu optimālus rezultātus, varat izmēģināt vairākas OS un tīmekļa servera versijas kombinācijas.

Kāda iemesla dēļ jums nepatīk ApacheBench? Neuztraucieties, ir daudz citu, ko varat izmantot, lai veiktu HTTP ielādi.

APlenkums

APlenkums ir HTTP slodzes pārbaudes utilīta, ko atbalsta UNIX. Teksta failā varat ievietot vairākus URL, lai ielādētu pārbaudes. Jūs varat instalēt aplenkumu, izmantojot yum.

# yum install siege

Izpildīsim testu ar 500 vienlaicīgiem pieprasījumiem 5 sekundes.

[[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] ~]#

Lai sadalītu parametrus.

  Kā ātri ierakstīt balss piezīmes iPhone vai iPad

-q — lai palaistu to klusi (netiek rādīta pieprasījuma informācija)

-t – palaist 5 sekundes

-c — 500 vienlaicīgi pieprasījumi

Tātad, kā redzat, pieejamība ir 100%, un reakcijas laiks ir 0,04 sekundes. Varat pielāgot slodzes testa parametru, pamatojoties uz savu mērķi.

Ali

Ali ir salīdzinoši jauns slodzes testēšanas rīks, lai veiktu reāllaika analīzi. Tā atbalsta vairākas instalēšanas platformas, tostarp Docker.

Pēc instalēšanas izpildiet ali, lai redzētu lietošanas informāciju.

[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]:~#

Kā redzat iepriekš, jums ir iespēja nosūtīt HTTP galvenes, testa ilgumu, ātruma ierobežojumu, taimautu un daudz ko citu. Es ātri pārbaudīju pcdream.lt rīkus, un lūk, kā izskatās izvade.

Pārskats ir interaktīvs un sniedz detalizētu informāciju par latentumu.

Gobench

Gobench ir rakstīts Go valodā un vienkāršu slodzes testēšanas utilītu, lai novērtētu tīmekļa servera veiktspēju. Tas atbalsta vairāk nekā 20 000 vienlaicīgu lietotāju, ko ApacheBench neatbalsta.

  Datortīkla, peles un tastatūras lietošanas monitors ar siltuma kartēm

Apache JMeter

JMeter ir viens no populārākajiem atvērtā pirmkoda rīkiem tīmekļa lietojumprogrammu veiktspējas mērīšanai. JMeter ir uz java balstīta lietojumprogramma un ne tikai tīmekļa serveris, bet arī to var izmantot pret PHP, Java. ASP.net, SOAP, REST utt.

JMeter ieguva pienācīgi draudzīgu GUI, un jaunākajai versijai 3.0 ir nepieciešama Java 7 vai jaunāka versija, lai palaistu lietojumprogrammu. Ja jūsu mērķis ir optimizēt tīmekļa lietojumprogrammas veiktspēju, jums ir jāizmēģina JMeter.

wrk

wrk ir vēl viens moderns veiktspējas mērīšanas rīks, lai noslogotu jūsu tīmekļa serveri un sniegtu latentumu, pieprasījumu sekundē, pārsūtīšanu sekundē utt.

Izmantojot wrk, varat norādīt, lai palaistu slodzes testu ar vairākiem pavedieniem.

Ņemsim piemēru par testa izpildi 5 minūtes ar 500 vienlaicīgiem lietotājiem ar 8 pavedieniem.

wrk –t8 –c500 -d300s http://localhost

Autolielgabals

Iedvesmojoties no darba, automātiskais lielgabals ir rakstīts Node.js. Varat to izmantot programmatiski, izmantojot API vai atsevišķu utilītu. Viss, kas jums nepieciešams, kā priekšnoteikums ir instalēts NodeJS.

Varat kontrolēt vairākus savienojumus, pieprasījumus, ilgumu, darbiniekus, taimautu, savienojuma ātrumu un piedāvāt daudz iespēju, lai salīdzinātu savas tīmekļa lietojumprogrammas.

Curl-loader

čokurošanās iekrāvējs ir rakstīts C valodā, lai simulētu lietojumprogrammu slodzi, un tas atbalsta SSL/TLS. Papildus tīmekļa lapas pārbaudei varat arī izmantot šo atvērtā koda rīku, lai veiktu FTP serveru slodzi.

Varat izveidot pārbaudes plānu, izmantojot HTTP, HTTPS, FTP un FTPS kombināciju vienā partijas konfigurācijā.

httperf

The httperf ir augstas veiktspējas rīks, kas koncentrējas uz mikro un makro līmeņa etaloniem. Tā atbalsta HTTP/1.1 un SSL protokolus.

Ja jums ir paredzamais vienlaicīgu lietotāju skaits un vēlaties pārbaudīt, vai jūsu tīmekļa serveris var apkalpot vairākus pieprasījumus, varat izmantot šo komandu.

httperf --server localhost --port 80 --num-conns 1000 --rate 100

Iepriekš minētā komanda pārbaudīs ar 100 pieprasījumiem sekundē 1000 HTTP pieprasījumiem.

Tsung

Tsung ir vairāku protokolu izplatīts stresa testēšanas rīks, lai uzsvērtu HTTP, SOAP, PostgreSQL, LDAP, XAMP, MySQL serveri. Tā atbalsta HTTP/1.0, HTTP/1.1, un sīkfaili tiek apstrādāti automātiski.

Ziņojuma ģenerēšana ir iespējama, izmantojot Tsung.

Secinājums

Es ceru, ka iepriekš minētie salīdzinošās novērtēšanas rīki sniegs jums priekšstatu par jūsu tīmekļa servera veiktspēju un izlems, kas vislabāk atbilst jūsu projektam.

Pēc tam neaizmirstiet pārraudzīt savas vietnes veiktspēju.