Altinn / altinn-pdf

Altinn platform microservice for generating PDFs
0 stars 1 forks source link

Create the necessary tests for performance testing of the PDF-generator #34

Closed OddArneSaetervik closed 1 year ago

OddArneSaetervik commented 2 years ago

Description

Performance testing of the PDF-generator to collect some data prior to release. The primary purpose is gain some knowledge about the CPU and Memory demands. We will probably need to go to production with the current solution, but tests can help us determine how to prioritize making our own container. The results might also indicate if we need to change how the PDF-generator is hosted.

Tests should be performed as directly on the PDF-generator as possible. The goal should be to avoid overhead from apps and app-frontend as much as possible.

It is also desirable to collect some information about user experience in an actual app, but we're keeping that outside the scope of this issue. This will be revisited at a later time when we have more apps to test with.

The PDF-generator will not be available directly from outside the k8-cluster by default (#43), but it should be easy to manually add and remove the necessary ingressRoute in k8 to circumvent the issue. Later we can also consider making an application that can work as a proxy.

Tasks

Acceptance Criterias

No response

HenningNormann commented 1 year ago

Pdf-tilnærming i 2.0:

Ytelsestesting av pdf-generering i 2.0 har primært vært utført ved at pdf-generering er et av stegene i scriptet for portal innsending. Scriptet består blant annet av innlogging, instansiering, utfylling av skjema, pdf-generering og signering. Scriptet kjøres fra Visual Studio LoadTest. VS verktøyet har integrert monitorering og rapportering av en rekke parametre – inkludert tidsforbruk på hver bruker request (og dermed også pdf-generering) og cpu forbruk. I 2.0 kjører pdf-generering på egne servere, så alt cpu forbruk på serveren kan tilskrives pdf-generering.

Ved lineær skalering kan man øke lasten til man ser cpu’en gå i metning på en server og basert på dette beregne throughput per server. Det har imidlertid vist seg at produktet som benyttes for pdf-generering i 2.0 – EO.pdf – ikke skalerer lineært fordi den underliggende chrome motoren låser grafiske ressurser. I 2.0 benyttes derfor mange servere med få kjerner i stedet for få servere med mange kjerner. Det er også lagt inn egen kode for å spre generering av hver enkelt side på flere servere når det er et skjema med mange sider.

I forkant av ytelsestestingen skissert over har det vært kjørt spisset ytelsestesting med egne testklienter som gjør pdf-generering med konfigurerbar parallellitet. Dette har vært profilert, analysert og optimalisert ved hjelp av verktøyet dotTrace, som er en del av ReSharper-familien fra JetBrains.

Det er også verd å merke seg at ulike skjemaer kan ha forskjellig ytelse. Det er derfor viktig å teste flere typer skjemaer med varierende størrelse og grafiske komponenter.

borgethommesen commented 1 year ago

Det finnes en app for PDF-generering basert på browserless.io i at21 (ttd.apps.at21.altinn.cloud/pdf). Denne er testet via postman med ulike underlag/websider for å generere pdf med forskjellig størrelse. Lage et testskript i K6 for å kalle PDF-appen mot at21 og senere yt-miljøet. Lage et testskript i K6 for å generere PDF basert på formularer/skjema med ulike egenskaper i størrelse og kompleksitet (antall sider og størrelse på grafiske elementer).

SandGrainOne commented 1 year ago

I've now started the service in yt01 as well.