Vis ma vie de SysAdmin Forum PHP 2013

28
…de SysAdmin

description

Vis ma vie de SysAdmin Forum PHP 2013

Transcript of Vis ma vie de SysAdmin Forum PHP 2013

Page 1: Vis ma vie de SysAdmin Forum PHP 2013

…de SysAdmin

Page 2: Vis ma vie de SysAdmin Forum PHP 2013

Who am I

Page 3: Vis ma vie de SysAdmin Forum PHP 2013

• 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

Page 4: Vis ma vie de SysAdmin Forum PHP 2013
Page 5: Vis ma vie de SysAdmin Forum PHP 2013
Page 6: Vis ma vie de SysAdmin Forum PHP 2013

Fort trafic ?

Page 7: Vis ma vie de SysAdmin Forum PHP 2013

La forte charge• Saisonnalité

• Emissions (Capital, UDPP)

• Mercredi Matin, dimanche pluvieux

• Reports d’audiences

• Evénement de la chaine (Taig Khris)

• Actualité

Page 8: Vis ma vie de SysAdmin Forum PHP 2013
Page 9: Vis ma vie de SysAdmin Forum PHP 2013

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

Page 10: Vis ma vie de SysAdmin Forum PHP 2013

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

Page 11: Vis ma vie de SysAdmin Forum PHP 2013

Notre Stack

Page 12: Vis ma vie de SysAdmin Forum PHP 2013

Gérer un site à forte charge

• Automatiser

• Mesurer

• Tester

• Vérifier

• Tuner

Le sysadmin impose les contraintes qui vous permettront de tenir cette charge !

Page 13: Vis ma vie de SysAdmin Forum PHP 2013

Automatiser

• Lancement de VMs

• La configuration

• Déploiement du code

• … et le rollback !

• Puppet / Chef / MCollective

• Capistrano / Capify

Page 14: Vis ma vie de SysAdmin Forum PHP 2013

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

Page 15: Vis ma vie de SysAdmin Forum PHP 2013

Exemple de graphite avec drawLineAsInfiniteExemple de temps de génération des pages

Page 16: Vis ma vie de SysAdmin Forum PHP 2013

Tester

• Jenkins

• VigoJS

• WebPageTest privé

• Jmeter / BlazeMeter

• Siege / AB / Tsung

• Replicate Proxy

Page 17: Vis ma vie de SysAdmin Forum PHP 2013
Page 18: Vis ma vie de SysAdmin Forum PHP 2013
Page 19: Vis ma vie de SysAdmin Forum PHP 2013

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

Page 20: Vis ma vie de SysAdmin Forum PHP 2013

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

Page 21: Vis ma vie de SysAdmin Forum PHP 2013

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

Page 22: Vis ma vie de SysAdmin Forum PHP 2013

Do’s and don’ts

Page 23: Vis ma vie de SysAdmin Forum PHP 2013

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

Page 24: Vis ma vie de SysAdmin Forum PHP 2013

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

Page 25: Vis ma vie de SysAdmin Forum PHP 2013

if $request > 3ms { send_mail(); }

Page 26: Vis ma vie de SysAdmin Forum PHP 2013

Threads Status

Max Connections (MySQL)

#lol

Page 27: Vis ma vie de SysAdmin Forum PHP 2013

Redis Memory

Unsaved Changes

Pas de gestion des erreurs Pas de monitoring applicatif

Pas de monitoring Redis

#wat #tristesse

Page 28: Vis ma vie de SysAdmin Forum PHP 2013

tech.m6web.fr

github.com/m6web/

@techM6web

[email protected]

Questions