A tutte le VPS viene assegnato un certo quantitativo di memoria RAM e di memoria SWAP (memoria virtuale). La memoria SWAP risiede su disco ed è un modo per simulare un quantitativo di memoria centrale maggiore rispetto a quella fisicamente presente.
Quando una VPS termina la memoria fisica, inizia allora ad utilizzare la memoria swap su disco. Se la memoria fisica non è sufficiente a contenere i dati dei processi in esecuzione allora il sistema è costretto ad utilizzare lo SWAP, con il risultato che il sistema deve continuamente leggere e scrivere dal disco, determinando un pesante decadimento delle prestazioni, noto anche come "SWAP Thrashing"
Per individuare e risolvere questo tipo di situazioni, riscontrabili soprattutto in sistema con poca RAM, è possibile utilizzare i metodi indicati in questa guida.
Determinare la memoria libera e l'utilizzo dello SWAP
E' possibile utilizzare il seguente comando per determinare l'utilizzo della memoria sulla tua VPS FlareVM:
free -m
E' possibile utilizzare il seguente comando per determinare quali sono i processi che utilizzano più memoria (l'output è ordinato in base alla quatità di memoria utilizzata dai processi):
ps -eo pmem,pcpu,rss,vsize,args | sort -k 1 -r | less
Questo comando permette di monitorare il livello di attività I/O sui dischi della VPS: (per i sistemi Debian o Ubuntu è necessario prima installare il pacchetto sysstat):
iostat -d -x 2 5
Solitamente quando una VPS termina la memoria (OOMing - running out of memory), i maggiori sospettati sono Apache, MySQL, o SpamAssassin.
MySQL in sistemi con poca memoria
Apri il file di configurazione di MySQL (solitamente presente in /etc/mysql/my.cnf) e modificare i vari settaggi come di seguito:
key_buffer = 16K
max_allowed_packet = 1M
thread_stack = 64K
table_cache = 4
sort_buffer = 64K
net_buffer_length = 2K
Se l'utilizzo di InnoDB non è necessario allora è possibile disabilitarlo aggiungendo la seguente linea:
skip-innodb
Apache 2 in sistemi con poca memoria
Bisogna innanzitutto individuare il tipo di MPM in uso per determinare la sezione corretta da modificare nel file di configurazione.
Nei sistemi basati su Debian:
apache2 -V | grep 'MPM'
Sui sistemi Fedora/CentOS:
httpd -V | grep 'MPM'
Nel file di configurazione di Apache 2 (in /etc/apache2/apache2.conf in Debian e Ubuntu, e in /etc/httpd/httpd.conf in CentOS e sistemi simili), cambia i le variabili di configurazione come di seguito:
StartServers 1
MinSpareServers 3
MaxSpareServers 6
ServerLimit 24
MaxClients 24
MaxRequestsPerChild 3000
Sarà ora necessario monitorare Apache 2 ed aggiustare questi valori se necessario, ad esempio se il web server non riesce a servire tutte le richieste.
Eliminare Amavisd
Amavisd è un programma molto vorace di memoria. E' possibile disabilitarlo in questo modo:
nano /etc/postfix/main.cf
Cerchiamo e commentiamo la seguente riga:
content_filter = amavis:[127.0.0.1]:10024
Riavviamo il server email:
/etc/init.d/postfix restart
Ora fermiamo spamassassin:
/etc/init.d/spamassassin stop
/etc/init.d/amavisd stop
e disabilitiamo il servizio all'avvio del sistema:
update-rc.d -f spamassassin remove