MySQL unter Ubuntu mit jemalloc betreiben

Aus Thomas-Krenn-Wiki
Zur Navigation springen Zur Suche springen
Hinweis: Bitte beachten Sie, dass dieser Artikel / diese Kategorie sich entweder auf ältere Software/Hardware Komponenten bezieht oder aus sonstigen Gründen nicht mehr gewartet wird.
Diese Seite wird nicht mehr aktualisiert und ist rein zu Referenzzwecken noch hier im Archiv abrufbar.

MySQL in der Version 5.7 verwendet unter Ubuntu standardmäßig GNU malloc zum Allozieren von Speicher. Einige Bugs zeigen, dass dabei Speicher nicht immer effizient frei gegeben wird. Abhilfe kann in solchen Fällen jemalloc schaffen, das die Speichernutzung und unter Umständen auch die Performance optimiert. Dieser Artikel zeigt, wie unter Ubuntu 16.04 mit systemd jemalloc als Bibliothek für MySQL konfiguriert wird.[1][2]

MySQL, systemd und jemalloc

Unter InitV wurden zur Mitgabe von Umgebungsvariablen Konfigurationsdaten in /etc/default verwendet. Mit der Umstellung auf systemd greifen diese Einstellungen nicht mehr, stattdessen müssen sogenannte override Dateien eingerichtet werden, die Parameter an den MySQL-Dienst weiter geben.

Im ersten Schritt wird für den MySQL-Dienst ein systemd-Verzeichnis angelegt:

$ sudo mkdir /etc/systemd/system/mysql.service.d

In diesem Verzeichnis wird eine Konfiguration erstellt, die MySQL mitteilt, dass jemalloc zu verwenden ist:

$ sudo vi /etc/systemd/system/mysql.service.d/override.conf
[Service]
LimitNOFILE=8402
Environment="TZ=Europe/Vienna"
Environment="LD_PRELOAD=/usr/lib/x86_64-linux-gnu/libjemalloc.so.1"

Per systemctl daemon-reload wird veranlasst, dass systemd diese Datei neu einliest. Abschließend wird der MySQL-Service neu gestartet:

$ sudo systemctl restart mysql.service

Prüfen, ob jemalloc verwendet wird

Nach dem Neustart des MySQL-Dienstes wird per PROC-Verzeichnis geprüft, ob die jemalloc-Einstellung auch korrekt übernommen wurde:

$ sudo cat /proc/`pidof mysqld`/smaps | grep -i libje
7f80f229e000-7f80f22d1000 r-xp 00000000 08:01 1325647                    /usr/lib/x86_64-linux-gnu/libjemalloc.so.1
7f80f22d1000-7f80f24d1000 ---p 00033000 08:01 1325647                    /usr/lib/x86_64-linux-gnu/libjemalloc.so.1
7f80f24d1000-7f80f24d3000 r--p 00033000 08:01 1325647                    /usr/lib/x86_64-linux-gnu/libjemalloc.so.1
7f80f24d3000-7f80f24d4000 rw-p 00035000 08:01 1325647                    /usr/lib/x86_64-linux-gnu/libjemalloc.so.1

Einzelnachweise

Foto Georg Schönberger.jpg

Autor: Georg Schönberger

Georg Schönberger, Abteilung DevOps bei der XORTEX eBusiness GmbH, absolvierte an der FH OÖ am Campus Hagenberg sein Studium zum Bachelor Computer- und Mediensicherheit, Studium Master Sichere Informationssysteme. Seit 2015 ist Georg bei XORTEX beschäftigt und arbeitet sehr lösungsorientiert und hat keine Angst vor schwierigen Aufgaben. Zu seinen Hobbys zählt neben Linux auch Tennis, Klettern und Reisen.


Das könnte Sie auch interessieren

MySQL Performance Analyse mit mtop
MySQL Performance Tuning
MySQL Server und Query Profiling