Plesk: MySQL-Datenbank-Performance erhöhen

Plesk: MySQL-Datenbank-Performance erhöhen

Um in Plesk die Performance der Datenbank zu erhöhen, gibt es eine relativ einfache Möglichkeit indem wir sozusagen einen weiteren Cache einrichten. Hierfür benötigen wir lediglich genug verfügbaren Arbeitsspeicher. In vielen Fällen sollte dies bereits dazu führen, dass langsame Datenbankabfragen nun endlich schneller ablaufen.

Um die Änderung vorzunehmen muss die entsprechende Konfigurationsdatei geöffnet und angepasst werden, das ist mit vi oder nano möglich:

vi /etc/mysql/my.cnf

Anschließend müssen unter [mysqld] die folgenden Werte hinzugefügt oder angepasst werden:

innodb_buffer_pool_size=1024M
query_cache_size=64M
innodb_thread_concurrency      = 0
innodb_read_io_threads          = 64
innodb_write_io_threads         = 64

Ggf. könnte sich auch diese Einstellung lohnen:

skip-name-resolve=1

Danach muss der Datenbankserver neu gestartet werden:

systemctl restart mysqld

Sollte auch dies zu keiner Verbesserung führen, können alle vorhandenen Datenbank zusätzlich optimiert werden, dies ist mit dem folgenden Befehl möglich:

MYSQL_PWD=`cat /etc/psa/.psa.shadow` mysqlcheck -uadmin --optimize --all-databases

Falls der Datenbankserver bereits einige Tage lang läuft können auch direkte empfehlen mit einem Tool abgerufen werden. Hierzu installieren wir

apt-get install mysqltuner

das Tool MySQL Tuner und führen es anschließend aus:

mysqltuner

Auch können noch diese Verbesserungen angewand werden unter /etc/security/limits.conf

*               soft    nofile          1048576
*               hard    nofile          1048576
mysql soft nofile 1048576
mysql hard nofile 1048576
mysqld soft nofile 1048576
mysqld hard nofile 1048576
* soft nofile 1048576
* hard nofile 1048576
mysql soft core unlimited
mysql hard core unlimited
mysqld soft core unlimited
mysqld hard core unlimited
mysql soft priority 10
mysqld soft priority 10
mysql hard priority 10
mysqld hard priority 10

/etc/systemd/system.conf und /etc/systemd/user.conf

DefaultLimitNOFILE=1048576

In Eurer MariaDB-Konfigurationsdatei sollte im Übrigen auch

[Service]
LimitNOFILE=1048576

eingetragen sein.

nano /etc/pam.d/common-session
session required pam_limits.so

Nach einem Neustart kann der Erfolg mit folgendem Befehl kontrolliert werden:

ulimit -Sn
ulimit -Hn
ulimit -SHn 1048576

Unter /etc/sysctl.conf kann

vm.swappiness=1
#net.ipv4.tcp_syncookies=1
#net.ipv4.conf.all.promote_secondaries=1
#net.ipv6.conf.all.autoconf=0
#net.ipv6.conf.all.accept_ra=0
kernel.pid_max=1048576
fs.file-max=1048576
fs.inotify.max_user_instances=1048576
fs.inotify.max_user_watches=1048576
fs.inotify.max_queued_events=1048576

hinzugefügt werden – im Betrieb kann die Änderung temporär mit

sysctl -w vm.swappiness=1

durchgeführt werden.

Unter /etc/default/grub sollte

GRUB_CMDLINE_LINUX="elevator=noop"

eingestellt sein.

Um die Limits eines einzelnen Prozesses zu prüfen kann

cat /proc/$pid/limits

verwendet werden.

Ich habe letztendlich etwa 100 Stunden lang meinen Datenbankserver unter Plesk optimiert und verfüge daher über das Know-How den Plesk-Datenbankserver dementsprechend zu optimieren. Ich habe hier besonders auf eine gute WordPress-Performance geachtet (möglichst viele SELECTs und INSERTs pro Sekunde).

Bitte habt Verständnis für mich: Was genau getan werden muss und wie die Konfiguration angepasst werden muss, kann ich hier leider aufgrund des Umfangs nicht erklären.

Sollte Interesse an einer Optimierung zu günstigen Stundensätzen bestehen zögert nicht mich zu kontaktieren.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert