Dacă găzduiești un forum Flarum sau un site de buget pe un VPS de 1 GB RAM (cum sunt instanțele de start de la Hetzner sau Contabo) și te trezești din când în când cu baza de date picată, cel mai probabil ai rămas fără memorie. Mulți provideri livrează serverele fără memorie swap configurată, iar când apare un mic vârf de trafic, kernelul Linux intră în panică și omoară cel mai mare consumator: MariaDB.
Înainte să modifici configurații complexe în baza de date, verifică dacă asta e problema. Rulează comanda asta în terminal:
sudo dmesg -T | grep -i -E 'oom|kill'
Dacă vezi în loguri linii care conțin Out of memory: Kill process ... (mariadbd), ai confirmarea că procesul a fost ucis de OOM Killer.
Soluția rapidă, fără să plătești pentru un upgrade de resurse, este să creezi un fișier swap de 2 GB. Rulează comenzile astea pe rând:
sudo fallocate -l 2G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
Ca să te asiguri că swap-ul rămâne activ și după ce dai un restart la VPS, trebuie să îl adaugi în fișierul de configurare a montărilor. Rulează comanda următoare ca să adaugi linia necesară în /etc/fstab:
echo '/swapfile swap swap defaults 0 0' | sudo tee -a /etc/fstab
Un detaliu important: valoarea implicită pentru swappiness în Linux este adesea 60. Asta înseamnă că sistemul va trimite date în swap destul de repede, ceea ce poate încetini VPS-ul din cauza vitezei de scriere pe disk. Pentru o bază de date, e mai bine să setăm valoarea la 10 (să folosească swap-ul doar ca plasă de siguranță de ultimă instanță). Deschide /etc/sysctl.conf cu un editor text (de exemplu sudo nano /etc/sysctl.conf), adaugă la final linia vm.swappiness=10, salvează și aplică modificarea cu sudo sysctl -p.
Acum poți verifica dacă totul e în regulă rulând free -h. Ar trebui să vezi memoria swap de 2GB activă. MariaDB nu ar mai trebui să își ia crash de acum încolo, ci doar să folosească puțin din swap când are un vârf de conexiuni.
Voi ce valoare folosiți pentru swappiness pe VPS-urile voastre mici? O lăsați la 60 sau o scădeți ca să protejați I/O-ul disk-ului?