Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Leistungsprobleme beim Ausführen einer Datenbank in einem Docker-Container

Docker selbst verursacht nur sehr wenig Overhead, es isoliert den Prozess lediglich von anderen Prozessen auf dem Host. Es gibt jedoch viele Dinge, die Sie tun können, um die Leistung eines Containers zu verringern:

  1. Führen Sie es in Windows/MacOS aus, während Sie der eingebetteten VM nur einen Bruchteil des Arbeitsspeichers/der CPU des übergeordneten Betriebssystems geben.
  2. Beschränken Sie die CPU- oder Speicherressourcen innerhalb des Containers.
  3. Starten Sie viele Container auf Ihrem Host. Docker ist keine Zauberei, wenn 10 Instanzen von Java, die jeweils 2 GB RAM verwenden, den Host außerhalb des Containers zum Crawlen bringen, werden sie innerhalb des Containers nicht besser laufen.
  4. Netzwerkkomplikationen. Jeder Container wird standardmäßig auf einer isolierten Netzwerkbrücke hochgefahren, wo IO mit den zusätzlichen Hops etwas länger dauern kann. Und wenn Ihr DNS nicht richtig konfiguriert ist, treten möglicherweise zusätzliche Verzögerungen durch fehlgeschlagene Suchvorgänge auf.
  5. Bare-Metal-Anforderungen wie direkter Festplattenzugriff sind in Docker standardmäßig nicht zulässig. Sie können bestimmten Geräten Zugriff gewähren, ansonsten wird die Containerversion der App absichtlich isoliert.
  6. Daten in Volumes befinden sich möglicherweise an einem weniger effizienten Ort. Standardmäßig ist es Ihr /var/lib/docker-Dateisystem, aber Sie könnten dies leicht auf einen NFS-Mount verweisen, wo die Leistung noch schlechter wäre.
  7. Falsch konfigurierte DB, z.B. vergessen, einen Index zu erstellen.

Kurz gesagt, es ist unwahrscheinlich, dass der Container das Problem selbst ist, aber stellen Sie sicher, dass Sie einen Vergleich von Äpfeln zu Äpfeln durchführen.