Come dockerized java microservices in modo efficiente


Mentre un server di applicazioni java estenderà una JVM univoca per eseguire diversi (micro)servizi, un'architettura di microservizi java dockerizzata eseguirà una JVM per ogni microservizio dockerizzato. Considerando oltre 20 microservizi java e un numero limitato di host sembra che la quantità di risorse consumate dalle JVM su ciascun host sia enorme.

Esiste un modo efficace per gestire questo problema ? È possibile sintonizzare ogni JVM per limitare il consumo di risorse ? L'obiettivo è quello di limitare il sovraccarico di utilizzare docker in un'architettura java microservices.

Author: DouglasAdams, 2016-09-07

1 answers

Ogni copia Docker e JVM in esecuzione utilizza la memoria. Normalmente avere più JVM su un singolo nodo utilizzerebbe la memoria condivisa, ma questa non è un'opzione con docker.

Quello che puoi fare è ridurre la dimensione massima dell'heap di ogni JVM. Tuttavia, consentirei almeno 1 GB per immagine docker come overhead più la dimensione dell'heap per ogni JVM. Mentre che suona come un sacco di memoria non costa così tanto in questi giorni.

Supponiamo che tu dia a ogni JVM un heap da 2 GB e aggiunga 1 GB per docker + JVM, sei cercando di avere bisogno di un server da 64 GB per eseguire 20 JVM / docker.

 2
Author: Peter Lawrey, 2016-09-07 18:48:38