Dette dokuement beskriver performance test og analyse for 

Performance analyse

For begge test gælder følgende:

Udover det fremsatte performance krav for notification broker henholdsvis pull point på svartid, er der en række andre punkter som bør analyseres for at vurdere servicens sundhed.

Følgende punkter bliver derfor undersøgt:

Da NAS servicene ikke skriver til disk selv, bliver io til disk ikke undersøgt. Der er ikke målinger på database serveren (MariaDB). Der er målinger fra Kafka serverne.

Undersøgelserne foregår vha. de forskellige log filer, som er genereret under performance testen. De følgende afsnit gennemgår de vigtigste tal fra disse filer:

Hver kørsel/iteration (øgning af belastning) har en start og slut tid. Filerne access.log og jstat.log indeholder tidstempler. Dette muliggør at de kan mappes til en given iteration. Filen vmstat har ikke tidstempel. Men da den er startet samtidig med jstat loggen og logintervallet er kendt på 10 sekunder, kan iterationernes placering i data beregnes. Docker stats loggen har hverken tidsstempel eller fast logninginterval, hvorfor tallene/graferne kun kan bruges som en generel betragtning over hele test perioden.

I det nedenstående kan man klikke på de enkelte grafer for større billede. De enkelte iterationer er tegnet ind som lodrette mørke streger; 2 streger per iteration (start og slut tidspunkt).


Notification Broker

Scope

Performance testen består af en række kald til skrivning af adviseringer. 

Testen involverer følgende komponenter

Performance krav

Performancekravene er som følger:

  1. Forudsætninger:
    1. Test: 10 adviseringer per sekund (1 advisering per kald)
  2. Krav:
    1. Gennemsnitlig svartid skal være under 250 millisekunder
    2. 95 % skal være under 500 millisekunder

Kommentarer til forudsætninger og krav

  1. NSP standard test frame work anvendes, hvor belastningen gradvis øges fra 2 nodes og 5 tråde. Kravet om 10 adviseringer per sekund kan omsættes til et throughput på 10 kald per sekund, hvilket kan vurderes vha. NSP test frameworkets output.
  2. Krav til svartider vil blive vurderet med udgangspunkt i test resultaterne.

Afvikling

Performance testen er afviklet på følgende måde

Se iøvrigt NAS2 test vejledning afsnit performance test for detaljer.

De rå test resultater er vedhæftet denne side (nas-nb-perftest.tgz)

Performance tal

Der er kun kigget på performance målinger/tal, der vedrører selve notification broker servicen.

JMeter log data

JMeter hoved filen beskriver overordnet testens resultet.

Her kan  kan ses, at der er kørt 5 iterationer med test, deres tidsinterval og throughput for hver.

Iteration

Tråde

Nodes

Starttid

Sluttid

Throughput

1522019-10-07_11-21-212019-10-07_11-36-25399.36 kald per sekund
2822019-10-07_11-36-542019-10-07_11-51-57523.03 kald per sekund

3

832019-10-07_11-52-272019-10-07_12-07-31719.42 kald per sekund
4842019-10-07_12-08-062019-10-07_12-23-09910.14 kald per sekund
5852019-10-07_12-24-302019-10-07_12-39-331010.45 kald per sekund

Det fremgår også af filen, at den endelige måling af throughput er 1010.45 kald per sekund.

Samt at fejlprocentet på den fulde kørsel er 0 %. 

Vurdering

Kravet til testen er, at der skal køres med 10 adviseringer i sekundet. NSP's test framework fungerer med en bestemt belastning i testen som gradvis øges. I første iteration har testen kørt med 400 kald per sekund, hvilket ligger højt over kravet til testen.  

Derfor konkluderes det, at ud fra JMeter loggens data, er performance kravets forudsætning om 10 adviseringer så rigeligt overholdt.


Access log data

Denne log findes for hver applikations server (docker container).

Her findes data for hvert enkelt kald, der er lavet til notification broker services, herunder hvor lang tid et kald har taget (Duration). Ved at kigge på de kald, der er foretaget til servicen kan den gennemsnitlige tid et kald tager beregnes. 

