I principali portali di calcio italiani, scelgono DREAMSNET.IT per l’hosting e la consulenza sistemistica.

romanews-lazionews-bianconerinews

Come per molti altri siti ad alto traffico che abbiamo avuto modo di discutere negli scorsi articoli del nostro blog, questa volta abbiamo avuto modo di ricevere la piena fiducia da parte della società editrice MALU WEB s.r.l. di Roma che ci ha affidato il delicato compito di progettare l’infrastruttura di hosting per i loro portali calcistici ad alto traffico.

MALU WEB S.r.l. infatti è una società editrice che incentra il loro business su progetti editoriali ben targetizzati, curando portali web inerenti ad alcuni club calcistici italiani.

Romanews.eu, lazionews.eu, bianconerinews.eu, tra le testate giornalistiche in rilevanza, con picchi di traffico elevati in concomitanza di comunicati stampa dei vari club e degli impegni sportivi come derby e le varie gare calcistiche.

Gestire picchi di traffico elevati dovuti ad altrettanti picchi di visitatori, significa eseguire una progettazione ad-hoc sia per ciò che concerne la parte hardware sia per ciò che concerne la parte software.

Collocare i dati su datacenter europei come OVH in questo caso ha significato trovare una risposta estremamente intelligente alla solita domanda “Costi o prestazioni ?“.

In questo caso non abbiamo dovuto sacrificare nulla, dimensionando correttamente l’hardware alla base a prezzi estremamente competitivi su tutto il panorama europeo.

A livello software, abbiamo installato e configurato uno stack basato sulle più moderne tecnologie idonee a far girare correttamente blog WordPress.

A partire dallo strato DBMS, basato su Percona Server (Drop in replacement del più popolare MySQL Server di Oracle), PHP-FPM con Zend Opcache come process manager dell’interprete PHP, NGINX come Webserver, Memcached per gestire il caching di Worpress direttamente in RAM grazie al plugin W3 Total Cache, Varnish come cacher in reverse proxy, ed infine il tutto proxato con Incapsula (www.incapsula.com) al fine di gestire in modo trasparente un cacher e un sistema di distribuzione contenuti (ovvero CDN, Content Delivery Network).

Il tutto è stato implementato nei tempi e nelle modalità più idonee al fine di ridurre eventuali disservizi, ovvero in orario notturno tra giovedì notte e venerdì notte. La messa in produzione è stata monitorata in modo continuativo anche in tutta la giornata di sabato, al fine di visionare il carico del server e il corretto funzionamento di tutte le componenti.

Fieri come sempre di fare ciò che sappiamo fare bene e di fornire in questo caso oltre 14 milioni di visitatori al mese ai principali portali calcistici italiani, e di dimezzare i costi di infrastruttura all’azienda committente, che migrando dal vecchio fornitore, oltre ad aver migliorato sensibilmente la qualità di navigazione e la velocità di caricamento delle pagine Web, ha anche ridotto di 2 terzi i costi di noleggio e gestione dell’infrastruttura.

Qualora cerchiate soluzioni di hosting avanzato ed ottimizzazioni server avanzate, contattateci pure, sapremo trovare una soluzione ideale alle vostre esigenze, ai prezzi più interessanti sul mercato con prestazioni alla top di gamma.

Come migliorare le perfomance di un blog WordPress, grazie ad una consulenza sistemistica e ad uno stack Percona Server, PHP-FPM, NGINX, Redis, Memcache e Varnish.

In relazione all’articolo precedente sull’ottimizzazione performance di un server adibito all’hosting di un blog WordPress ad alto traffico come curiosone.tv (potete leggerlo qui), è stato deciso di fare un video dimostrativo al fine fare una comparazione prima / dopo, l’ottimizzazione, utilizzando i dati provenienti da htop, netstat, ed utilizzando il tool Apache Benchmark per effettuare uno stress testing su componenti software (plugin), alla base di un carico a livello di CPU ingestibile, dando un’esperienza di navigazione lenta e snervante, nonchè frequenti crash, e un backend letteralmente ingestibile se non in tempi biblici.

Il tutto è stato realizzato con software open source e “ricette sperimentate sul campo già altre volte”, tra i quali Percona Server, PHP-FPM, Zend Opcache, NGINX, REDIS, Memcache, Varnish, e l’ausilio di una CDN come Incapsula (Già più volte menzionata in questo blog).

