Dette dokuement beskriver performance test og analyse for
- NAS 2 notification broker service
- NAS 2 pull point service
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:
- Svartid per kald
- Antal kald per sekund
- Cpu status
- io på netværk
- Hukommelses forbrug
- Garbage collection
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:
- JMeter log data belyser
- Faktisk antal test iteration kørt
- Throughput
- (Ex: docker01.bo.stage.nsp.netic.dk-perflogs/nas_notificationbroker_nbtest900_stress01.nsp-test.netic.dk_master_20191007_122321.tar.gz.log)
- Access log (applikations server information) belyser
- vmstat log (system information) belyser
- jstat log (JVM information) belyser
- docker stats log (container information) belyser
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
- NAS 2 Notification Broker service version 2.0.6
- NSP kafka
- Gallera MariaDB cluster
- NSP standard performance test framework version 2.0.10
Performance krav
Performancekravene er som følger:
- Forudsætninger:
- Test: 10 adviseringer per sekund (1 advisering per kald)
- Krav:
- Gennemsnitlig svartid skal være under 250 millisekunder
- 95 % skal være under 500 millisekunder
Kommentarer til forudsætninger og krav
- 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.
- Krav til svartider vil blive vurderet med udgangspunkt i test resultaterne.
Afvikling
Performance testen er afviklet på følgende måde
- Testen er kørt på et test system opsat at Netic
- Testen er lavet i standard NSP performance frameworket (v.2.0.10), udviklet af Arosii i JMeter.
- Der er kørt en testplan med stadig øget belastning ved at øge antallet af tråde og noder indtil det målte throughput ikke længere vokser med tilsvarende mængde.
- Testplanen, der er kørt, er nbtest900, og den kører 15 minutter per iteration.
- System under test er kørt på på 2 docker containere
- Den anvendte kafka har kørt på 3 docker containere
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 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 |
|---|
| 1 | 5 | 2 | 2019-10-07_11-21-21 | 2019-10-07_11-36-25 | 399.36 kald per sekund |
| 2 | 8 | 2 | 2019-10-07_11-36-54 | 2019-10-07_11-51-57 | 523.03 kald per sekund |
3 | 8 | 3 | 2019-10-07_11-52-27 | 2019-10-07_12-07-31 | 719.42 kald per sekund |
| 4 | 8 | 4 | 2019-10-07_12-08-06 | 2019-10-07_12-23-09 | 910.14 kald per sekund |
| 5 | 8 | 5 | 2019-10-07_12-24-30 | 2019-10-07_12-39-33 | 1010.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,00 %.
Pull Point
Scope
Performance testen består af en række kald til læsning af pull points.
Testen involverer følgende komponenter
- NAS 2 Pull Point service version 2.0.6
- NAS 2 Notification Broker service version 2.0.6 (baggrundsbelastning)
- NSP kafka
- Gallera MariaDB cluster
- NSP standard performance test framework version 2.0.10
Performance krav
Performancekravene er som følger:
- Forudsætninger:
- Baggrundsdata:
- 1 topic
- 1.000 pullpoints på dette topic (20 af disse bruges aktivt under testen)
- Hver pullpoint har en unik idliste med hver 3000 id'er
- Der behøver ikke være beskeder på tipic inden testen starter
- Baggrundsbelastning
- Notifikation broker skal lave 40 adviseringer per sekund fordelt ligeligt på 20 udvalgte pullpoints
- Dvs. 2 adviseringer per pullpoint per sekund
- Test: 1 kald til getMessage på hver af de 20 udvalgte pullpoints hver 10. sekund. Dvs. 2 kald per sekund
- Krav:
- Gennemsnitlig svartid skal være under 5.000 millisekunder
- 95 % skal være under 10.000 millisekunder
- 99 % skal være under 20.000 millisekunder
Kommentarer til forudsætninger og krav
- Forudsætninger
- De omtalte baggrundsdata er til stede i form af et database script, der er indlæst inden opstart af test
- Baggrundsbelastningen er til stede i form at et baggrundsjob der skriver til Notification broker
- Som for notification broker testen anvendes NSP standard framework, hvor et throughput på 2 kald per sekund kan vurderes
- Krav til svartider vil blive vurderet med udgangspunkt i test resultaterne.
Afvikling
Performance testen er afviklet på følgende måde
- Testen er kørt på et test system opsat at Netic
- Testen er lavet i standard NSP performance frameworket (v.2.0.10), udviklet af Arosii i JMeter.
- Der er kørt en testplan med stadig øget belastning ved at øge antallet af tråde og noder indtil det målte throughput ikke længere vokser med tilsvarende mængde.
- Testplanen, der er kørt, er pptest900, og den kører 15 minutter per iteration.
- System under test er kørt på på 2 docker containere
- Den anvendte kafka har kørt på 3 docker containere
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.