Følgende tabel viser en række beregnede data fra access loggen fordelt på applikations server (container), test iteration og http kode. Nederst i tabellen er tallene for hver applikations server lagt sammen. Test iteration er beregnet ved at sammenligne tidstempel fra access log med start og sluttidspunktet for iterationen. Http koden findes i access loggen (kald returnerede med fejl (500) eller ingen fejl(200)).

De beregnede data er antal kald, kald per sekund i gennemsnit (hver iteration er 900 sekunder) samt tidsforbrug per kald i millisekunder. 

Applikations serverIterationHttpCode svarAntal kaldKald per sekundTidsforbrug (ms)
docker01.bo.stage.nsp.netic.dk1200



2200



3200



4200



5200


docker02.bo.stage.nsp.netic.dk1200

10

2200

11

3200

13

4200

14

5200

15






Total

59766
181






Total for begge servere12001839020,4155

22001877120,9184


2002260225,1196


5003032228








Pull Point

Scope

Performance testen består af en række kald til læsning af pull points.

Testen involverer følgende komponenter

Performance krav

Performancekravene er som følger:

  1. Forudsætninger:
    1. Baggrundsdata:
      1. 1 topic
      2. 1.000 pullpoints på dette topic (20 af disse bruges aktivt under testen)
      3. Hver pullpoint har en unik idliste med hver 3000 id'er
      4. Der behøver ikke være beskeder på tipic inden testen starter
    2. Baggrundsbelastning
      1. Notifikation broker skal lave 40 adviseringer per sekund fordelt ligeligt på 20 udvalgte pullpoints
      2. Dvs. 2 adviseringer per pullpoint per sekund
    3. Test: 1 kald til getMessage på hver af de 20 udvalgte pullpoints hver 10. sekund. Dvs. 2 kald per sekund
  2. Krav:
    1. Gennemsnitlig svartid skal være under 5.000 millisekunder
    2. 95 % skal være under 10.000 millisekunder
    3. 99 % skal være under 20.000 millisekunder

Kommentarer til forudsætninger og krav

  1. Forudsætninger
    1. De omtalte baggrundsdata er til stede i form af et database script, der er indlæst inden opstart af test
    2. Baggrundsbelastningen er til stede i form at et baggrundsjob der skriver til Notification broker
    3. Som for notification broker testen anvendes NSP standard framework, hvor et throughput på 2 kald per sekund kan vurderes
  2. Krav til svartider vil blive vurderet med udgangspunkt i test resultaterne.

Afvikling

Performance testen er afviklet på følgende måde

Se iøvrigt NAS2 test vejledning afsnit performance test for detaljer.

De rå test resultater er vedhæftet denne side (nas-pp-perftest.tgz)

Performance tal

Der er kun kigget på performance målinger/tal, der vedrører selve pull point servicen.

JMeter log data

JMeter hoved filen beskriver overordnet testens resultet.

Her kan  kan ses, at der er kørt 4 iterationer med test, deres tidsinterval og throughput for hver.

Iteration

Tråde

Nodes

Starttid

Sluttid

Throughput

1522019-10-04_14-25-442019-10-04_14-40-5053.48 kald per sekund
2822019-10-04_14-41-292019-10-04_14-56-3590.4 kald per sekund

3

1122019-10-04_14-57-152019-10-04_15-12-21109.17 kald per sekund
41132019-10-04_15-13-012019-10-04_15-28-08111.07 kald per sekund

Det fremgår også af filen, at den endelige måling af throughput er 111.07 kald per sekund.

Samt at fejlprocentet på den fulde kørsel er 0 %. 


Vurdering

Kravet til testen er, at der skal køres med 20 kald til pull point servicen hver 10. sekund dvs. 2 per sekund. NSP's test framework fungerer med en bestemt belastning i testen som gradvis øges. I første iteration har testen kørt med 53 kald per sekund, hvilket ligger højt over kravet til testen.  

Derfor konkluderes det, at ud fra JMeter loggens data, er performance kravets forudsætning om 2 kald så rigeligt overholdt.

Baggrundsbelastning

TODO