[Adictiz] 2011 montée en charge avec php

4,618 views
4,467 views

Published on

Présentation par Stéphane Dessein sur la montée en charge avec PHP, pour le RDV AFUP Lille du 31 mai 2011 à Euratechnologies

0 Comments
5 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
4,618
On SlideShare
0
From Embeds
0
Number of Embeds
430
Actions
Shares
0
Downloads
35
Comments
0
Likes
5
Embeds 0
No embeds

No notes for slide

[Adictiz] 2011 montée en charge avec php

  1. 1. Montée en charge avec PHPCas Paf le chien<br />
  2. 2. Présentation<br />Stéphane DESSEIN<br />Développeur PHP<br />Administrateur Système.<br />Chez Adictiz de septembre 2008 à octobre 2009<br />Développeur d’application Facebook indépendant (2009-2011) <br />Retour chez Adictiz depuis mars 2011.<br />
  3. 3. Sommaire<br />Paf le chien, le concept<br />Paf le chien V1 et V2 dans un gestionnaire de contenus<br />Paf le chien V3 : Application Facebook dédiée<br />Application ‘’ExtraLight’’<br />Intérêt du FBML<br />Evolutions de Paf<br />Nouvelles versions<br />Jeu de gestion<br />Etude d’un cas : Paf Deluxe / Adictiz Framework<br />Changements d’architectures serveurs<br />Multiplication des machines<br />Vers une virtualisation complète.<br />
  4. 4. Paf le chien - le jeu<br />
  5. 5. Paf le chien - le jeu<br />
  6. 6. Paf le chien - le jeu<br />
  7. 7. Paf le chien V1 : Stratosphère<br />Mini plateforme de jeux sur facebook<br />Jeu intégré dans gestionnaire de contenu <br />1 opération :<br />Associé à une marque<br />1 ou plusieurs jeux<br />1 ou plusieurs cadeaux<br />Classements (général, amis, etc.. )<br />Inscriptions<br />Op-tins / pubs<br />Résultat : 6000 Users / 2 semaines : aucune surcharge.<br />1 Serveur :<br />Moyenne Gamme<br />4 CPU / 2 Ghz<br />4 GB Ram<br />500 Go Disk / Raid 1<br />
  8. 8. Paf le chien V2 : Stratosphère devient Paf le chien<br />Toujours dans le gestionnaire de contenus<br />1 opération créée<br />Pas de cadeaux<br />Classements<br />Optins/pubs <br />Etc…<br />Résultat : <br />400 userssimultannées<br />=> Surchage serveur !<br />Infra identique :<br />1 Serveur :<br />Moyenne Gamme<br />4 CPU / 2 Ghz<br />4 GB Ram<br />500 Go Disk / Raid 1<br />
  9. 9. Paf le chien V2 : Analyse<br />Gestionnaire de contenu trop lourd ?<br />L’état des lieux: <br />25 requêtes SQL à chaque chargement de page<br />10-15 requêtes SQL à chaque partie<br />3-4 appels API Facebook / page<br />Données utilisateurs (nom/prénom, photo)<br />Liste d’amis<br />Autres données… (si ajouté application etc..)<br />
  10. 10. Paf le chien V3 : Application dédiée FBML<br />Création d’une nouvelle application dédiée<br />Projet PHP très simple : <br />3 fichiers : <br /><ul><li>index.php
  11. 11. homepage
  12. 12. Page des classments
  13. 13. score.php
  14. 14. Script appelé par le jeu pour envoyer le score au serveur
  15. 15. jeu.swf
  16. 16. Le jeux en question</li></ul>Base de donnée ultra light<br /> 2 tables :<br /><ul><li>Score
  17. 17. Fbuid
  18. 18. score
  19. 19. score_log
  20. 20. Fbuid
  21. 21. score,
  22. 22. Date
  23. 23. Ip</li></li></ul><li>Paf le chien V3 : Application dédiée FBML<br />Application PHP très légère <br />Homepage :<br />Classements<br />2 requêtes SQL <br />Listing fbuid et score <br />Comptage pour pagination<br />+ Appel API facebook pour listing Amis<br />Chargement <br />Jeux flash<br />Chargement Application<br />index.php<br />Enregistrement score<br />score.php<br />Affichage classement<br />classement.php<br />
  24. 24. Paf le chien V3 : Application dédiée FBML<br />Intérêt énorme du FBML<br />Facebook comme proxy<br />
  25. 25. Paf le chien V3 : Application dédiée FBML<br />FBML, balises spéciales interprétés par facebook.<br />Plus la peine de stocker les informations sur les utilisateurs :<br />=> On stocke uniquement le fbuid<br />Exemple : <br /><fb:nameuid=4 /> deviendra : Mark Zuckerberg<br /><fb:picuid=4 /> deviendra :<br />
  26. 26. Paf le chien V3 : Application dédiée FBML<br />Bilan :<br />Coût :<br />3 développeurs<br />Durée : 6 h de développement<br />Résultat : <br />400 connexion simultanés <br />6 000 connexion simultanés <br />Serveur Surchargé !<br />Apache/PHP<br />MySQL<br />
  27. 27. Paf le chien V3 : Application dédiée FBML<br />Optimisation / Fine tunning Serveur <br />Apache / PHP : <br />Accepter plus de connexions<br />Réduction du keep-alive<br />Accélérateur : eAccelerator.<br />MySQL<br />Paramétrage mémoire<br />Gain : <br />6 000 connexions => 10 000 connexions<br />Serveur surchargé !<br />
  28. 28. Paf le chien V3 : Application dédiée FBML<br />Nouvelle architecture Serveur<br />Séparation Web et Base de donnée<br />Résultat : <br />12 000 connexions 25 000 connexions.<br />
  29. 29. Paf le chien V3 : Application dédiée FBML<br />Problème de sécurité.<br />2<br />Facebook Servers<br />1<br />3<br />5<br />4<br />6<br />1 : arrivée sur l’application<br />2-3: requête de Facebook vers nos serveur et vice-versa<br />4 : Facebook a parsé le FBML, la page est rendu à l’utilisateur<br />5 : Jeu flash chargé chez l’utilisateur avec en flashvar, le fbuid<br />6 : Envoi du score directement sur nos serveurs<br /> 2 paramètres : Fbuid et score<br />
  30. 30. Paf le chien V3 : Application dédiée FBML<br />Sécurisation via authentification facebook.<br />2<br />Facebook Servers<br />1<br />3<br />5<br />4<br />7<br />8<br />6<br />6 : Envoi du score directement sur nos serveurs<br /> 2 paramètres : clé d’authentification Facebook et score<br />7 : vérification de la clé d’authentification Facebook<br />8 : réception du Fbuid de façon sécurisée.<br />
  31. 31. Paf le chien V3 : Application dédiée FBML<br />Résultat : <br />Chute de performance <br />Appel API Facebook : ~ 1 sec<br />Process Apache Occupés à rien faire.<br />Explosion mémoire serveur.<br />Serveur n’acceptant plus de connexion<br />Chute d’acceptation de connexion à 15 000 !<br />
  32. 32. Paf le chien V3 : Application dédiée FBML<br />Nouvelle Infrastructure<br />LoadBalancing (IP) sur 2 web frontaux<br />35 000 Connexions simultannées<br />Serveurs webs chargés (process ‘’inactifs’’)<br />
  33. 33. Paf le chien V3 : Application dédiée FBML<br />Changement d’infrastructure.<br />Haute disponibilité du jeux<br />Envoi du score<br />Facebook Servers<br />
  34. 34. Paf le chien V3 : Application dédiée FBML<br />Résultat Final <br />60 000 Connexions simultannées max<br />Plus de 500 Parties jouées / sec<br />200 nouveau joueurs / sec<br />
  35. 35. Evolutions de Paf le Chien<br />Pic de trafic passé, Paf le chien évolue !<br />Multiplication des versions<br />Gestions d’items / payants / gratuits etc..<br />
  36. 36. Etude de cas : Paf Deluxe / Adictiz Framework<br />Paf le Chien, devenu un véritable jeu de gestion.<br />
  37. 37. Adictiz Framework<br />AdictizFrameWork est un outil permettant la distribution de n’importe quel jeu web sur n’importe quel site internet doté d’API<br />2 Enjeux:<br />Garder la même qualité de service entre 1 et 10 millions d’utilisateur (temps de réponse, disponibilité)<br />Mieux connaître nos utilisateurs et leurs besoins (utilisateur unique sur nos jeux)<br />
  38. 38. AdictizFrameWork<br />FrameWork<br />Data<br />Plateforme 1<br />Utilisateur<br />Utilisateur<br />Utilisateur<br />Utilisateur<br />Utilisateur<br />Utilisateur<br />Jeu 1<br />Data<br />Plateforme 2<br />
  39. 39. AdictizFrameWork – Zend Framework<br />Utilisateurs<br />Réseaux sociaux<br />Vues<br />Jeu Flash<br />Framework Flash<br />Controlleurs<br />Abstraction du réseau<br />Traitement des données<br />Abstraction du moteur de données<br />Adictiz Framework<br />Adictiz<br />AMF<br />Modèles<br />MySQL<br />
  40. 40. Etude de cas : Paf Deluxe / Adictiz Framework<br />Contraintes Techniques :<br />Stocker/récupérer toutes les informations utilisateurs (iFrame)<br />Stocker toutes les transactions (achats d’items)<br />Statistiques sur tout les éléments du jeu<br />Entrées/sorties utilisateurs<br />Achats/utilisations d’items<br />Achats de crédits etc..<br />
  41. 41. Etude de cas : Paf Deluxe / Adictiz Framework<br />Conséquences :<br />Enormément de requêtes SQL<br />Ratio INSERT/SELECT trop élevé<br />Trafic montant progressivement<br />=> Charge serveur MySQL monte en flèche !<br />
  42. 42. Etude de cas : Paf Deluxe / Adictiz Framework<br />Optimisation pour alléger le serveur MySQL<br />Exploitation des sessions : <br />INSERT / UPDATE<br />SELECT<br />Session PHP<br />Fin de Partie<br />Récupération donnés utilisateur<br />Jeu Flash Chargé coté Client<br />
  43. 43. Etude de cas : Paf Deluxe / Adictiz Framework<br />Constat ?<br />Serveur MySQL nettement allégé<br />Charge mieux équilibrée entre PHP et MySQL<br />
  44. 44. Etude de cas : Paf Deluxe / Adictiz Framework<br />Constat ?<br />Trafic continuant à monter <br />=> Evolution de l’infrastructure<br />Serveur de cache de fichiers statiques<br />Module PHP memcache : partage des sessions entre les serveurs<br />Module PHP APC : Cache de fichiers / Précompilateur / Cache de sessions Local<br />
  45. 45. Changement d’infrastructure serveur<br />LoadBalancer<br />Web Cache<br />Web Cache<br />SSL (HTTPS)<br />LoadBalancer<br />Web / PHP<br />Web / PHP<br />Base de données<br />Memcache<br />
  46. 46. Fonctionnement des modules PHP : Memcache<br />Memcache : Sessions PHP gérés sur un seul serveur <br />Partage des sessions entre plusieurs Serveur WEB<br />Performance => mémoire<br />Transparent : (configuré dans php.ini)<br />Memcache<br />PHP Session<br />PHP Session<br />PHP Session<br />Web / PHP<br />Web / PHP<br />Web / PHP<br />
  47. 47. Fonctionnement des modules PHP : APC<br />APC : Cache Opcode / Cache utilisé comme session local<br />Exemple sans APC : <br />
  48. 48. Fonctionnement des modules PHP : APC<br />Avec APC <br />Résultat :<br />Serveur PHP exécute 6 fois plus de requêtes.<br />
  49. 49. Infrastructure de demain : Virtualisation<br />Full Virtualisé pour évolutivité au maximum<br />Architecture Serveurs Web<br />Ajout de Serveur Web/PHP à la demande<br />Déploiement très rapide.<br />Sécurité : Snapshots, remonter VM sur autre architechture<br />Web / PHP<br />Web / PHP<br />Web / PHP<br />Memcache<br />Virtualisation Base de données<br />
  50. 50. Infrastructure de demain : Virtualisation<br />Architecture Base de données<br />Complètement virtualisée<br />2 serveurs Masters en réplication Master/Master<br />Multiplication des slaves en cas de besoin<br />SQL Master 1<br />R/W<br />SQL Master 2<br />R/W<br />SQL Slaves – Read Only<br />
  51. 51. L’avenir ? Le Cloud ?<br />Gestion des montés en charge en Cloud ?<br />PHP supporté par de nombreuses plateformes<br />
  52. 52. Contacts<br />Stéphane Dessein<br />Développeur<br />stephane.dessein@adictiz.com<br />EuraTechnologies<br />165, avenue de Bretagne<br />59000 Lille – France<br />Charles Christory<br />Fondateur<br />charles.christory@adictiz.com<br />T/ +33 (0) 3 66 72 09 99<br />E/ contact@adictiz.com<br />

×