Ich bin dabei, einen Datenbankserver (MySQL) im OpenVZ-Container einzurichten, und habe mich gefragt, wie viele CPUs ich ihm zuweisen soll. Ich entschied mich für ein Benchmarking. Ich habe zwei OS / MySQL-Distributionen verglichen und getestet, wie sie mit 1, 2, 3 und 4 CPUs funktionieren.
Die erste Softwarekonfiguration war:
- CentOS Release 6.5 (Final)
- mysql Ver 14.14 Distrib 5.1.71 für redhat-linux-gnu (x86_64) mit readline 5.1
Der Zweite:
- Debian GNU / Linux 7 \ n \ l
- mysql Ver 14.14 Distrib 5.5.31 für debian-linux-gnu (x86_64) mit readline 6.2
Beide liefen auf demselben Kernel - 2.6.32-openvz-042stab083.2-amd64 # 1 SMP Fr 8. November 17:59:25 MSK 2013 x86_64 GNU / Linux.
Die gesamte Software wurde aus Paketen installiert und ohne benutzerdefinierte Konfigurationsanpassungen sofort verwendet.
Hardware: 6 GB RAM, 1-4 CPUs 3,5 GHz.
Für das Benchmarking habe ich sysbench mit dem folgenden Szenario verwendet:
sysbench --test=oltp --oltp-table-size=1000000 --mysql-db=test --mysql-user=root --db-driver=mysql --mysql-password=d prepare
sysbench --test=oltp --oltp-table-size=1000000 --mysql-db=test --mysql-user=root --db-driver=mysql --mysql-password=d --max-time=60 --oltp-read-only=on --max-requests=0 --num-threads=8 run
In beiden Fällen war die Engine der Tabelle InnoDB.
Die Ausgabe, die ich betrachtete, war die Anzahl der Transaktionen pro Sekunde. Die Ergebnisse waren ziemlich stabil - der Fehler betrug weniger als 1%.
Die Ergebnisse waren gut und wurden für CentOS / MySQL5.1 erwartet, aber für Debian / MySQL5.5 sehr seltsam:
Wie Sie vielleicht sehen, nutzt MySQL5.5 unter Debian mehrere CPUs nicht richtig aus. Während die Leistung mit 2 CPUs höher ist als mit 1, ist sie deutlich niedriger als unter CentOS / MySQL5.1. Außerdem geht es runter, wenn wir mehr CPUs über 2 hinzufügen, was wirklich komisch ist.
Kann mir bitte jemand erklären, was dort los ist? Warum um alles in der Welt würde MySQL schlechter abschneiden, wenn wir CPUs hinzufügen?