Slide 1

Slide 1 text

#DevoxxFR Devoxx France 2017 Java & Containers Jean-Christophe Sirot @jcsirot Charles Sabourdin @kanedafromparis 1

Slide 2

Slide 2 text

#DevoxxFR Pourquoi, quand vous demandez à mettre en production une application java containérisée avec docker, vos ops font soudain la grimace ? Pourquoi vos containers, qui marchaient si bien sur votre PC, crashent si souvent en production ; et aussi pourquoi la RAM des noeuds se met-elle à swaper autant ? Ces problèmes nous les avons rencontrés et nous vous proposons de partager ensemble nos découvertes et nos réflexions sur l'utilisation combinée de java et de docker. Ensemble creusons la RAM, le CPU et les différentes options de gestion de memoire de la JVM pour obtenir le bon fonctionnement de notre application dans un containeur. 2

Slide 3

Slide 3 text

#DevoxxFR DISCLAIMER We try to keep the Devox France logo and the Tweet hashtag on all slides 3 Le code et les situations de ce récit étant purement fictifs, toute ressemblance avec des personnes ou des situations existantes ou ayant existées ne saurait être que fortuite ;-)

Slide 4

Slide 4 text

#DevoxxFR On fait une belle application java et …. 4

Slide 5

Slide 5 text

#DevoxxFR A Short story of a web application (microservice ;-) https://github.com/kanedafromparisfriends/ resourcesmonger 5

Slide 6

Slide 6 text

#DevoxxFR OM-KILLER 6

Slide 7

Slide 7 text

#DevoxxFR WHO WE ARE 7 Jean-Christophe Sirot Charles Sabourdin Software Engineer Chez Docker @jcsirot Architecte / DevOps FreeLance @kanedafromparis

Slide 8

Slide 8 text

#DevoxxFR 8

Slide 9

Slide 9 text

#DevoxxFR 9

Slide 10

Slide 10 text

#DevoxxFR Conclusion 1 0 -m 256M --cpu-shares 500 -m 256M with -XX:+UnlockExperimentalVMOptions \ -XX:+UseCGroupMemoryLimitForHeap -m 256M FROM openjdk:8-jre-slim FROM openjdk:8-jre-slim and FROM openjdk:9-jre-slim FROM openjdk:10-jre-slim { free memory: "58,658", allocated memory: "60,928", total free memory: "895,266", max memory: "897,536", available processors: "4" } { free memory: "6,035", allocated memory: "7,936", total free memory: "122,835", max memory: "124,736", available processors: "4" } { free memory: "6,035", allocated memory: "7,936", total free memory: "122,835", max memory: "124,736", available processors: "4" } Beware of the docker version too

Slide 11

Slide 11 text

#DevoxxFR Tips 1 1 Beware of the docker version too Docker : --memory-swappiness=0 Java : -XX:+UnlockExperimentalVMOptions -XX:+UseCGroupMemoryLimitForHeap -XshowSettings:vm -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/var/dump --XX:NativeMemoryTracking=summary

Slide 12

Slide 12 text

#DevoxxFR We love picture We try to keep the Devox France logo and the Tweet hashtag on all slides 1 2 Autres axes de réflexions : Questions - Où mettre l’information du paramétrage de la mémoire - Bonne façon de faire son build (fat-jar, lib, jlink…)

Slide 13

Slide 13 text

#DevoxxFR Merci / Thanks you 13