Jouw groeikansen vinden en volop benutten!
Al sinds 2006 helpen wij mee aan online startups, lanceren we digitale platforms en helpen we organisaties om innovatie te versnellen.
Performance meten met Jmeter
Met Jmeter kunnen diverse onderdelen van een applicatie worden gemeten. Ook kunnen bijvoorbeeld netwerkgebruik, processorbelasting en geheugengebruik gemeten worden. Alle resultaten kunnen worden gelogd en er kunnen rapporten en grafieken van gemaakt worden. In deze blog vertelt collega Wiebe hoe hij de tool gebruikt bij één van onze klanten.
Momenteel ben ik bij de ICTU in Den Haag gedetacheerd, waar ik hoofdzakelijk aan het REVA-project werk. REVA staat voor Registratie Eerste Verblijfadres Arbeidsmigraten en heeft als belangrijkste functie het registreren (en controleren) van het verblijfadres van arbeidsmigranten. Dit is een webapplicatie, gebaseerd op Wicket, draaiend binnen Apache Karaf met een Virtuoso-database. Via de webapplicatie kan men onder andere registraties zoeken, nieuwe mensen registreren en rapporten opvragen. De eindgebruikers zijn diverse gemeentes in Nederland.
Het aantal gemeenten dat nu gebruik maakt van de applicatie is 6. In de toekomst verwacht men dat dit groeit naar 18 en wellicht wordt het project landelijk uitgerold. In het kader hiervan is het belangrijk om te weten of de applicatie en infrastructuur aan deze vraag zal blijven voldoen. Daarom dient de huidige en (verwachte) toekomstige performance te worden gemeten. Dit gebeurt via de open source-applicatie Jmeter.
Jmeter is net als de REVA-applicatie, volledig gebouwd in Java. Via Jmeter kunnen diverse onderdelen van een applicatie worden gemeten: aantal transacties per tijdseenheid, meten van verschillende onderdelen van een applicatie zoals de gebruiker deze ook doet (inloggen, opzoeken, invoeren, opslaan, etcetera), doorvoersnelheid per tijdseenheid, etcetera. Ook kunnen bijvoorbeeld netwerkgebruik, processorbelasting en geheugengebruik gemeten worden. Het aantal parallele gebruikers (threads) kan zelf worden ingesteld tussen 1 en N. Alle resultaten kunnen worden gelogd en er kunnen rapporten en grafieken van gemaakt worden. Via een aantal goede plugins is er nog meer mogelijk. Al met al biedt Jmeterzeer uitgebreide mogelijkheden om diverse performancegerelateerde vraagstukken te meten en te rapporteren.
Voordat de eerste meting wordt opgezet/ingeregeld moet er duidelijk worden bepaald wat er onder welke omstandigheden wordt gemeten en met welk doel. Eén en ander moet worden vastgesteld middels het opstellen van een aantal (basis) uitgangspunten. Een aantal van deze uitgangspunten zijn:
Het is belangrijk om verschillende testen te doen op basis van representatieve gegevens. Bij het REVA-project is er een aantal processtappen die uitgevoerd zijn, voordat het daadwerkelijke meten begon. In het kort zijn dat deze:
Dit valt allemaal onder inladen representatieve gegevens om de daadwerkelijke huidige en toekomstige productie situatie zo goed mogelijk te representeren.
De software die voor de metingen is gebruikt:
Voordat de testen zijn uitgevoerd, werd er eerst een hoeveelheid data ingeladen: gebruikers in LDAP, koppelingen van rollen aan gebruikers, testregistraties in DB geladen, etcetera. Deze testen worden hier buiten beschouwing gelaten, omdat deze zaken niet in productie worden gedaan. De focus is op de testen zelf, zoals deze ook in de praktijk voorkomen. De belangrijkste scenario’s worden getest, waarbij deze test hier verder wordt uitgelegd: “het invoeren van een registratie”. Per stap is een screenshot genomen van de opzet en parameters.
De hoofdgroep, waarin alle testonderdelen zitten die van belang zijn. Hierin kan men onder meer aangeven:
Nadat de basisgegevens zijn ingevuld, worden de daadwerkelijke acties uitgevoerd, die leiden tot een registratie: van inloggen, via gegevens invullen, tot opslaan. Via name-value-parameters worden de waarden uit de CSV-file waar de registraties instaan ingevuld in de velden van de applicatie. Bijvoorbeeld openbareRuimteFeedback met waarde ${straatnaam}.
Als alle testen succesvol zijn doorlopen worden er (binnen Jmeter) grafieken gegenereerd die visuele inzage geven in de performancemetingen. Als voorbeeld in figuur 3 is onder andere te zien hoeveel registraties per minuut er gemiddeld kunnen worden verwerkt. Dit zijn er in dit geval 113 per minuut. De grafieken kunnen ook op een later tijdstip alsnog worden gemaakt. Zie hiervoor kopje “logging”.
De results table laat alle individuele acties zien met enkele van hun karakteristieken:
Voor elke test is het ook mogelijk om de resources van de server te monitoren en grafisch in kaart te brengen. Wat er onder andere gemeten kan worden zijn:
Het is heel belangrijk om te weten wat de responsetijden van de individuele acties per tijdseenheid zijn. Hiervoor kan ook een grafiek worden gegenereerd. Per actie (inloggen, opzoeken, opslaan, etcetera) is te zien hoeveel milliseconde (ms) de actie duurt. Men kan het aantal threads (aantal parallel werkende gebruikers) variëren en zo de responsetijden met elkaar vergelijken.
De laatste grafiek laat zien wat de responsetijden zijn in relatie tot het aantal threads dat tegelijkertijd ingesteld is. Men ziet bijvoorbeeld dat het opslaan gemiddeld 2.9 seconden duurt als er 1 thread actief is en dat de BAG-check binnen 0,6 seconden wordt uitgevoerd. Indien de response time niet significant toeneemt met het verhogen van het aantal threads, is de performance dus niet in het geding.
Jmeter biedt hele goede mogelijkheden om de testresultaten te loggen. Bijna elke stap in het meetproces kan in een aparte log file worden opgeslagen. Standaard wordt een logfile in het JTL-formaat (net als een CSV-bestand) opgeslagen, dat daarna verder verwerkt kan worden. In het geval van de logs van de REVA performance tests is ervoor gekozen om de logs als volgt te verwerken:
Zelf de manual lezen en verder experimenteren met Jmeter op https://jmeter.apache.org/usermanual/get-started.html
Neem hieronder eenvoudig contact op met ons of bel direct.
Al sinds 2006 helpen wij mee aan online startups, lanceren we digitale platforms en helpen we organisaties om innovatie te versnellen.