MySQL unter Ubuntu mit jemalloc betreiben
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
- ↑ MySQL is much slower in 5.7 vs 5.6 (bugs.mysql.com)
- ↑ Memory usage gradually increases and brings server to halt (bugs.mysql.com)
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.
|