Performance barcampfinal

Post on 28-Dec-2014

2679 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

DESCRIPTION

 

Transcript

Sécurité et performanceSecurity and performance

SOLDES: N’embouteillez pas vos clients dans vos

rayons !

Sébastien LucasDirecteur associé Oxalide

slu@oxalide.com

Qui sommes nous ?About us ?

Rémi GaillardDéveloppeur PrestaShop

remi.gaillard@prestashop.com

• Infogérance, design et conception d’infrastructure,Infrastructure Design, Hosting & Facilities management,

• Surveillance 24x7 proactive,24x7 monitoring,

• Optimisation et troubleshooting,Fine tuning and troubleshooting,

• Hébergeur de Prestashop et de ses clients depuis 2007Host of Prestashop & customers since 2007

Oxalide team

• Un catalogue de plusieurs dizaines de milliers de produitsTens of thousands of products

• Plusieurs milliers de ventes par jours Several thousands of sales per day

• Une multiplication du trafic par 10 pendant les soldesTraffic increase by 10 during sales

Etude de cas : BebeoUse case : Bebeo

Z-enfant, Tartine et Chocolat , Melijoe3 boutiques

stores

• Utilisez la dernière version stable de PrestashopUse the last stable version of PrestaShop

• Supprimez ou désactivez les modules et fonctionnalités non utiliséesRemove or disable unused modules and features

• Désactivez le module de statistiques et utilisez un outil externe (Google Analytics, Weborama, ...)Disable the statistics module and use external tool (Google Analytics, Weborama, ...)

Configurez au mieux PrestaShopPrestaShop Configuration

Statique : qui n’est pas dynamiqueStatic : which is not dynamic

Rendez statiques un maximum d’éléments :

1. Page d’accueilLanding page

2. Page d’erreur 404404 error

3. Liste des catégoriesCategory listing

4. …

La clé de la performance : pensez statique!Improve performance: think static!

• Videz les tables de statistiquesTruncate statistics tables

• Supprimez les paniers inutilisésRemove unused carts

• Supprimez les bons de réduction expirésRemove expired discounts

Contenu de la base de donnéesDatabase content

Un design d’architecture scalable & fiableDesigned for scalability & reliability

Séparation des couches applicatives (Cache, PHP et BDD),Separate layers : caching, PHP & Databases

Penser scalabilitéThink scalable

Répartition de chargeImplement load balancing for multiple front-ends

Optimisez le contenu statiqueThink static

Apache + PHP

Pshop

Lig

htt

pd

Apache + PHP

Pshop

SquidVarnish

HTML

HTML

HTML

Connected

users

1

2 5

6

7 8 9

3

3 4

MySQLd

Lig

htt

pd

Lig

htt

pd

/img/css/js

• Utilisez des serveurs de caches,Use reverse proxies with a tuned policy,

• Séparez HTML, JS et CSS sur des noms de domaines différents,Separate HTML, Jscript & CSS on dedicated FQDN,

• Optimisez la délivrance du contenu statique avec un Webserver optimisé (Lighttpd ou nginx),Dedicate a specific and fine tuned web server to deliver static contents,

• Maximisez l’utilisation du cache du navigateurFeel confortable using browser caching

• Configuration optimisée d’apache et de PHP (faible empreinte mémoire, adapté pour une trafic élevé, …)Finetuned apache and php configuration (low memory fingerprint, reliable behaviour on high amount of trafic)

• Utilisez un système de cache d’opcode PHP (APC ou eAccelerator)Use an opcode caching system for PHP (APC or eAccelerator)

• Implémentez un politique de Rewriting d’url statiqueUse a static policy for the Url Rewriting rules

• Optimisez MySQL pour pour InnoDBFinetune MySQL for InnoDB

Configuration serveur orientée performanceFinetune system & services

Charge : Augmentez le nombre de frontauxWhen needed : Use your scalability

Load Balance

r

Apache + PHP

Pshop

front-01

1

2 5

6

3

4

MySQLd

DB-Master

Apache + PHP

Pshop

front-02

Apache + PHP

Pshop

front-03

Apache + PHP

Pshop

front-0X

MySQLd

DB-Slave

• Augmentez le nombre de frontaux pour augmenter la capacité de traitementIncrease the number of your front-ends

• Utilisez des frontaux virtuels pour les moments clés (Soldes, Fêtes, etc.)Use virtual « on demand » servers for your key moments (sales, …)

• Attention au goulot d’étranglement sur le Master BDDRemain alert as to the behavior of your database

Utiliser un serveur esclaveUse slave server

Load Balance

r

Apache + PHP

Pshop

front-01

1

2 5

6

3 4

MySQLd

Apache + PHP

Pshop

front-02

Apache + PHP

Pshop

front-03

Apache + PHP

Pshop

front-0X

MySQLd

Writein DB

Instant read

Readin DB

Séparation des requêtes:Split queries:

- Ecriture (insert, update),Writing

- Lecture instantanée (panier,commandes…),Instant reading (cart, orders…)

- Lecture (Catalogue, produits..)

Reading(Catalog, products…)

Classe Db :

private static $_servers = array(

array('server' => _DB_SERVER_, 'user' => _DB_USER_,

'password' => _DB_PASSWD_, 'database' => _DB_NAME_),

array('server' => '192.168.0.3',

'user' => 'myuser', 'password' => 'mypassword', 'database' => 'mydatabase'));

Charge : Scalabilité des slavesLoad : Scalability of slaves

Classe Db

Ou

Utiliser un load balancer

Use a transparent load balancer

Load Balance

r

Apache + PHP

Pshop

front-01

1

2 5

6

3 4

MySQLd

DB-Master

Apache + PHP

Pshop

front-02

Apache + PHP

Pshop

front-03

Apache + PHP

Pshop

front-0X

MySQLd

DB-Slave

Writein DB

Instant read

Readin DB

MySQLd

DB-Slave

MySQLd

DB-Slave

Load Balancer

Screencast

Des questions?Questions ?

top related