Con il crescere della clientela e del traffico, sono incappato in alcuni down del servizio offerto dai miei server. Per iniziare ho deciso di ottimizzare i database, eliminare file inutili ed effettuare il controllo dell’hard disk. Poi ho impostato questi parametri su Apache:
<IfModule prefork.c> StartServers 2 MinSpareServers 3 MaxSpareServers 5 ServerLimit 16 MaxClients 13 MaxRequestsPerChild 1000 MaxMemFree 2 </IfModule>
Arrivare a questi parametri è stata una vera avventura, ognuno deve trovare quelli che sono adatti per lui, ma un buon punto di partenza è dato da questo script che suggerisce a quanto impostare MaxClients, script di cui non ricordo la provenienza:
#!/bin/bash echo "This is intended as a guideline only!" if [ -e /etc/debian_version ]; then APACHE="apache2" elif [ -e /etc/redhat-release ]; then APACHE="httpd" fi RSS=`ps -aylC $APACHE |grep "$APACHE" |awk '{print $8'} |sort -n |tail -n 1` RSS=`expr $RSS / 1024` echo "Stopping $APACHE to calculate free memory" /etc/init.d/$APACHE stop &> /dev/null MEM=`free -m |head -n 2 |tail -n 1 |awk '{free=($4); print free}'` echo "Starting $APACHE again" /etc/init.d/$APACHE start &> /dev/null echo "MaxClients should be around" `expr $MEM / $RSS`
Una volta trovato MaxClients, gli altri parametri gli ho aggiustati in maniera proporzionale, e per ora mi sto trovando bene, anche se sono stati abbassati in maniera drammatica.
Poi sono passato all’ottimizzazione dei vari WordPress serviti da Lighttpd. Anche qui ho trovato un’anima pia che ha effettuato un po’ di benchmark tra i vari plugin disponibili. W3 Total Cache è sicuramente il più completo, ma io appoggio in pieno la filosofia UNIX, per la quale gli elementi di un sistema devono fornire un’unica funzionalità ed interfacciarsi bene con gli altri. Detto questo, ho stabilito che la mia nuova squadra di plugin è formata da: