Für MariaDB und MySQL gibt es eine Reihe von Parameter die an die Benutzung der Datenbank angepasst werden sollten. Gerade bei den Chache Größen hängt dies sehr stark von der Nutzung ab. Es gibt ein Skript was einem bei der Analyse der Einstellungen sehr gut hilft.
wget http://mysqltuner.pl/ -O mysqltuner.pl
perl mysqltuner.pl
Diese Ausgabe sollten man sich sichern, da viele der Informationen nach einem Neustart der Datenbank verloren gehen.
Konfigurationsdatei
Zuerst sollte eine zusätzliche Konfigurationsdatei erstellt werden die nicht von Plesk überschrieben wird und eine höhere Priorität hat.
nano /etc/mysql/mariadb.conf.d/99-performance.cnf
[mysqld]
# Hier werden die Servereinstellungen vorgenommen
Performance Schema
MariaDB kann zur Laufzeit einige Performancedaten sammeln dies ist zur weiteren Analyse vorteilhaft.
[--] Performance schema is disabled.
performance_schema = ON
Caches
Für die Auswertung der Daten muss die Datenbank einige Zeit in ihrem Typischen Lastszenario laufen. Ansonsten sind die Daten nicht aussagekräftig.
[--] Physical Memory : 3.8G
[--] Max MySQL memory : 3.1G
[OK] Highest usage of available connections: 12% (19/151)
[!!] Temporary tables created on disk: 49% (6M on disk / 13M total)
max_heap_table_size (> 16M)
join_buffer_size (> 256.0K, or always use indexes with JOINs)
[!!] table_definition_cache(400) is lower than number of tables(3092)
table_open_cache (> 2000)
[!!] InnoDB buffer pool <= 1G and Innodb_buffer_pool_instances(!=1).
[!!] InnoDB buffer pool / data size: 128.0M/252.8M
[!!] Ratio InnoDB log file size / InnoDB Buffer pool size (75 %): 48.0M * 2/128.0M
should be equal to 25%
Zuerst muss der verfügbare Speicher mit dem maximal von der Datenbank verwendeten Speicher in Relation setzen. Hier würde die Datenbank zu viel Speicher verwenden, da noch andere Dienste auf dem Server laufen. Zuerst sollte die Anzahl der Verbindungen gesenkt werden, da nicht so viele benötigt werden. Den jede Verbindung verbraucht RAM. Es sollten aber natürlich nicht zu wenige Verbindungen eingestellt werden, da es dann zu Anwendungsfehlern kommen kann.
max_connections = 50
Die weiteren Parameter immer wieder erhöhen bis diese nicht mehr zur Erhöhung vorgeschlagen werden oder das Speicherlimit (RAM) erreicht ist.
tmp_table_size = 64M
max_heap_table_size = 64M
join_buffer_size = 8M
table_definition_cache = 3500
table_open_cache = 3500
innodb_buffer_pool_instances = 1
innodb_buffer_pool_size = 256M
innodb_log_file_size = 32M
DNS Namensauflösung ausschalten
Per default wird die IP Adresse jedes clients rückwärts zum Hostnamen aufgelöst. Die braucht Zeit und kann bei einem Fehler im DNS Server für erhebliche Verzögerung der SQL Abfragen führen.
[!!] name resolution is active : a reverse name resolution is made for each new connection and can reduce performance
skip-name-resolve = 1
Linux: Ubuntu 18.04.4
Plesk: Obsidian 18.0.27
Links
http://durchgeblickt.de/faq/index.php?action=artikel&cat=8&id=38&artlang=de