La dimostrazione pratica di quanto un’assistenza sistemistica managed a livello server, possa fare la vera differenza in termini di qualità del servizio offerto, garantendo un notevole risparmio sui costi dell’infrastruttura, e garantendo un velocissimo ritorno dell’investimento iniziale, grazie alla qualità della navigazione che l’utente dispone e dei relativi modelli di business basati su interazioni con il visitatore come Advertising e campagne Pay per click di circuiti come Google Adsense.

Investire una cifra modesta per fare l’analisi della situazione iniziare ed effettuare un tuning ad-hoc è il primo passo da seguire, consultandosi con sistemisti Linux di comprovata esperienza.

Gestire un rapporto continuativo di supervisione e gestione server managed è il passo successivo per continuare a garantirsi i benefici ottenuti con una configurazione ad-hoc che deve comunque essere monitorata e supervisionata.

 

Anche curiosone.tv preferisce l’assistenza server managed Dreamsnet.it.

curiosone-tv

E’ con questo annuncio che Curiosone.tv avvisava i lettori di una problematica tecnica che rendeva inaccessibile il loro visitatissimo sito.

Ciò che sembrava dunque un’operazione di routine era qualcosa di molto più serio. Cpanel infatti (il pannello di controllo del server su cui gira Curiosone.tv), aveva crashato inspiegabilmente, e al riavvio del servizio non voleva saperne di ripartire.

Dunque, contatti online da un loro responsabile ci accordiamo sul da farsi per far ripartire i servizi e valutare delle ottimizzazioni.

Dopo un paio d’ore di test e reinstallazione del pannello, onde che brancolare nel buio è stata presa una scelta drastica : backup Web e DB, switch DNS, formattazione della macchina, reinstallazione sistema operativo (Linux CentOS 6.6), reinstallazione e configurazione servizi, ripristino backup.

Nel fare ciò è stato deciso di unire l’utile al più utile, ovvero reinstallare tutti i servizi sostituendoli con tecnologie più performanti, adatti a siti Web con picchi di visite di oltre 30 mila.

Dunque abbiamo utilizzato questa configurazione :

Rimpiazzo del Webserver Apache con Nginx
Rimpiazzo del vecchio MySQL 5.1 col nuovo Percona Server 5.6
Sostituzione del PHP 5.3 con PHP 5.6 con Zend OpCache abilitato e in modalità PHP-FPM
Sostituzione di plugin di caching di WordPress con W3 Total Cache
Caching DB a livello Memcache

Valutando con l’azienda se installare un Varnish per un caching aggressivo lavorando in reverse proxy con il webserver NGINX, per ora abbiamo ripristinato in una nottata una situazione molto critica, dando inopinabile valore aggiunto in termini di efficienza e performance.

Servire oltre 5000 visitatori al secondo ad un blog WordPress, tramite ottimizzazione server. Un esempio reale con Redis, NGINX, Varnish, Memcached, CDN.

Cosa succede quando un sito di Quiz diventa popolare ? Succede che bisogna gestire oltre 5000 visitatori al secondo per un totale di 50 mila connessioni al secondo. Come gestire soluzioni del genere ad alto traffico ? Alla base di tutto : WordPress con caching misto su memcached e Redis Server, PHP-FPM, Nginx con frontend Varnish dietro Cloudflare e Incapsula.

speed-up-wordpress-siteQuesto articolo ha lo scopo di illustrare le potenzialità di un tuning ad-hoc di un server Linux al fine di servire oltre 5000 visitatori al secondo ad un blog WordPress.

Tutto quello che leggerete di seguito è frutto di un caso reale a cui abbiamo lavorato per garantire l’erogazione del servizio di hosting in modo ottimale, nel frattempo che i programmatori riscrivessero l’applicazione in un modo più performante, ovvero senza l’utilizzo di WordPress che per l’utilizzo e la tipologia di sito è sicuramente una scelta criticabile e sostituibile con del puro HTML e Javascript.

Alla fine dell’articolo un video,  per chiunque preferisca vedere dal vivo alcuni passaggi importanti che sono solamente citati nell’articolo.

Introduzione alla vicenda

