SlideShare une entreprise Scribd logo
1  sur  13
Télécharger pour lire hors ligne
Jean-Christophe Sirot Charles Sabourdin
@jcsirot @kanedafromparis
Java & Containers
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 mémoire de la JVM pour obtenir le bon fonctionnement de notre
application dans un containeur.
#Hashtag@twitter
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 ;-)
Disclamer
#Hashtag@twitter
On fait une belle application java
et ….
#Hashtag@twitter
https://github.com/kanedafromparisfriends/
resourcesmonger
A Short story of a web application (microservice ;-)
#Hashtag@twitter
O-M KILLER
#Hashtag@twitter
Jean-Christophe Sirot
Charles Sabourdin
Software Engineer Chez Docker
@jcsirot
Architecte / DevOps FreeLance
@kanedafromparis
Who we are
#Hashtag@twitter
#Hashtag@twitter
#Hashtag@twitter
--XX:NativeMemoryTracking=summary
Conclusion
#Hashtag@twitter
-m 256M --cpu-shares 500 -m 256M
with
-XX:+UnlockExperimentalVMOptions 
-XX:+UseCGroupMemoryLimitForHeap
-m 256M
FROM openjdk:8-jre-slim
(before 8u131)
FROM openjdk:8-jre-slim
(before 8u191)
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
Docker :
--memory-swappiness=0
Java :
-XX:+UnlockExperimentalVMOptions
-XX:+UseCGroupMemoryLimitForHeap
-XshowSettings:vm
-XX:+HeapDumpOnOutOfMemoryError
-XX:HeapDumpPath=/var/dump
--XX:NativeMemoryTracking=summary
Tips
#Hashtag@twitter
Beware of the docker version too
- Build docker with maven
- jlink vs -cp vs fatjar
- jolokia vs Glowroot,...
Pensives (and other thoughts)
#Hashtag@twitter
Beware of the docker version too
#Hashtag@twitter
Thank you / Merci
https://fr.slideshare.net/kanedafromparis
Questions ?
- @jcsirot
- @kanedafromparis

Contenu connexe

Similaire à Java in docker devoxx ma 2018

Cours 1/3 "Architecture Web"
Cours 1/3 "Architecture Web"Cours 1/3 "Architecture Web"
Cours 1/3 "Architecture Web"Adyax
 
Javascript as a first programming language : votre IC prête pour la révolution !
Javascript as a first programming language : votre IC prête pour la révolution !Javascript as a first programming language : votre IC prête pour la révolution !
Javascript as a first programming language : votre IC prête pour la révolution !VISEO
 
Architecture et Bonnes pratiques Android #DevoxxFr2016 Part1
Architecture et Bonnes pratiques Android #DevoxxFr2016 Part1Architecture et Bonnes pratiques Android #DevoxxFr2016 Part1
Architecture et Bonnes pratiques Android #DevoxxFr2016 Part1Mathias Seguy
 
.Net pour le développeur Java - une source d'inspiration?
.Net pour le développeur Java - une source d'inspiration?.Net pour le développeur Java - une source d'inspiration?
.Net pour le développeur Java - une source d'inspiration?Rui Carvalho
 
Decouvrir CQRS (sans Event sourcing) par la pratique
Decouvrir CQRS (sans Event sourcing) par la pratiqueDecouvrir CQRS (sans Event sourcing) par la pratique
Decouvrir CQRS (sans Event sourcing) par la pratiqueThomas Pierrain
 
Du JavaScript propre ? Challenge accepted!
Du JavaScript propre ? Challenge accepted!Du JavaScript propre ? Challenge accepted!
Du JavaScript propre ? Challenge accepted!OCTO Technology
 
Recruter et travailler avec un développeur
Recruter et travailler avec un développeurRecruter et travailler avec un développeur
Recruter et travailler avec un développeurCamille Roux
 
Make Web Not War 2010 Keynote - Français
Make Web Not War 2010 Keynote - FrançaisMake Web Not War 2010 Keynote - Français
Make Web Not War 2010 Keynote - FrançaisJoël Perras
 
NodeJs, une introduction
NodeJs, une introductionNodeJs, une introduction
NodeJs, une introductionToxicode
 
Introduction à la performance web
Introduction à la performance webIntroduction à la performance web
Introduction à la performance webRaphaël Goetter
 
Convention Medialibs : Raphaël Goetter (Introduction à la performance web)
Convention Medialibs : Raphaël Goetter (Introduction  à la performance web)Convention Medialibs : Raphaël Goetter (Introduction  à la performance web)
Convention Medialibs : Raphaël Goetter (Introduction à la performance web)Medialibs
 
Node.js et les nouvelles technologies javascript
Node.js et les nouvelles technologies javascriptNode.js et les nouvelles technologies javascript
Node.js et les nouvelles technologies javascriptKhalid Jebbari
 
Mobiz - 2012-11-15 - HTML5, une révolution à plusieurs niveaux
Mobiz - 2012-11-15 - HTML5, une révolution à plusieurs niveauxMobiz - 2012-11-15 - HTML5, une révolution à plusieurs niveaux
Mobiz - 2012-11-15 - HTML5, une révolution à plusieurs niveauxFrédéric Harper
 
Retour expérience détection fraude temps réel
Retour expérience détection fraude temps réelRetour expérience détection fraude temps réel
Retour expérience détection fraude temps réelMartin Menestret
 
Softshake 2013 - Du JavaScript propre ? Challenge accepted!
Softshake 2013 - Du JavaScript propre ? Challenge accepted!Softshake 2013 - Du JavaScript propre ? Challenge accepted!
Softshake 2013 - Du JavaScript propre ? Challenge accepted!OCTO Technology
 
Démo Gatling au Performance User Group de Casablanca - 25 sept 2014
Démo Gatling au Performance User Group de Casablanca - 25 sept 2014Démo Gatling au Performance User Group de Casablanca - 25 sept 2014
Démo Gatling au Performance User Group de Casablanca - 25 sept 2014Benoît de CHATEAUVIEUX
 
Industrialisation des environnements de dev avec Puppet et Amazon (mais en fa...
Industrialisation des environnements de dev avec Puppet et Amazon (mais en fa...Industrialisation des environnements de dev avec Puppet et Amazon (mais en fa...
Industrialisation des environnements de dev avec Puppet et Amazon (mais en fa...Nicolas Silberman
 
Octo RefCard test front-end
Octo RefCard test front-endOcto RefCard test front-end
Octo RefCard test front-endClément Dubois
 

Similaire à Java in docker devoxx ma 2018 (20)

Cours 1/3 "Architecture Web"
Cours 1/3 "Architecture Web"Cours 1/3 "Architecture Web"
Cours 1/3 "Architecture Web"
 
Javascript as a first programming language : votre IC prête pour la révolution !
Javascript as a first programming language : votre IC prête pour la révolution !Javascript as a first programming language : votre IC prête pour la révolution !
Javascript as a first programming language : votre IC prête pour la révolution !
 
Architecture et Bonnes pratiques Android #DevoxxFr2016 Part1
Architecture et Bonnes pratiques Android #DevoxxFr2016 Part1Architecture et Bonnes pratiques Android #DevoxxFr2016 Part1
Architecture et Bonnes pratiques Android #DevoxxFr2016 Part1
 
.Net pour le développeur Java - une source d'inspiration?
.Net pour le développeur Java - une source d'inspiration?.Net pour le développeur Java - une source d'inspiration?
.Net pour le développeur Java - une source d'inspiration?
 
Decouvrir CQRS (sans Event sourcing) par la pratique
Decouvrir CQRS (sans Event sourcing) par la pratiqueDecouvrir CQRS (sans Event sourcing) par la pratique
Decouvrir CQRS (sans Event sourcing) par la pratique
 
Du JavaScript propre ? Challenge accepted!
Du JavaScript propre ? Challenge accepted!Du JavaScript propre ? Challenge accepted!
Du JavaScript propre ? Challenge accepted!
 
docker.pdf
docker.pdfdocker.pdf
docker.pdf
 
Recruter et travailler avec un développeur
Recruter et travailler avec un développeurRecruter et travailler avec un développeur
Recruter et travailler avec un développeur
 
Make Web Not War 2010 Keynote - Français
Make Web Not War 2010 Keynote - FrançaisMake Web Not War 2010 Keynote - Français
Make Web Not War 2010 Keynote - Français
 
NodeJs, une introduction
NodeJs, une introductionNodeJs, une introduction
NodeJs, une introduction
 
Introduction à la performance web
Introduction à la performance webIntroduction à la performance web
Introduction à la performance web
 
Convention Medialibs : Raphaël Goetter (Introduction à la performance web)
Convention Medialibs : Raphaël Goetter (Introduction  à la performance web)Convention Medialibs : Raphaël Goetter (Introduction  à la performance web)
Convention Medialibs : Raphaël Goetter (Introduction à la performance web)
 
Node.js et les nouvelles technologies javascript
Node.js et les nouvelles technologies javascriptNode.js et les nouvelles technologies javascript
Node.js et les nouvelles technologies javascript
 
Php 100k
Php 100kPhp 100k
Php 100k
 
Mobiz - 2012-11-15 - HTML5, une révolution à plusieurs niveaux
Mobiz - 2012-11-15 - HTML5, une révolution à plusieurs niveauxMobiz - 2012-11-15 - HTML5, une révolution à plusieurs niveaux
Mobiz - 2012-11-15 - HTML5, une révolution à plusieurs niveaux
 
Retour expérience détection fraude temps réel
Retour expérience détection fraude temps réelRetour expérience détection fraude temps réel
Retour expérience détection fraude temps réel
 
Softshake 2013 - Du JavaScript propre ? Challenge accepted!
Softshake 2013 - Du JavaScript propre ? Challenge accepted!Softshake 2013 - Du JavaScript propre ? Challenge accepted!
Softshake 2013 - Du JavaScript propre ? Challenge accepted!
 
Démo Gatling au Performance User Group de Casablanca - 25 sept 2014
Démo Gatling au Performance User Group de Casablanca - 25 sept 2014Démo Gatling au Performance User Group de Casablanca - 25 sept 2014
Démo Gatling au Performance User Group de Casablanca - 25 sept 2014
 
Industrialisation des environnements de dev avec Puppet et Amazon (mais en fa...
Industrialisation des environnements de dev avec Puppet et Amazon (mais en fa...Industrialisation des environnements de dev avec Puppet et Amazon (mais en fa...
Industrialisation des environnements de dev avec Puppet et Amazon (mais en fa...
 
Octo RefCard test front-end
Octo RefCard test front-endOcto RefCard test front-end
Octo RefCard test front-end
 

Plus de kanedafromparis

DevOpSec_DockerNPodMan-20230220.pdf
DevOpSec_DockerNPodMan-20230220.pdfDevOpSec_DockerNPodMan-20230220.pdf
DevOpSec_DockerNPodMan-20230220.pdfkanedafromparis
 
DevOpSec_KubernetesOperatorUsingJava.pdf
DevOpSec_KubernetesOperatorUsingJava.pdfDevOpSec_KubernetesOperatorUsingJava.pdf
DevOpSec_KubernetesOperatorUsingJava.pdfkanedafromparis
 
BBL Premiers pas avec Docker
BBL Premiers pas avec DockerBBL Premiers pas avec Docker
BBL Premiers pas avec Dockerkanedafromparis
 
Dev opsec dockerimage_patch_n_lifecyclemanagement_2019
Dev opsec dockerimage_patch_n_lifecyclemanagement_2019Dev opsec dockerimage_patch_n_lifecyclemanagement_2019
Dev opsec dockerimage_patch_n_lifecyclemanagement_2019kanedafromparis
 
Dev opsec dockerimage_patch_n_lifecyclemanagement_
Dev opsec dockerimage_patch_n_lifecyclemanagement_Dev opsec dockerimage_patch_n_lifecyclemanagement_
Dev opsec dockerimage_patch_n_lifecyclemanagement_kanedafromparis
 
Openshift meetup Paris - 21/03/2018
Openshift meetup Paris - 21/03/2018Openshift meetup Paris - 21/03/2018
Openshift meetup Paris - 21/03/2018kanedafromparis
 
Ippevent : openshift Introduction
Ippevent : openshift IntroductionIppevent : openshift Introduction
Ippevent : openshift Introductionkanedafromparis
 
Ippevent : openshift Introduction
Ippevent : openshift IntroductionIppevent : openshift Introduction
Ippevent : openshift Introductionkanedafromparis
 

Plus de kanedafromparis (8)

DevOpSec_DockerNPodMan-20230220.pdf
DevOpSec_DockerNPodMan-20230220.pdfDevOpSec_DockerNPodMan-20230220.pdf
DevOpSec_DockerNPodMan-20230220.pdf
 
DevOpSec_KubernetesOperatorUsingJava.pdf
DevOpSec_KubernetesOperatorUsingJava.pdfDevOpSec_KubernetesOperatorUsingJava.pdf
DevOpSec_KubernetesOperatorUsingJava.pdf
 
BBL Premiers pas avec Docker
BBL Premiers pas avec DockerBBL Premiers pas avec Docker
BBL Premiers pas avec Docker
 
Dev opsec dockerimage_patch_n_lifecyclemanagement_2019
Dev opsec dockerimage_patch_n_lifecyclemanagement_2019Dev opsec dockerimage_patch_n_lifecyclemanagement_2019
Dev opsec dockerimage_patch_n_lifecyclemanagement_2019
 
Dev opsec dockerimage_patch_n_lifecyclemanagement_
Dev opsec dockerimage_patch_n_lifecyclemanagement_Dev opsec dockerimage_patch_n_lifecyclemanagement_
Dev opsec dockerimage_patch_n_lifecyclemanagement_
 
Openshift meetup Paris - 21/03/2018
Openshift meetup Paris - 21/03/2018Openshift meetup Paris - 21/03/2018
Openshift meetup Paris - 21/03/2018
 
Ippevent : openshift Introduction
Ippevent : openshift IntroductionIppevent : openshift Introduction
Ippevent : openshift Introduction
 
Ippevent : openshift Introduction
Ippevent : openshift IntroductionIppevent : openshift Introduction
Ippevent : openshift Introduction
 

Java in docker devoxx ma 2018