Vis ma vie de SysAdmin Forum PHP 2013

7 037 vues

Publié le

Vis ma vie de SysAdmin Forum PHP 2013

Publié dans : Technologie
0 commentaire
6 j’aime
Statistiques
Remarques
  • Soyez le premier à commenter

Aucun téléchargement
Vues
Nombre de vues
7 037
Sur SlideShare
0
Issues des intégrations
0
Intégrations
1 793
Actions
Partages
0
Téléchargements
30
Commentaires
0
J’aime
6
Intégrations 0
Aucune incorporation

Aucune remarque pour cette diapositive

Vis ma vie de SysAdmin Forum PHP 2013

  1. 1. …de SysAdmin
  2. 2. Who am I
  3. 3. • Clubic, Jeuxvideo.fr, Achetezfacile, Turbo, Deco, • Catchup TV (6Play.fr, IpTV) • M6Mobile By Orange • ~ 20 sites, 14.7M VU, 50M Vidéos vues par mois • 40 Devs, 3 Root
  4. 4. Fort trafic ?
  5. 5. La forte charge • Saisonnalité • • • Emissions (Capital, UDPP) Mercredi Matin, dimanche pluvieux Reports d’audiences • Evénement de la chaine (Taig Khris) • Actualité
  6. 6. PHP Pour un SysAdmin • Single Threaded • php.ini • Né pour mourir • max memory size, max_execution_time • Patch Suhosin (< 5.4) • Gestion de la mémoire et garbage collector
  7. 7. Les Frameworks pour un SysAdmin • Adieu les perfs ? (versus du Plain) • Performances plus prévisibles • Accélère le développement • Favorise les bonnes pratiques et la sécurité • Une communauté, des librairies, de la doc • Plus complexe à déployer • Une recette versus un rsync
  8. 8. Notre Stack
  9. 9. Gérer un site à forte charge • Automatiser • Mesurer • Tester • Vérifier • Tuner Le sysadmin impose les contraintes qui vous permettront de tenir cette charge !
  10. 10. Automatiser • Lancement de VMs • La configuration • Déploiement du code • … et le rollback ! • Puppet / Chef / MCollective • Capistrano / Capify
  11. 11. Mesurer et Alerter • ~ 120K métriques @ M6Web • Statsd / Graphite / Cacti • Chefs de projets créent leur dashboards (!) • Codes HTTP, Temps SQL, Temps PHP, Conso CPU, Select, Trafic… • Temps de génération de pages • MAYDAY ! • Slow Logs, Ngrep
  12. 12. Exemple de graphite avec drawLineAsInfinite Exemple de temps de génération des pages
  13. 13. Tester • Jenkins • VigoJS • WebPageTest privé • Jmeter / BlazeMeter • Siege / AB / Tsung • Replicate Proxy
  14. 14. Vérifier • Coke (le soft hein) • Logs (Systèmes, applicatifs) • Checklist avant mise en prod • Monitoring ? • Graphite ? • Tests de charge ? • Rollback ? • Café ? • + 8000 compteurs sur l’infrastructure • Header HTTPs
  15. 15. curl -I http://www.6play.fr/ -s |sort ! Age: 141 Connection: keep-alive Content-Length: 16397 Content-Type: text/html Date: Mon, 18 Nov 2013 07:32:16 GMT HTTP/1.1 200 OK Server: Cobol Server 2.0 Vary: Accept-Encoding Via: 1.1 varnish X-Backend-Ip: 141.138.90.240 X-Backend-status: 200 X-Cache-Hits: 11 X-Cache-Host: m6w-cache2 X-Cache-IP: 2a01:a580:6:1972::59 X-Cache-Status: HIT X-Cache-ttl: 300.000 X-Origin: code X-Varnish: 3297899555 3297796790
  16. 16. Tuner • Le mieux est l’ennemi du bien • Attention à l’optimisation prématurée ! • Rigueur scientifique ! • Hardware (contrôleurs, CPU, réseau…) • Software (Kernel, SlowStart, I/O Scheduler, FileSystem etc…) • Software serveur • PHP (Mémoire, Pools FPM, MySQLnd) • Nginx / Apache / Varnish • MySQL sur FusionIO et SSD
  17. 17. Do’s and don’ts
  18. 18. Do’s • Prévoir le pire • K.I.S.S • Respecter les standards HTTP • Design REST de nos APIs • Utiliser les nombreux caches à notre disposition • Monitorer les crawls et l’usage des webservices • Soulager au maximum la BDD (Memcached, Redis, Sphinx) • Indexer (mais pas trop) • Grapher *tout* • Yellow CODE • Last Friday Talks
  19. 19. Don’ts • Soyons cool avec PHP • pas d’exec, system, mail, eval • pas de chemins en dur • Empêcher la mise en cache (Attention aux POST et now() ) • Eviter le cross-base et les fonctions dangereuses pour la réplication MySQL • Ne faire confiance à personne: • • • encapsuler avec des timeouts les inputs utilisateurs Les stats et les logs en bases
  20. 20. if $request > 3ms { send_mail(); }
  21. 21. Threads Status Max Connections 
 (MySQL) #lol
  22. 22. Redis Memory Unsaved 
 Changes Pas de gestion des erreurs Pas de monitoring applicatif Pas de monitoring Redis #wat #tristesse
  23. 23. Questions tech.m6web.fr github.com/m6web/ @techM6web baptiste.dupain@m6.fr

×