Il tutto nasce dalla richiesta di aiuto dello sviluppatore/sistemista di Quizdee.com noto sito di quiz online che mi riassume con un’immagine la situazione che avevano raggiunto : a 800 utenti al secondo il server si bloccava allocando tutta la potenza di calcolo delle 4 CPU istanziate su Amazon EC2.

server-load-carico-linuxSin da subito veder girare httpd , sinonimo di Apache fa capire che c’è molto da fare. Un successivo sguardo alla configurazione di MySQL, ci mostra eloquentemente che non è stato fatto nulla di specifico nell’ottimizzazione ma che tutto gira come fornito dall’installazione.

Guardando l’applicativo non si può far altro che criticare la scelta “veloce” (ma funzionale) di usare WordPress per lo sviluppo di un sito Web che avrebbe potuto essere sviluppato su DBMS di tipo NOSQL come MongoDB o Redis, o meglio ancora eliminando completamente il lato server side, escludendo dunque PHP e MySQL per un corretto funzionamento.

Ovviamente riscrivere tutto da 0, avrebbe comportato tempistiche non gestibili in qualche giorno, per cui nel frattempo il compito era “tamponare” con soluzioni di emergenza in grado di reggere almeno 10 volte tanto gli 800 utenti iniziali, limite in cui il server linux iniziava letteralmente a morire sotto i click dei visitatori.

Cambio Hoster e cambio Server Dedicato.

Date le grosse risorse in termini di CPU abbiamo deciso di passare da un 4 core di Amazon EC2 a un server dedicato da Hetzner in Germania.

La scelta è ricaduta su un server di fascia alta :

Intel® Xeon® E5-1650 v2
Hexacore Ivy Bridge-E
6 core fisici e 12 logici.
128 GB di RAM ECC
2 Hard Disk SATA SSD a stato solido.
Connettività 1 Gbit/s
al modico costo di 139€ al mese IVA Inclusa.

Installazione e configurazione sistema operativo Linux CentOS 6

Abbiamo scelto di installare la famosa distribuzione CentOS, già precedentemente installata anche su Amazon EC2, e di procedere alla configurazione base, eliminando tutti i servizi non necessari e installando tutti i software voluti per una successiva configurazione. Abbiamo installato dunque :

  • MySQL Server
    DBMS relazionale, necessario al funzionamento di WordPress
  • NGINX
    nginx [engine x] e’ un server HTTP e reverse proxy, nonche’ un server mail proxy, scritto da Igor Sysoev. Per molto tempo e’ stato usato principalmente per alcuni siti russi ad alto carico, ad esempio YandexMail.RuVKontakte e Rambler; in base ai dati di Netcraft, nell’ottobre 2013 nginx e’ il server HTTP o reverse proxy del 15.08% dei siti a maggiore carico.
  • PHP-FPM in versione 5.5
    è un frontend FastCGI per PHP che migliora le funzionalità di php-cgi.
  • Zend OpCache
    l’integrazione di Zend Optimizer+quale opcode cache; si tratta di un componente concepito per incrementare il livello di prestazioni nell’esecuzione delle applicazioni PHP senza alterarne i comportamenti.
  • Memcached
    è un sistema cache in RAM a oggetti distribuiti per migliorare la velocità .
    Memcached diminuisce il tempo di caricamento delle pagine dei siti web dinamici basati su database mettendo in cache i dati richiesti e riducendo il carico sui server database
  • Redis
    un key-value store open source residente in memoria con persistenza facoltativa.
  • Varnish
    un acceleratore HTTP potente e open source, che è in grado di servire contenuti in cache in modo veloce

Per ogni software abbiamo proceduto ad effettuare un tuning ed una configurazione affichè tutto si integrasse perfettamente.

Obiettivi da raggiungere prefissati nella configurazione

Tra gli obiettivi da raggiungere che ci siamo prefissati, quello di minimizzare lo spawning di processi php-fpm e query MySQL. Sono loro a divorare i 12 processori logici, saturando tutte le risorse e accodando sempre più richieste fino ad una situazione di stallo.

Per far questo (non potendo nell’immediato riscrivere il tutto in un semplice HTML statico), dobbiamo cachare nel modo più corretto e veloce possibile quanto più si riesca a cachare in modo di restituire l’output html dalla RAM, piuttosto che generarne nuovamente da PHP e MySQL.

