If you can't read please download the document
Upload
communicationafup
View
4.168
Download
4
Embed Size (px)
DESCRIPTION
Présentation d'Olivier Duquesne et Christian Lefebvre pour le RDV AFUP Lille du 31 mai 2011 sur la montée en charge avec PHP
Citation preview
2. Introduction
3. La pratique avec L'Autre Net 4. L'expertise avec Atos Worldline 5. Club Linux Nord-Pas de Calais
6. 30 bnvoles et prs de 300 sympathisants 7. La premire de la rgion 8. Un GULL 9. Animation de rseau
10. Le relais AFUL 11. La convention avec l'UFJ Les projets de l'association 12. Logiciel Libre
13. Libert d'tudier 14. Libert de copier et redistribuer 15. Libert de modifier 16. Plusieurs licences possibles
17. Pourquoi PHP ?
18. Gratuit 19. Forte communaut d'utilisateurs et dveloppeurs : stabilit et scurit 20. Facile comprendre et utiliser 21. Portable : Apache / ligthttpd / IIs / iPlanet / ... / Linux / Windows / HP-UX / BSD / ... 22. Mode web ou CGI 23. Un standard du web ? 24. Comment ?
25. Chez un hbergeur "gratuit" : Free.fr , PagesPerso, ... 26. Chez un hbergeur "associatif" : L'Autre Net, TuxFamily, APINC, Marsnet, ... 27. Chez un hbergeur "commercial" : OVH, Nexen, Atos Worldline, AlterWay, ... 28. L'Autre Net
29. Suite la fermeture d'Altern 30. Hbergeur Associatif Autogr Non-Marchand 31. Bnvoles (root et collge solidaire) 32. Espace de libert 33. Mutualisation de plateforme 34. AlternB
35. 100 Mo (web + mail + listes + bdd) 36. RedHat bricole / Apache / PHP2 / Qmail / ... 37. Usine gaz !! Temps de rponse dplorables, une affaire de geek 38. Un public novice et militant (associations en tous genres, pages perso) 39. AlternC (1)
40. 1200 comptes, 2500 noms de domaines, des listes de diffusions, statistiques, mail, webmail, machines la demande ... 41. Un transit de 5Mbs 42. Debian, Apache, PHP5, Mailman, Awstats, Postfix, Courier-*, vServer, OSPF, IPVS, .... 43. AlternC (2)
44. les utilisateurs (bnvoles) 45. les usagers (membres, toujours aussi novices) Pour tout faire : DNS, BDD, dition, Web, ... 46. Logiciel Libre maintenu par L'Autre Net, Globenet, Octopuce, Koumbit 47. Packag (Debian), mais peu scalable .... 48. AlternC (3) 49. Scuriser les donnes (1)
50. contrainte pour l'administrateur (bien actualiser les rpertoires autoriss lors de la cration de comptes) 51. safe_mode_gid : chaque utilisateur AlternC a un GID unix pour cloisonner l'accs aux donnes et positionner des quotas disques 52. Scuriser les donnes (2)
53. Un stockage unique (NFSv3) en RAID5 54. Sauvegardes incrmentales et compltes
55. des bases de donnes Protections des machines
56. memory_limit & co 57. Les difficults
58. Un process PHP peut ralentir l'ensemble de la plateforme. 59. Les utilisateurs codent ce qu'ils veulent 60. La plupart du temps, ils n'y connaissent rien et rcuprent des applications toutes faites
61. Problmes courants
62. "Je ne peux plus crire" => full / quota 63. "a marche plus" => cache, DNS, restaure 64. "a rame" => chez moi a marche (tm)
65. MaxServer Apache 66. Max Established Sockets 67. Slow Query 68. Tuning Systme (1)
69. Attention, un thread apache+PHP arrive facilement 50 Mo en RSS 70. Diminuer le keepalive et timeout (bonne ide si beaucoup de RAM) 71. Utilisation de mod_bandwith : quota BP Tuning PHP lger finalement ... 72. Tuning Systme (2)
73. Utilisation de memcached : problmes de session (Joomla, Moodle) 74. Russites
75. hbergement de spip-contrib.net (et son dpart transparent en 2009 ...) 76. contributions plugins SPIP-Mutu, SPIPTeX, SPIPOrtho Utilisation de memcached 77. Aides diverses : patch Drupal, Dokuwiki, Moodle 78. 79. Atos Worldline
80. Spcialis dans les paiements lectroniques, les eCS et les marchs financiers. 81. Un chiffre daffaires de 867 millions deuros, emploie plus de 5 400 personnes en Europe et en Inde et ralise plus de 15 Milliards de transactions par an. 82. Les chiffres en 2008
83. 45 Mds demails changs par 23 M bl 84. 2 milliards de transactions dacquisition 85. 21 millions doprations de carte de crdit 86. 100 millions de paiements internet 87. 36 millions de cartes de fidlit 88. 50 milliards de pages vues 89. Offres commerciales
90. autour des technologies J2EE 91. framework issus des labos R&D Offre d'hbergement ddi
92. en silo Front/Middle/Back (ou pas) 93. flexibilit Business Unit par mtier 94. Scalabilit
95. Un OS homogne (Atos LFS)
96. scurit - expertise Des outils d'administration
Rpartition de charge
97. Cas concret : e-Commerce
98. Serveur Web matris
99. PHP 5.2.5 : les options minimales, modules externaliss, sans debug Cluster BDD :
tat : 10 minutes de disponibilit en benchmark 100. Optimisations Systme (Web)
101. Changement ioscheduler: [deadline] cfq 102. Dploiement de machines supplmentaires
103. Templates de configurations Mise en cache PHP : Alternative PHP Cache (APC) :cache opcode 104. Mise en cache SQL : memcached : 5 10% des hits encache 105. Optimisations Systme (HTTP)
106. Technologie propritaire + xcache 107. Administration via un Web ddi (Tomcat) Varnish : mise en cache HTTP
108. Administration via un Web ddi (Erlang) 109. Temps de rponse divis par 3 ! 110. Optimisations Systme (NFS)
111. TCP, bg, hard, timeo=300: garder la ligne 112. noatime: force la dsactivation de l'accounting 113. sunrpc.tcp_slot_table_entries=128: table demontage 114. rsize=32768, wsize=32768: bits en read et write 115. actimeo=0: dsactivation du cache NFS 116. CONFIG_NFS_DIRECTIO=y(kernel)
117. innodb_flush_methods = O_DIRECT(MySQL) minra = off(Data OnTapp) 118. Optimisations Base de Donnes
119. Atos est Gold Partner MySQL Rpartition via Heartbeat2
120. Industrialisation, homognisation 121. Sparation critures / lectures via Rplication Tuning MySQL
122. Optimisations query_cache_size 123. Compression: slave_compressed_protocol=1 124. Autre cas concret: Portail sportif
125. Refonte graphique + multilingue
126. Dialogue avec le nouveau SI du client 127. Module de statistiques sportives Contrainte: tenir les pics de charge pendant les vnements sportifs 128. Solution retenue
129. Framework Symfony 1.4 130. ORM Doctrine 131. Plusieurs plugins:
132. Maison: Surcharge des donnes, traabilit Pas mal de batchs (imports, prtraitements) 133. Cache applicatif (memcached) 134. Droulement des dveloppements
135. Pas mal de mouvements dans les specs 136. Quelques drapages qui empchent de bencher suffisamment tt 137. L'idal pour avoir de mauvaises surprises en fin de projet ... 138. Les ORM c'est cool
139. Doctrine gnre les classes de mapping et les tables SQL 140. Symfony gnre les classes de CRUD et d'admin En thorie, y'a plus qu' affiner les dtails 141. Mais c'est gourmand
142. 568 classes auto gnres et 337 surcharges 143. 2Mo de code rien que pour le 'M' de MVC ... 144. Les ORM c'est cool(suite) Les classes gnres emballent les accs aux donnes Doctrine::getTable('Bidule')->findOneByMachin($machin)- >getMaColonne() Mais a masque toute la complexit: La 1re version de la homepage gnrait plus de 1000requtes BDD! Et de belles horreurs bien caches: Doctrine::getTable('Bidule')->findByXyz()->getFirst() Le select retourne ventuellement des centaines de lignes,que doctrine parse pour instancier autant d'objets qu'ilpeuple un par un pour finalement attraper le premier et jetertout le reste 145. Le CRUD gnr c'est cool
146. Ce code contient des templates tiroir, en quantit 147. Un sous-sous-template peut accder un champ induit qui entrane une requte BDD 148. Mais a fait des trucs louches
149. On se retrouve avec 1+N requtes au lieu d'une seule 150. Il faut donc adapter la config des admin generators pour forcer des join 151. PHP, a rame
152. Le calcul des statistiques ncessite des calculs assez lourds, dans les postSave Solution en 2 tapes:
153. Recodage des algos en procdures stockes (sauvage, mais efficace) 154. Le cache c'est cool
155. Les TTL permettent de grer facilement le renouvellement des donnes caches Mais pendant un live, il faut que les infos arrivent sur le site ds rception Donc dcache explicite, mais le plus fin possible(si on dcache trop large en pleine charge, on explosetout) a implique des rgles trs complexes 156. Memcached c'est cool
157. Tous les fronts peuvent accder au mme cache et le dcache peut tre dclench de partout 158. On peut stocker des milliers d'lments sans pertes de perfs 159. Mais le protocole ne permet pas de delete par pattern 160. Mais symfony rserve des surprises Alors comment symfony implmente la mthoderemovePattern() ? Une entre meta stocke la liste des cls de toutes les entres(donc potentiellement des milliers) foreach( $this ->getCacheInfo()as$key ){ if(preg_match( $regexp ,$key )) { $this ->remove(substr( $key , strlen( $this ->getOption( 'prefix' )))); } } Et paf le php ... 161. Et maintenant, qu'est-ce qu'on fait?
162. vitez de gnrer du code inutile (dansschema.yml )symfony: { form: false, filter:false } 163. Testez et benchez ds le dbut, comptez les requtes etanalysez les pour dtecter les appels cachs avantqu'ils se fondent dans la masse 164. Prenez en compte le cache ds le dbut 165. N'ayez confiance en personne, mme pas dans lesproduits les plus rputs :-) 166. Quelques outils utiles
167. Varnish (ESI notamment) 168. APC (pour l'opcode, mais aussi le cache local) 169. Procdures stockes (un curseur va plus vitequ'une boucle PHP) 170. Symfony Web Debug Toolbar (logs et dtails sur lesrequtes SQL) 171. netstat, ps, gdb et autres outils de diagnostic carles soucis n'apparaissent souvent qu'en vraiecharge 172. Jmeter et autres outils de bench 173. Xdebug (profiling) 174. Ressources
175. L'Autre Net:http://lautre.net 176. Atos Worldline:http://www.atosworldline.fr Les outils
177. Symfony:http://www.symfony-project.org 178. Doctrine:http://www.doctrine-project.org 179. Heartbeat:http://www.linux-ha.org 180. Questions?
181. Christian Lefebvre:[email_address] 182. CLX:[email_address] 183. L'Autre Net:[email_address]