{"id":309,"date":"2010-05-28T18:19:44","date_gmt":"2010-05-28T17:19:44","guid":{"rendered":"http:\/\/www.alpesjug.fr\/?p=309"},"modified":"2010-05-28T18:20:20","modified_gmt":"2010-05-28T17:20:20","slug":"compte-rendu-de-la-soiree-opends-un-serveur-java-performant","status":"publish","type":"post","link":"https:\/\/www.alpesjug.fr\/?p=309","title":{"rendered":"Compte rendu de la soir\u00e9e OpenDS \/ Un serveur Java performant"},"content":{"rendered":"<p>Ludovic Poitou, Community Manager du projet <a title=\"OpenDS\" href=\"http:\/\/www.opends.org\/\" target=\"_blank\">OpenDS<\/a>, est venu nous pr\u00e9senter ce projet men\u00e9 chez Sun\/Oracle depuis 2006.\u00a0 En effet, l&rsquo;objectif a \u00e9t\u00e9 clair d\u00e8s le d\u00e9but, \u00e9crire un nouveau serveur d&rsquo;annuaire LDAP en Java aussi performant que l&rsquo;anc\u00eatre en C venu de chez Netscape (eh oui \u00e7a ne nous rajeunit pas ;o) ) offrant tous les services (standards et extensions) LDAP ainsi que plusieurs nouvelles fonctionnalit\u00e9s :<\/p>\n<div id=\"attachment_312\" style=\"width: 310px\" class=\"wp-caption alignright\"><a href=\"http:\/\/www.alpesjug.fr\/wp-content\/uploads\/2010\/05\/729v.jpg\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-312\" class=\"size-medium wp-image-312\" title=\"Ludovic Poitou\" src=\"http:\/\/www.alpesjug.fr\/wp-content\/uploads\/2010\/05\/729v-300x225.jpg\" alt=\"\" width=\"300\" height=\"225\" srcset=\"https:\/\/www.alpesjug.fr\/wp-content\/uploads\/2010\/05\/729v-300x225.jpg 300w, https:\/\/www.alpesjug.fr\/wp-content\/uploads\/2010\/05\/729v.jpg 640w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><p id=\"caption-attachment-312\" class=\"wp-caption-text\">Un serveur java Performant<\/p><\/div>\n<ul>\n<li>r\u00e9plication multi-maitres<\/li>\n<li>service de proxy (pour la s\u00e9curit\u00e9, le load-balancing, filtrage, &#8230;)<\/li>\n<li>annuaire virtuel (mashup de sources de donn\u00e9es)<\/li>\n<\/ul>\n<p>Ce projet a suivi 3 principes tout le long de son d\u00e9veloppement :<\/p>\n<ol>\n<li>Facilit\u00e9 d&rsquo;installation, de configuration , d&rsquo;utilisation, de gestion, de maintenance<\/li>\n<li>Extensibilit\u00e9 avec de nombreux points d&rsquo;entr\u00e9e pour personnaliser le comportement<\/li>\n<li>Performance<\/li>\n<\/ol>\n<p>Ce produit OpenSource est taill\u00e9 pour un usage de d\u00e9veloppement mais aussi pour des projets de grande envergure. Ainsi les tests de performance se font sur des serveurs SUN pour lesquels on alloue <strong>32Go de RAM pour une JVM 64 bits <\/strong>!!! avec 10 millions d&rsquo;entr\u00e9es et 2 serveurs r\u00e9pliqu\u00e9s.<\/p>\n<p>Pour obtenir de telles performances le code doit \u00eatre parall\u00e9lis\u00e9 et il faut faire attention aux goulots d&rsquo;\u00e9tranglement.\u00a0 Parmi ceux-ci l&rsquo;un des plus impactant est un Full GC qui prend beaucoup de CPU et de temps et donc p\u00e9nalise le service pendant plusieurs dizaines de secondes. Il n&rsquo;est donc pas possible de tout mettre en cache (car le risque de Full GC augmente). De m\u00eame, le recueil et la consolidation de statisitiques d&rsquo;utilisation peut rapidement devenir un goulet d&rsquo;\u00e9tranglement.<\/p>\n<p>Il est donc temps de s&rsquo;int\u00e9resser \u00e0 la gestion de la m\u00e9moire dans la JVM (de Sun) entre les diff\u00e9rentes g\u00e9n\u00e9rations, les diff\u00e9rents GC ainsi que les outils qui permettent d&rsquo;analyser les logs du Garbadge Collector.<\/p>\n<p>Un point int\u00e9ressant \u00e0 noter est que la mise en \u0153uvre des logs du Garbadge Collector a un fabile impact au niveau des performances et qu&rsquo;il est recommand\u00e9 de l&rsquo;activer en production pour optimiser la configuration de la JVM.<\/p>\n<p>Enfin Ludovic termine par une petite d\u00e9mo d&rsquo;installation et d&rsquo;utilisation d&rsquo;OpenDS, avant de r\u00e9pondre aux questions d&rsquo;un public attentif.<\/p>\n<p>Il est d\u00e9j\u00e0 22h et nous quittons les lieux pour aller prendre un verre et un morceau de pizza au No Name&#8230;.<\/p>\n<p>Quelques liens :<\/p>\n<p><a title=\"Pr\u00e9sentation AlpesJUG OpenDS\" href=\"https:\/\/www.opends.org\/wiki\/attach\/OpenDSPresentations\/OpenDSAlpesJUG2010.pdf\" target=\"_self\">Les slides de la pr\u00e9sentation<\/a><\/p>\n<p><a href=\"http:\/\/developers.sun.com\/learning\/javaoneonline\/j1sessn.jsp?sessn=TS-4887&amp;yr=2009&amp;track=javase\" target=\"_blank\">Les slides sur l&rsquo;optimisation de la JVM pr\u00e9sent\u00e9s \u00e0 JavaOne<\/a><\/p>\n<p>2 articles de <a href=\"http:\/\/briangoetz.blogspot.com\/\" target=\"_blank\">Brian Goetz<\/a> sur le parall\u00e9lisme et le multicoeur dans Java 7.<\/p>\n<p><a href=\"http:\/\/www.ibm.com\/developerworks\/java\/library\/j-jtp11137.html\" target=\"_blank\">Stick a fork in it 1\/2<\/a><\/p>\n<p><a href=\"http:\/\/www.ibm.com\/developerworks\/java\/library\/j-jtp03048.html\" target=\"_blank\">Stick a fork in it 2\/2<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Ludovic Poitou, Community Manager du projet OpenDS, est venu nous pr\u00e9senter ce projet men\u00e9 chez Sun\/Oracle depuis 2006.  En effet, l&rsquo;objectif a \u00e9t\u00e9 clair d\u00e8s le d\u00e9but, \u00e9crire un nouveau serveur d&rsquo;annuaire LDAP en Java aussi performant que l&rsquo;anc\u00eatre en C venu de chez Netscape &#8230;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[15,18],"tags":[4,366,11],"class_list":["post-309","post","type-post","status-publish","format-standard","hentry","category-compte-rendu","category-slides","tag-jug","tag-slides","tag-soiree"],"_links":{"self":[{"href":"https:\/\/www.alpesjug.fr\/index.php?rest_route=\/wp\/v2\/posts\/309","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.alpesjug.fr\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.alpesjug.fr\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.alpesjug.fr\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.alpesjug.fr\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=309"}],"version-history":[{"count":6,"href":"https:\/\/www.alpesjug.fr\/index.php?rest_route=\/wp\/v2\/posts\/309\/revisions"}],"predecessor-version":[{"id":316,"href":"https:\/\/www.alpesjug.fr\/index.php?rest_route=\/wp\/v2\/posts\/309\/revisions\/316"}],"wp:attachment":[{"href":"https:\/\/www.alpesjug.fr\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=309"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.alpesjug.fr\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=309"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.alpesjug.fr\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=309"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}