Resource requirements#
Memory limits#
The notify
and query
module are Java Spring Boot applications with a fairly large memory footprint.
By default, the -XX:MaxRAMPercentage
options is set to 85
inside the container. See for example
here
and here for an explanation.
The list
module is a NodeJS ExpressJS application with a significantly smaller footprint.
The staging Docker Compose deployment sets the container memory limit for query
and notify
to 512m
which is
sufficient to handle small and moderately sized cohorts. The limit should be larger than 256m
to avoid
OOM-kills. The screening list has fairly consistent memory usage and a limit of 128m
is reasonable.
Here's the output of docker stats
after deploying and running the stack for a brief period:
$ docker stats
CONTAINER ID NAME CPU % MEM USAGE / LIMIT MEM % NET I/O BLOCK I/O PIDS
82a98f752ebc recruit-ohdsi-atlas-1 0.00% 16.68MiB / 64MiB 26.06% 25.3kB / 2.46kB 0B / 0B 25
a7297408bd00 recruit-query-1 0.06% 309.7MiB / 512MiB 60.50% 239kB / 135kB 0B / 0B 38
0d177572042b recruit-notify-1 0.09% 254.2MiB / 512MiB 49.64% 154kB / 41.8kB 0B / 0B 42
f04d0d9d609f recruit-list-1 0.00% 43.08MiB / 128MiB 33.66% 32.5kB / 11.1kB 0B / 0B 10
3674a31b2317 recruit-ohdsi-webapi-1 0.07% 1.079GiB / 4GiB 26.98% 332MB / 328MB 0B / 0B 81
e1b792d91d2a recruit-fhir-1 0.20% 1.218GiB / 2GiB 60.88% 402kB / 7.18MB 0B / 0B 108
ab0e2da83cb2 recruit-traefik-1 0.00% 23.2MiB / 128MiB 18.12% 6.53MB / 6.52MB 0B / 0B 20
b89747f04bfb recruit-maildev-1 0.00% 31.09MiB / 64MiB 48.57% 72.1kB / 13.4kB 0B / 0B 11
d3b4208c4c22 recruit-keycloak-1 10.74% 580.1MiB / 1GiB 56.65% 25.2kB / 25.9kB 0B / 0B 156
fefe3e6218f7 recruit-omopdb-1 99.80% 1.556GiB / 2GiB 77.79% 328MB / 332MB 0B / 0B 20
026e21b07821 recruit-fhir-db-1 0.01% 58.23MiB / 512MiB 11.37% 592kB / 246kB 0B / 0B 17
The same limits may be set for the Kubernetes deployment as well using the notify.resources
, query.resources
,
and list.resources
Helm chart values. See also Resource Management for Pods and Containers
.