J'ai configuré 3 clusters MariaDB en utilisant Galera pour mes services web qui sont équilibrés avec haproxy.
Les clusters fonctionnent très bien et se synchronisent entre eux mais lorsque le nombre de visiteurs sur mon site atteint plus de 3000 utilisateurs, le CPU de chaque nœud atteint des pics élevés.
top - 09:19:03 en marche depuis 17:36, 1 utilisateur, charge moyenne : 3.58, 3.82, 3.85
Tâches: 169 au total, 1 en cours d'exécution, 168 en veille, 0 arrêtées, 0 zombie
%Cpu(s) : 17.8 en utilisation, 3.5 en système, 0.0 en ni, 77.5 en idle, 0.3 en attente, 0.0 en sortie d'inactivité, 0.5 en saisie, 0.6 en vol
KiB Mem : 12300340 au total, 9661112 libres, 551008 utilisés, 2088220 tampon/cache
KiB Swap: 524284 au total, 524284 libres, 0 utilisés. 11554364 Mémoire disponible
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMANDE
4906 mysql 20 0 1370720 556596 153360 S 130.3 4.5 1052:00 mysqld
7037 root 20 0 144480 8572 7160 S 0.7 0.1 0:00.08 sshd
34 root 20 0 0 0 0 S 0.3 0.0 0:04.96 ksoftirqd/5
2102 root 0 -20 0 0 0 S 0.3 0.0 0:04.95 kworker/4:1H
3651 root 20 0 246492 20868 20156 S 0.3 0.2 0:04.33 rsyslogd
Tous les 3 nœuds ont la même spécification qui est :
Disque 192 Go
6 cœurs CPU
12 Go de RAM
Quelles modifications dois-je mettre en place maintenant pour gérer ces requêtes de manière plus efficace? Les requêtes de sélection accèdent à plusieurs milliards de lignes dans ma table de base de données demandée par plus de 2000 personnes en même temps. Chaque résultat de requête est unique.