Syndicate content

Performance

Hardening e ottimizzazione di server linux - Prima parte

armored_tux.jpg

Per hardening si intende il processo di verifica e messa in sicurezza di un host, mediante l’adozione di specifiche tecniche per ridurre i punti di attacco da parte di un hacker. Il numero di punti di attacco dipende dai servizi e dalle funzionalità messe a disposizione. Ad esempio, considerando un host con attivi i servizi di telnet, ftp ed ssh, ad esempio, tenendo conto che questi tre servizi per poter essere utilizzati da remoto devono aprire delle porte e mettersi in ascolto, se soffrono di qualche vulnerabilità possono essere dei potenziali punti critici. Ovviamente per rendere sicuro l’host occorrerebbe chiudere questi servizi se non necessari, rimuovendoli oppure disabilitandoli.

Utilizziamo i RAM Disk per velocizzare il sistema

harddisk_logo

Un RAM Disk (da non confondere con un SSD) è una porzione di RAM vista dal sistema operativo e dai programmi come un vero e proprio dispositivo di storage permanente, ma non lasciatevi ingannare da questa definizione, ovviamente, essendo comunque RAM, di permanente non ha nulla.

PHP-FPM: la rivoluzione di FastCGI

php-logo.png

PHP-FPM (FastCGI Process Manager) è un frontend FastCGI per PHP che migliora le funzionalità di php-cgi. E’ stato sviluppato da Andrei Nigmatulin nel 2004 come patch di PHP. Successivamente, circa a metà dell’anno scorso, Michael Shadle ha preso le redini del progetto rendendo PHP-FPM una serie di files indipendenti che non richiedono più il patching dei sorgenti di PHP. Ma la vera svolta la si è avuta il 4 Dicembre 2009, quando Antony Dovgal, uno sviluppatore di PHP, ha annunciato che PHP-FPM sarebbe entrato a far parte di un brach SVN ufficiale di PHP, e che quindi, quando saranno completate le fasi di testing, entrerà di fatto a far parte delle release ufficiali di PHP 5.3.x

Introduzione a Memcached: performance elevate grazie ad una caching completa

memcached-logo

Memcached è un sistema di caching distribuito in RAM per oggetti, è molto usato nell'ambito di applicazioni web dinamiche per alleviare il carico sul database, facendo in modo di servire alcuni dei dati ai quali l’accesso è più frequente, direttamente dalla memoria RAM.

Memcached è stato creato nel 2003 dalla compagnia che gestisce LiveJournal, la Danga Interactive, che si trovava a dover gestire più di 20 milioni di richieste dinamiche al giorno in crescita esponenziale. L’adozione di questo innovativo sistema di caching ha permesso di ridurre drasticamente il carico sui server database e migliorare sensibilmente le performance del sito.

Distribuzioni su più server di una soluzione web. Come procedere nella realizzazione

cluster

In questo articolo cerchiamo di capire cosa sono i sistemi distribuiti e quali sono i vantaggi di dividere su più macchine applicazioni e ambienti operativi. Si tratta di operazioni non semplici, che richiedono uno studio e una progettazione iniziale non banale. Vediamo infine una serie di esempi applicativi concreti per la creazione di strutture distribuite che operino nella rete. 

L'Arte della scalabilità, come rendere scalabile il nostro sistema - Prima parte

scalabilità

Il primo di quattro articoli dedicati alla scalabilità, cerchiamo di comprendere come un'applicazione deve essere progettata per essere definita scalabile e quali sono i criteri con cui si ragiona nel mondo dei grandi software, dove spesso la scalabilità è l'unico strumento possibile per consentirne l'utilizzo online a milioni di persone. 

Ottimizzare le queries del nostro database per un sistema più performante

database

Un articolo molto pratico per imparare piano piano a individuare i punti deboli delle nostre queries e migliorare l'estrazione quindi l'estrazione delle informazioni dai nostri database. 

Troppo spesso il collo di bottiglia delle applicazioni (web e non) è rappresentato dalle queries effettuate al database. Riuscire ad intervenire su queste queries, analizzandone e ottimizzandole, non può che far bene ai databases, che saranno poi in grado di servire un più alto numero di richieste, aumentando a loro volta le performances dell'applicazione finale.

Load-Balancing, introduzione e prime soluzioni

Load_Balancing_06.gif

Tra le tante tecniche che caratterizzano l'architettura di un sistema sito o servizio Internet c'è il Load Balancing.

Letteralmente "Load Balancing" significa bilanciare il carico di lavoro su più nodi dell'architettura.Viene spesso confuso come tecnica per ottenere High Availability, ma pur condividendone alcuni mezzi, ha dei fini totalmente diversi.

Uno degli errori più comuni per effettuare il Load Balancing è quello di prendere come riferimento il Load dei servers: scrivendo sulle console delle nostre macchine il comando "uptime" riceveremo come risposta un dato come questo

 23:24  up 453 days, 10:12, 6 users, load averages: 0,59 0,46 0,47

Ottimizziamo il nostro sito web per renderlo più reattivo

zipping.jpg

Anche quando il nostro back-end risulta essere lento a causa di query lente o codice lato server poco ottimizzato, possiamo intervenire in modo efficace sul front-end (il codice html/css/js e immagini) per rendere le nostre pagine più "snelle" e reattive.

Spesso infatti il problema non risiede nella nostra configurazione hardware ma nel codice che abbiamo deciso di utilizzare nei nostri siti e nelle nostre applicazioni. Vediamo in questo articoli alcuni pratici accorgimenti per rendere il nostro sito web più veloce nel caricamento e più facile da eseguire per il nostro webserver. 

Iniziamo ad analizzare diversi accorgimenti per mettere a dieta i nostri siti!

Introduzione alla scalabilità

scalabilità

Negli ultimi anni vicino al termine “Web 2.0” abbiamo sempre visto anche la parola “Scalabilità”, ma cosa significa veramente essere scalabili?