no way to compare when less than two revisions
Différences
Ci-dessous, les différences entre deux révisions de la page.
— | temoignages:le_bon_coin [2012/03/06 09:55] (Version actuelle) – créée jpargudo | ||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
+ | ====== Cas d' | ||
+ | Paris, le 6 mars 2012, | ||
+ | |||
+ | Aujourd' | ||
+ | |||
+ | ===== leboncoin.fr ===== | ||
+ | |||
+ | Pour qui ne connaîtrait pas encore le site LeBonCoin.fr, | ||
+ | |||
+ | ===== Historique ===== | ||
+ | |||
+ | Le site existe depuis Avril 2006 et sa forme originale provient d'un groupe Suédois, qui a initié le projet, avec le site '' | ||
+ | |||
+ | leboncoin.fr fonctionnait au départ sous MySQL, origines suédoises oblige. La migration vers PostgreSQL a été envisagée lorsque sont apparus des soucis de montée en charge et de performances imputables à la version de MySQL de l' | ||
+ | |||
+ | Christophe Legendre est arrivé dans la société en 2008, la version de PostgreSQL en production était alors la version 8.1, hébergée sur un petit serveur HP (G5) qui contenait à peine 8 disques, pour environ 800.000 annonces. | ||
+ | |||
+ | Depuis, la croissance du site a été supportée par une montée en puissance du matériel, que les mises à jour de PostgreSQL ont accompagné. | ||
+ | En l' | ||
+ | |||
+ | Le site est désormais animé par une machine '' | ||
+ | |||
+ | * DL980 | ||
+ | * 160 cœurs | ||
+ | * 1 Téraoctet de RAM | ||
+ | * 3PAR V800 | ||
+ | * 192 disques (dont 32 ssd et 160 fiber-channel) | ||
+ | * 400 Gigaoctets de cache | ||
+ | |||
+ | |||
+ | Il existe une fonction de « //tiering// » automatique, | ||
+ | |||
+ | Cette baie permet ainsi d' | ||
+ | |||
+ | Les caractéristiques de la base principale ne sont pas démesurées pour autant, celle-ci a en tout une volumétrie de 2.8 To. C'est certes une taille respectable, | ||
+ | |||
+ | Cependant, la base est soumise à de fortes contraintes. Une caractéristique semble déroutante à la première lecture : le taux d' | ||
+ | |||
+ | Les écritures sont dues aux quelques 500.000 nouvelles annonces publiées chaque jour, et aux plusieurs milliers d' | ||
+ | |||
+ | Au sujet de l' | ||
+ | |||
+ | ===== Pourquoi Slony ? ===== | ||
+ | |||
+ | Slony est un outil de réplication très connu de la communauté PostgreSQL. Il permet de construire des // | ||
+ | |||
+ | C'est précisément pour cette caractéristique qu'il est utilisé chez leboncoin.fr, | ||
+ | |||
+ | Pour mettre à jour le maître, on bascule la production sur l' | ||
+ | |||
+ | Car c'est une autre particularité de Slony : il permet la réplication dite « en cascade », où un esclave pourra à son tour fournir les données pour d' | ||
+ | |||
+ | Bien sûr, avec les avancées de PostgreSQL, Christophe Legendre n' | ||
+ | |||
+ | Ainsi, grâce à Slony, leboncoin.fr utilise aujourd' | ||
+ | |||
+ | De même, le site est redondé sur deux datacenters différents, | ||
+ | |||
+ | Ces deux sites sont reliés par deux fibres 10 Gb. Le transit internet est assuré lui aussi par deux fibres 10Gb. Ce qui est largement suffisant pour supporter les 3 Gb de bande passante qui sont utilisés à ce jour. | ||
+ | |||
+ | ===== Configuration de PostgreSQL ===== | ||
+ | |||
+ | La configuration de PostgreSQL sur le maître donne aussi le tournis, pour peu que vous ayez jamais modifié un postgresql.conf. Voici quelques chiffres-clé de la configuration: | ||
+ | * '' | ||
+ | * '' | ||
+ | * '' | ||
+ | * '' | ||
+ | * '' | ||
+ | * environ 160 Wals en rotation | ||
+ | |||
+ | À n'en pas douter, peu d' | ||
+ | |||
+ | Au sujet de la facilité de configuration de PostgreSQL, Christophe Legendre est radical: « Je mets quiconque au défi de faire plus simple que le '' | ||
+ | |||
+ | ===== Des problèmes avec PostgreSQL ? ===== | ||
+ | |||
+ | Sur cette question, Christophe Legendre a été très clair. Oui il y a eu, une fois, un problème d' | ||
+ | |||
+ | Christophe Legendre assure qu'« après ce genre d’événement, | ||
+ | |||
+ | Il voit cependant deux inconvénients majeurs dans l' | ||
+ | |||
+ | ==== La création des index ==== | ||
+ | |||
+ | Bien que PostgreSQL permette de créer des index sans blocages (voir '' | ||
+ | |||
+ | ==== Le partitionnement ==== | ||
+ | |||
+ | La plus grosse table contient près de 1.7 milliards d' | ||
+ | |||
+ | Bien sûr, la question du partitionnement s'est posée, mais à la lecture de la documentation PostgreSQL, Christophe Legendre a fait le même constat que beaucoup de personnes: c'est bien trop compliqué à mettre en œuvre, et la maintenance est alors accrue. Par exemple, PostgreSQL ne créée pas automatiquement des sous-tables. | ||
+ | |||
+ | Au final, cette table n'a pas été partitionnée, | ||
+ | |||
+ | Là aussi, c'est un « //work in progress// » dans la communauté des développeurs de PostgreSQL : on sait que le partitionnement doit-être repensé. À ce jour, les discussions portent sur la syntaxe. | ||
+ | |||
+ | ===== Conclusion ===== | ||
+ | |||
+ | Christophe Legendre est revenu sur la facilité d' | ||
+ | |||
+ | En plus de la documentation, | ||
+ | |||
+ | À n'en pas douter, PostgreSQL est une pièce maîtresse de l' | ||
+ | |||
+ | La fréquentation du site le démontre tout aussi bien, avec ses 200 millions de pages lues et ses 4 millions de visiteurs uniques **par jour**. | ||
+ | Peu d' |