Presentiamoci

Fabrizio Balliano
@fballiano
Sviluppatore PHP dal 1999
In Magento dal 2007
Admin di magento.com/it
Full time Magento dal 2011
CTO di Sevenlike S.r.l.


Il progetto


  • 200.000 prodotti
  • 100 attributi prodotto
  • 120.000 clienti
  • 150.000 ordini
  • 10.000 visitatori unici giornalieri

Il progetto


  • 61 mercati
  • 61 website
  • 76 store view

Il PROGETTO


  • Spazio disco occupato: 112GB
  • Dimensione DB: 12GB

Il progetto

Uno sguardo al DB

Nome tabella Numero record
cataloginventory_stock_status 15.000.000
catalog_product_entity_decimal 13.500.000
catalog_product_entity_int 12.000.000
catalog_product_website 9.500.000

INFRASTRUTTURA



server fisici

vs

cloud

STACK SOFTWARE


Magento Enterprise 1.13

Ubuntu 12.04 LTS
Apache 2.2
PHP 5.3
MySQL 5.5

APC
Varnish 3.0
Redis 2.8

DIAGRAMMA DI RETE



macchine di frontend



Apache + mod_php

vs

nginx + php-fpm

Apache + mod_php


  • facilità di configurazione
  • htaccess
  • performance
  • consumo ram
  • thread safety

nginx + php-fpm


  • performance
  • consumo ram
  • thread safety
  • difficoltà di configurazione
  • timeout multipli
  • htaccess

ANd the winner is



Apache + mod_php

Livelli di cache



  • Opcode PHP
  • Cache Magento
  • Full page cache (FPC)

OPCODE CACHE

APC


apc.num_files_hint 40000
apc.shm_size 256M

CACHE MAGENTO



1 level

vs

2 levels

CACHE MAGENTO



Istanza dedicata di Redis

FulL page cache



  • Varnish
  • Nexcess Turpentine
  • Direttamente sul load balancer
  • TTL

GEOGRAFIA?

Pruning FPC geografico


Varnish & store url univoche

  • http://example.com/en/product.html
  • http://us-en.example.com/product.html
  • http://example.com/us/en/product.html


Differenze SEO?

Asset statici



  • Istanza barebone di apache
  • Cache gestita da Varnish

Ottimizzazioni



Compilatore Magento?

OTTIMIZZAZIONI

php.ini


realpath_cache
memory_limit

OTTIMIZZAZIONI

my.cnf

innodb_file_per_table
innodb_buffer_pool_size
query_cache_limit
query_cache_size
key_buffer

OTTIMIZZAZIONI

my.cnf


mysqltuner.pl

SESSIONI


Oltre 10.000 sessioni generate giornalmente

SESSIONI: PROBLEMI


File di sessioni salvati in un'unica cartella

Se la docroot è sotto NFS anche "var" è sotto NFS

Problemi di sincronizzazione "var/session" via NFS

SESSIONI: SOLUZIONE


Cm_RedisSession

Incluso in EE 1.13

FLOSS su github

Istanza dedicata di Redis

ALtro


Flat catalog category

Flat catalog product

Log su database

Log su "var/log"

limiti riscontrati


Reindex incrementale



  • Presente da Magento EE 1.13
  • Dimensione tabelle di changelog
  • Invalida le cache

  • Reindex totale Magento EE 1.13
    50% più veloce di Magento EE 1.12

Catalog rules

Import prodotti

Spazi di miglioramento


APC stat
on => off

PHP
5.3 => 5.4 => 5.5

APC => Opcache

MySQL
5.5 => 5.6

Scalabilità


Separazione servizi
Cache server dedicati
Rimozione NFS per la docroot
Storage dedicato solo per /media
Macchina dedicata per il backend Magento
MySQL slave

Monitoring



New Relic

Grazie!!!



http://fabrizioballiano.it

http://twitter.com/fballiano

http://linkedin.com/in/fabrizioballiano

http://www.sevenlike.com
Made with Slides.com