Boerny's Blog Sparkles in my mind
Sparkles in my mind
Server

MariaDB auf Synology DiskStation beschleunigen

Contents

Hintergrund

Die Datenbank für WordPress ist ein essentieller Bestandteil. Betrachtet man einen Seitenaufbau mit Query Monitor stellt man fest, dass einige Hundert Zugriffe auf die Datenbank pro Seitenaufbau durchgeführt werden können. Daher bringen schon wenige Millisekunden Performancegewinn bei Einzelzugriffen in der Summe einen deutlichen Effekt.

MariaDB Performance beschleunigen

Über die Performance der MariaDB einer Synology DiskStation wird im Web viel geschrieben — und nicht immer Positives. Dabei ist gerade hier die Optimierung sehr einfach und sehr effizient!

Synology selbst beschreibt, dass man den MySQL Cousin nachhaltig konfigurieren kann. Das ist nicht weiter schwierig, erfordert aber die Nutzung der Kommandozeile.

  1. SSH für die DiskStation aktivieren
  2. als Administrator anmelden
    slogin -l <admin-kennung> <diskstation-ip>
  3. die Datei my.cnf für persönliche Einstellungen anlegen und wie später beschrieben anpassen
    sudo vi /var/packages/MariaDB/etc/my.cnf
  4. Neustart der Datenbank
    sudo /usr/syno/bin/synopkg restart MariaDB
  5. Überprüfen der Werte
    mysqld --verbose --help

Anpassungen

Doch was wird nun konfiguriert? Die Speicherwerte werden vergrößert und vor allem wird der Query Cache aktiviert, der aus irgendwelchen Gründen bei Synology von Haus aus deaktiviert ist.

Bei meiner Synology (eine DS716+II in diesem Fall) wurde das RAM auf 8GB erweitert. Somit kann locker die my-large.cnf aus dem Verzeichnis /usr/share/mysql/ verwendet werden. Die InnoDB wird ebenfalls verwendet und die Werte aus my-innodb-heavy-4G.cnf dürfen auch herangezogen werden.

Es gibt verschiedene Empfehlungen je nach RAM Ausstattung und Anzahl der CPU-Kerne. Einige Artikel finden sich im Anhang.

Ich meinem Fall habe ich folgende Vorschläge aus der my-large.cnf kombiniert mit den Vorschlägen aus my-innodb-heavy-4G.cnf in die custom /var/packages/MariaDB/etc/my.cnf übernommen. Wobei den größten Effekt die Aktivierung des Query-Cache gebracht hat!

[mysqld]
 # InnoDB
 innodb_buffer_pool_size = 2G
 innodb_additional_mem_pool_size = 16M

# Basics
 key_buffer_size = 512M
 max_allowed_packet = 1M
 table_open_cache = 256
 sort_buffer_size = 1M
 read_buffer_size = 1M
 read_rnd_buffer_size = 4M
 myisam_sort_buffer_size = 128M
 # Try number of CPU's*2 for thread_concurrency
 thread_concurrency = 8
 thread_cache_size = 8

# folgende beiden Werte sollten immer identisch sein
 tmp_table_size = 64M
 max_heap_table_size = 64M

# InnoDB
 innodb_buffer_pool_size = 2G
 innodb_additional_mem_pool_size = 16M

# Query Cache
 query_cache_size= 16M
 query_cache_type = 1

[myisamchk]
 key_buffer_size = 512M
 sort_buffer_size = 512M
 read_buffer = 8M
 write_buffer = 8M

 

Aus dem Test mit Query Monitor habe ich festgestellt, dass der query-cache nicht aktiv ist. Auch der Speicher für temporäre Tabellen könnte fehlen, was zu unvermeidlichen Festplattenzugriffen führt. Daher müssen mindestens folgen Zeilen ergänzt/überprüft werden (hier für ein kleiners 2GB RAM System):

[mysqld]
query_cache_size= 16M
query_cache_type = 1

tmp_table_size = 16M
max_heap_table_size = 16M

Resources

Fazit

Systemspeicher ist essentiell, daher muss genügen RAM vorhanden sein. Der Server darf keine SWAP Datei anlegen! Wenn man also weniger RAM hat, lieber sehr genau die Empfehlungen beachten!

Ist diese Grundvorraussetzung gegeben erweitert man die Puffergrößen auf ein vernünftiges Mass. Gute Richtwerte liefern die mitgelieferten Beispielskonfigurationsdateien.

Mit etwas Mut auf der Kommandozeile erreicht man so ein top performantes System.  Viel Spaß!

Was meinst du dazu?

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.

4 Gedanken zu “MariaDB auf Synology DiskStation beschleunigen”