Skip to content

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 .