28
…de SysAdmin

Vis ma vie de SysAdmin Forum PHP 2013

  • Upload
    bdup

  • View
    4.534

  • Download
    4

Embed Size (px)

DESCRIPTION

Vis ma vie de SysAdmin Forum PHP 2013

Citation preview

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