All Projects → rmh78 → quarkus-performance

rmh78 / quarkus-performance

Licence: MIT License
Comparing the CPU/Memory utilisation - Quarkus via GraalVM Native Image vs. Quarkus via Java Runtime vs. Payara-Micro via Java Runtime.

Programming Languages

python
139335 projects - #7 most used programming language
HTML
75241 projects
shell
77523 projects
java
68154 projects - #9 most used programming language
Dockerfile
14818 projects
Batchfile
5799 projects

Projects that are alternatives of or similar to quarkus-performance

harry-potter-quarkus
Showcases in a web application Quarkus and Infinispan
Stars: ✭ 16 (-67.35%)
Mutual labels:  graalvm, graal-native, quarkus
azure-native-spring-function
Tutorial on running Spring Boot + GraalVM native images on Azure Functions
Stars: ✭ 56 (+14.29%)
Mutual labels:  graalvm, graal-native
application-modernization-javaee-quarkus
Application Modernization Sample - From Java EE (2010) to Cloud-Native (2021)
Stars: ✭ 99 (+102.04%)
Mutual labels:  cloudnative, quarkus
native-java-examples
Native Java Apps with Micronaut, Quarkus, and Spring Boot
Stars: ✭ 44 (-10.2%)
Mutual labels:  graalvm, quarkus
clojure-rust-graalvm
An example of Clojure program calling a Rust library, all combined into one executable using GraalVM.
Stars: ✭ 113 (+130.61%)
Mutual labels:  graalvm, graal-native
dad
Small configuration management tool for Clojure
Stars: ✭ 122 (+148.98%)
Mutual labels:  graalvm
quarkiverse
Repository for contributing to quarkiverse wiki
Stars: ✭ 29 (-40.82%)
Mutual labels:  quarkus
sdk-python
Python SDK for CloudEvents
Stars: ✭ 149 (+204.08%)
Mutual labels:  cloudnative
nxrocks
Set of Nx plugins to enhance your Nx workspace (even more!)
Stars: ✭ 165 (+236.73%)
Mutual labels:  quarkus
microprofile-samples
Showcases typical use cases of Quarkus Applications
Stars: ✭ 27 (-44.9%)
Mutual labels:  quarkus
examples
Example code for the Quarkus for Spring Developers eBook
Stars: ✭ 22 (-55.1%)
Mutual labels:  quarkus
graphql-example
A MicroProfile GraphQL Example
Stars: ✭ 44 (-10.2%)
Mutual labels:  quarkus
native-build-tools
Native-image plugins for various build tools
Stars: ✭ 168 (+242.86%)
Mutual labels:  graalvm
netty-native-demo
Instant Netty startup using GraalVM's Native Image Generation
Stars: ✭ 58 (+18.37%)
Mutual labels:  graalvm
springboot-keycloak-openldap
The goal of this project is to create a simple Spring Boot REST API, called simple-service, and secure it with Keycloak. Furthermore, the API users will be loaded into Keycloak from OpenLDAP server.
Stars: ✭ 96 (+95.92%)
Mutual labels:  graalvm
vertx-graalvm-native-image-test
GraalVM - Substrate VM - Test project for Vert.x
Stars: ✭ 38 (-22.45%)
Mutual labels:  graalvm
base-starter-flow-quarkus
A project base/example for using Vaadin with Quarkus
Stars: ✭ 23 (-53.06%)
Mutual labels:  quarkus
connor
A commandline tool for resetting Kafka Connect source connector offsets.
Stars: ✭ 17 (-65.31%)
Mutual labels:  graalvm
nocalhost-intellij-plugin
Nocalhost is Cloud Native Dev Environment. Provides nocalhost to help connect IntelliJ IDE and Kubernetes smoothly.
Stars: ✭ 16 (-67.35%)
Mutual labels:  cloudnative
speedle-plus
Speedle+ is an open source project for access management. It is based on Speedle open source project and maintained by previous Speedle maintainers.
Stars: ✭ 45 (-8.16%)
Mutual labels:  cloudnative

Comparing the CPU/Memory utilisation of a REST service (Quarkus, Payara Micro, Spring Boot, Python)

Some scripts to measure the CPU and Memory utilisation of JAX-RS appliations. The performance test runs inside a docker container.

The test uses the following demo projects:

  • demo-payara contains a simple JAX-RS application packaged as uber-jar with Payara Micro (5.2020.4) application server
  • demo-payara-jpa contains an advanced JAX-RS, JSON-B, CDI, JPA, PostgresDB application packaged as uber-jar with Payara Micro (5.2020.4) application server
  • demo-quarkus contains a simple Quarkus (1.8.1.Final) application packaged as jar and additionally compiled as native image using the GraalVM Native Image
  • demo-quarkus-jpa contains an advanced JAX-RS, JSON-B, CDI, JPA, PostgresDB Quarkus (1.8.1.Final) application packaged as jar and additionally compiled as native image using the GraalVM Native Image
  • demo-python contains a simple (REST service) and advanced (REST with DB access) Python application
  • demo-spring-boot contains a simple REST service using Spring Boot (2.4.0-M3)
  • demo-spring-boot-jpa contains an advanced REST, JSON, JPA, PostgresDB service using Spring Boot (2.4.0-M3)

(1) Prepare and start plot-tests

  1. Modify the Dockerfile (look for PROXY) to use a proxy server or not
  2. Build the docker image with env_build.sh or env_build.cmd
  3. Run the image in a new docker container with env_run.sh or env_run.cmd
  4. Build the demo projects inside the docker container with ./scripts/build.sh
  5. Run the tests inside the docker container with ./scripts/test-all.sh
  6. Plots are generated to directory plots
  7. Logs are generated to directory logs

(2) Test scenario

The plot-test consists of the following actions:

  • starting the application (simple JAX-RS application)
  • wait until the first http request to the JAX-RS endpoint can be served (time to first request)
  • sleep 1 second
  • start load-test using apache benchmarking tool
    • requests: 5000
    • concurrency: 5
    • url: the JAX-RS endpoint of the application

(3) Plots

All plots are generated on my Notebook inside the running docker container.

Docker Host Machine:

  • CPU: Intel i7-8650U 1.90GHz (8 cores)
  • RAM: 16GB

Docker Engine Configuration:

  • CPUs: 4
  • Memory: 8 GB

(3.1) Quarkus via GraalVM Native Image

Simple Advanced

(3.2) Quarkus via Java Runtime

Simple Advanced

(3.3) Payara Micro via Java Runtime

Simple Advanced

(3.4) Spring Boot via GraalVM Native Image

Simple Advanced

(3.5) Spring Boot via Java Runtime

Simple Advanced

(3.6) Python

Simple Advanced

(4) Used Runtimes, Frameworks and Libraries

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].