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.