Transcript
Page 1: Java dans Docker : bonnes pratiquesjavaetmoi.com/wp-content/uploads/2018/04/208-04-18-Tools...Java dans Docker : bonnes pratiques Speakers Charles Sabourdin (Freelance), Jean-Christophe

JavadansDocker:bonnespratiquesSpeakersCharlesSabourdin(Freelance),Jean-ChristopheSirot(Docker)Format:ToolsinactionDate:18avril2018DansceToolsinAction,CharlesetJean-Christopheréalisentdifférentstestsàpartirdel’applicationJavadisponibledanslerepoGitHubjcsirot/resourcesmonger.Cetteapplicationestpackagéesousformed’unFatjaretdisposed’unDockerfile.Test1L’applicationconsommetoutelaRAMdelamachine,àsavoir256Mo.Surprise:pasd’OutOfMemoryError(OOME)nid’exception.Unsimplemessage«Killed».Test2LesspeakersaugmententlaRAMà512.CettefoisontombesurunOutOfMemoryError:JavaHeapSpace.Test3LeXmxestaugmentéà1024.L’applicommenceàramerpuistombeenOOME.Le–m512MpréciseàDockerlaquantitédemémoiredisponibledansleconteneur.Lorsqueleprocessusconsommeplusdemémoirequedonné,l’OStueleprocessus.Pourtant,l’applicationaréussiàutiliser848ModeHeap.Explication:utilisationduswapquipermetdefairebasculerlamémoirevivesurledisque.Lorsqu’iln’yaplusdeplace,l’OScommenceàécriresurledisquelecontenudelaRAM.Ily’adesdéplacementsdedonnéesRAM<->Disquedanstouslessens.D’oùl’applicationquirame.Onpourraitforcerl’OSàneplusutiliserleSwap.OptionDocker:--memory-swapiness=0L’applicrasheplusvite,sansramer.L’allocationduHeapestmontéà488Mo.Commentaffecterlabonnemémoire?Aligner–met–Xmxrequiertuneformulecomplexeàétablir.RecommandationdeDocker:utiliserJava9etnonJava8.LesdéveloppeursdelaJVMsesontposéslaquestion.Dockerutiliselemécanismedescgroup.Lorsqu’ondémarreunconteneur,onpeutfixerunelimitedemémoire.DepuisJava9etJava8update131,desflagsexpérimentauxontétéajoutésàlaJVM:UnlockExperimentalVMOptionsetUseCGroupMemoryLimitForHeap.LaJVMutilise¼delamémoiredisponible(siXmxnonspécifié).EnJava10,cesoptionsnesontplusexpérimentalesetcorrespondentmêmeaucomportementpardéfaut(sipasdeXmx).Recommandation:enleverleXmx.

Page 2: Java dans Docker : bonnes pratiquesjavaetmoi.com/wp-content/uploads/2018/04/208-04-18-Tools...Java dans Docker : bonnes pratiques Speakers Charles Sabourdin (Freelance), Jean-Christophe

Laversion10deJavaapporteunemeilleureintégrationdanslesconteneursDocker.SlidedeconclusionduToolsinaction:

Page 3: Java dans Docker : bonnes pratiquesjavaetmoi.com/wp-content/uploads/2018/04/208-04-18-Tools...Java dans Docker : bonnes pratiques Speakers Charles Sabourdin (Freelance), Jean-Christophe

Questionsouvertes:- Oùmettrecesoptionsdeparamétragemémoire:orchestrateur,Dockerfile?- Lesoutilsdebuild:pluginmavenfabricate?utilisationdejlinkpouravoirdes

versionsdeJVMpluspetites


Recommended