Auteur : Philippe Le Van - @plv@framapiaf.org
Date : 30 mars 2021
Introduction
Cette page donne quelques infos pratiques autour des problèmes de performances MariaDB
Analyse temps réel
Parfois on a besoin de voir en direct les requêtes en cours pour comprendre les problèmes de performances.
| # se connecter à la base en root
mysql -h <host> -uroot -p
# Voir la liste des requêtes en cours
SHOW FULL PROCESS_LIST;
# Voir la liste des éléments lockés
SHOW ENGINE INNODB STATUS\G
|
Parfois on a besoin de tuer des requêtes en cours
| -- tuer tous les process d'un utilisateur mysql
kill user <username>
-- tuer un process particulier
kill <id_du_process>
|
Exemple de tunings
Le tuning par défaut d'un mariadb est très limité pour un site de prod.
Voilà un exemple de tuning qu'on utilise sur une machine de 16Go de RAM.
Créer un fichier tuning-mariadb.cnf
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23 | [mysqld]
#
# * InnoDB
#
# devrait faire 80% de la mémoire de la machine
innodb_buffer_pool_size = 5G
# configuré pour 1Go / instance, comme 5Go de buffer_pull_size, ça fait
# 5 instances, recommandé par Maria
innodb_buffer_pool_instances = 5
# configuré pour 25% du innodb_buffer_pool_size
innodb_log_buffer_size = 1G
# flush log à chaque commit ?
innodb_flush_log_at_trx_commit = 0
# old value : 400. Cache des tables ouvertes pour ne pas avoir à rouvrir les
# tables trop souvent.
table_open_cache = 10000
# old value : 400. Cache des définitions des tables pour les recalculer plus vite
table_definition_cache = 20000
|
Si votre mariadb est lancé avec docker, vous pouvez insérer le fichier avec docker-compose
| mysql:
image: mariadb:10.2.14
environment:
MYSQL_ROOT_PASSWORD: root
MYSQL_DATABASE: dbname
MYSQL_USER: username
MYSQL_PASSWORD: userpass
volumes:
- tuning-mariadb.cnf:/etc/mysql/conf.d/tuning-mariadb.cnf
|