Oltretutto bisogna anche limitare il traffico dati delle immagini, che seppur poche in termini di quantità e di pesantezza riescono a generare circa 250 gigabyte al giorno di traffico.

Per i problemi di traffico abbiamo deciso di adottare 2 CDN (Content delivery network) che tramite una configurazione di reverse proxy possano cachare le nostre immagini sui loro server e fornirle al nostro posto risparmiandoci prezioso traffico dati.

La prima CloudFlare, si occupa di cachare i contenuti del sito www.quizdee.com, la seconda Incapsula, si occupa di cachare le immagini del dominio di terzo livello creato appositamente img.quizdee.com

La struttura finale ideale è simile alla seguente:

img_imperva_cloud_waf_diagram

 Cenni sulla configurazione dei vari componenti

In breve abbiamo configurato tutti i vari software precedentemente elencati per fornire un caching rapido e veloce dei contenuti. MySQL è stato impostato per cachare qualora richiesto moltissime query fino ad oltre 32 gigabyte di RAM.Valore sicuramente ben più elevato delle centinaia di megabyte in effettivo uso.

WordPress è stato configurato con il plugin W3 Total Cache (W3TC) al fine di cachare contenuti statici direttamente su memcached. Inoltre è stato abbinato anche a Redis, al fine di cachare post direttamente in RAM e diminuire i tempi di risposta fino a 100 volte tanto.

PHP-FPM è stato settato e configurato per gestire un massimo di 1000 connessioni contemporanee, numero in cui al di sopra saremmo andati incontro a sensibili problemi di carico.

NGINX è stato configurato ad hoc ottimizzandone alcuni parametri sui timeout e sul numero di thread gestibili.

Varnish è stato configurato come reverse Proxy su NGINX che a sua volta gestisce due virtual host www.quizdee.com e img.quizdee.com

 

Installazione e configurazione delle due CDN. Cloudflare ed Incapsula

Creati account gratuiti sulle due CDN, abbiamo impostato i DNS del dominio come consigliato dal pannello di controllo delle due CDN.

Cloudflare fornisce i contenuti di www.quizdee.com e Incapsula quelle di img.quizdee.com. Dopo alcuni minuti le richieste diminuivano sensibilmente e anche il load.

Questo è stato un passaggio se non vitale, comunque significativo considerando che in 4 giorni ci ha risparmiato di solo traffico immagini ben 740 GB, con oltre 27 milioni di hits, con picchi di banda di oltre 150 Mbit/s.

banda-risparmiata-incapsula
Risultati Ottenuti

I Risultati ottenuti sono stati quelli di riuscire ad erogare un servizio ad oltre 5000 utenti al secondo, avendo toccato anche dei picchi di oltre 8000, con il vantaggio di  dare un’esperienza di usabilità reattiva e veloce, dunque maggiori risultati in termini di soddisfazione e relativi introiti.
Il costo è rimasto molto contenuto senza scalare su più macchine con load balancer che avrebbe significato una spesa fino a 10 volte tanto, tra noleggio dell’hardware e relativa configurazione più gestione managed dei server Linux.

Le statistiche di Google Analytics parlano chiaro : quasi 5000 utenti con appena 10 di carico sulla CPU.

5000
Conclusioni

La potenza è nulla senza controllo. Ancora una volta, la dimostrazione pratica che buone capacità sistemistiche possano dare risultati eccellenti con costi veramente ridotti. Se hai un sito Web con molto traffico e vuoi ottimizzare le risorse con una configurazione su misura in base alle tue esigenze, contattaci pure.

Open Source sul Web. Un’infografica sulla diffusione del software open source in ambito Web.

Di seguito un’interessante infografica che dimostra con una statistica inopinabile la diffusione e la penetrazione di software open source a livello Web.
Tra essi troviamo webserver, CMS, Sistemi Operativi come Linux, Linguaggi Server Side come PHP. Io personalmente avrei aggiunto anche altri componenti come server DNS (bind ad esempio), Mailserver come Postfix, EXIM, Qmail, o altri software open source che pur non avendo referenze “dirette” con l’ambito Web, hanno comunque una forte affinità affinchè un sito web possa disporre di tutte le funzionalità classiche come la mail ad esempio.

Si coglie l’occasione per ricordare che forniamo consulenza sistemistica su software open source e ottimizzazioni server e siti web.

Statistiche open source siti web