Page History
...
Indeværende dokument et sammendrag af dokumentet MinLog2-Testvejledning og performance. Performance rapporterne findes som selvstændige under dokumenter.
Læsevejledning
Læseren forventes at have kendskab til National Sundheds-IT's platform NSP, samt generelt kendskab til WildFly applikation server, MariaDB, Kafka og java.
...
Version | Dato | Ansvarlig | Beskrivelse |
1.0 | 10-10-2019 | Openminds | |
1.1 | 26-03-2020 | KvalitetsIT | Performance test rapport lookup |
1.2 | 27-05-2020 | KvalitetsIT | Performance test rapport registration |
1.3 | 14-12-2020 | KvalitetsIT | Performance test rapporter flyttet ud i eget under dokument |
Definitioner og forkortelser
...
Performance
Det følgende beskriver performance test og analyse for
- MinLog2 - Performancetest rapport borger lookup
- MinLog2 - Performancetest rapport medhjælper lookup
- MinLog2 - Performancetest rapport minlog1 lookup
Først beskrives de forskellige typer test data output, og hvordan de anvendes i analysen. Herefter skitseres scope og afvikling af testene samt performance kravene. Og endelig analyseres data for hver enkelt test.
Se iøvrigt krav til performance test og rapport på siden https://www.nspop.dk/display/public/web/Performancekrav
Performance analyse
For alle test gælder følgende:
Udover det fremsatte performance krav 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
Der er ikke målinger på database serveren (MariaDB) eller Kafka serveren.
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/minlog_listlogstatements_borger_stress01.nsp-test.netic.dk_master_20200309_110341.tar.gz.log)
- Access log (applikations server information) belyser
- Antal kald per sekund
- Svartid per kald
- (Denne log er ikke inkluderet da den indeholder personfølsomme data)
- vmstat log (system information) belyser
- cpu status
- skrivning til disk
- Logning sker hver 10. sekund
- (Ex: docker01.bo.stage.nsp.netic.dk/docker01.bo.stage.nsp.netic.dk-vmstat-20200309101455.log)
- jstat log (JVM information) belyser
- Hukommelse (heap) forbrug
- Garbage collection
- Der er tidsstempel per log linie
- (Ex: docker01.bo.stage.nsp.netic.dk/docker01.bo.stage.nsp.netic.dk-docker-jstat-gc-stage_bo_comp_minlog_backend_lookup.log)
- docker stats log (container information) belyser
- Hukommelse
- io på netværk
- Der er ikke noget fast logningsinterval.
- (Ex: docker01.bo.stage.nsp.netic.dk/docker01.bo.stage.nsp.netic.dk-docker-jstat-gc-stage_bo_comp_minlog_backend_lookup.log)
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).
Scope og afvikling
Scope
Testene involverer følgende komponenter
- MinLog 2 service
- NSP kafka
- Galera MariaDB cluster
- NSP standard performance test framework
Versionen af MinLog2 og test frameworket varierer for hver test og fremgår nedenfor.
MinLog 2's overordnede arkitektur ses af følgende figur (kilde: arkitektur dokumentet)
Lookup/forespørgsler test vedrører kun "lookup" komponenten, da der ingen opdateringer (registration ) foregårimens, og der dermed heller ingen aktivitet er på "consumer" komponenten. Dette betyder konkret, at de vedlagte log filer, som vedrører "consumer" komponenten ikke analyseres.
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, 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.
- Testplanerne kører 15 minutter per iteration og for læsning hentes 30 entries per side.
- System under test er kørt på 2 docker containere (docker01 og docker02 i nedenstående)
Se iøvrigt MinLog 2 test performancetestvejledning for detaljer.
Performance krav
Performance krav til MinLog 2 Performance test er som følger:
...
Svartider forespørgsler
...
Children Display | ||
---|---|---|
|
MinLog2 - Performancetest rapport borger lookup
Performance testen består af en række kald til opslag efter logninger på forskellige cpr numre. Et sådant enkelt opslag vil svare til, hvad en borger vil udføre, skulle han ville se hvad der er registreret om ham.
Testen udført er komponent "minlog2", testplan "lookupidws" og distribution "test900".
MinLog 2 service er version 2.0.25perf og NSP standard performance test framework version 2.0.21.
De rå test resultater er vedhæftet denne side (TODO)
JMeter log
JMeter hoved filen beskriver overordnet testens resultat. Her kan kan ses, at der er kørt 10 iterationer med test, deres tidsinterval , throughput og fejlprocent for hver.
...
Iteration
...
Tråde
...
Nodes
...
Starttid
...
Sluttid
...
Throughput
...
3
...
Det fremgår også af filen, at den endelige måling af throughput er 37,12 kald per sekund.
Samt at fejlprocentet på den fulde kørsel er 0 %.
Access log
Vmstat log
Jstat log
Docker stats log
Konklusion
MinLog2 - Performancetest rapport medhjælper lookup
JMeter log
Access log
Vmstat log
Jstat log
Docker stats log
Konklusion
MinLog2 - Performancetest rapport minlog1 lookup
JMeter log
Access log
Vmstat log
Jstat log
Docker stats log
...